GetIamPolicy returns the IAM policy for a project.
(ctx context.Context, req *connect.Request[v1pb.GetIamPolicyRequest])
| 549 | |
| 550 | // GetIamPolicy returns the IAM policy for a project. |
| 551 | func (s *ProjectService) GetIamPolicy(ctx context.Context, req *connect.Request[v1pb.GetIamPolicyRequest]) (*connect.Response[v1pb.IamPolicy], error) { |
| 552 | projectID, err := common.GetProjectID(req.Msg.Resource) |
| 553 | if err != nil { |
| 554 | return nil, connect.NewError(connect.CodeInvalidArgument, err) |
| 555 | } |
| 556 | workspaceID := common.GetWorkspaceIDFromContext(ctx) |
| 557 | project, err := s.store.GetProject(ctx, &store.FindProjectMessage{ |
| 558 | Workspace: workspaceID, |
| 559 | ResourceID: &projectID, |
| 560 | }) |
| 561 | if err != nil { |
| 562 | return nil, connect.NewError(connect.CodeInternal, err) |
| 563 | } |
| 564 | if project == nil { |
| 565 | return nil, connect.NewError(connect.CodeNotFound, errors.Errorf("cannot found project %s", projectID)) |
| 566 | } |
| 567 | |
| 568 | policy, err := s.store.GetProjectIamPolicy(ctx, workspaceID, project.ResourceID) |
| 569 | if err != nil { |
| 570 | return nil, connect.NewError(connect.CodeInternal, err) |
| 571 | } |
| 572 | |
| 573 | iamPolicy, err := convertToV1IamPolicy(policy) |
| 574 | if err != nil { |
| 575 | return nil, err |
| 576 | } |
| 577 | return connect.NewResponse(iamPolicy), nil |
| 578 | } |
| 579 | |
| 580 | // SetIamPolicy sets the IAM policy for a project. |
| 581 | func (s *ProjectService) SetIamPolicy(ctx context.Context, req *connect.Request[v1pb.SetIamPolicyRequest]) (*connect.Response[v1pb.IamPolicy], error) { |
nothing calls this directly
no test coverage detected