(ctx context.Context, req *adminv1.SudoGetResourceRequest)
| 460 | } |
| 461 | |
| 462 | func (s *Server) SudoGetResource(ctx context.Context, req *adminv1.SudoGetResourceRequest) (*adminv1.SudoGetResourceResponse, error) { |
| 463 | claims := auth.GetClaims(ctx) |
| 464 | if !claims.Superuser(ctx) { |
| 465 | return nil, status.Error(codes.PermissionDenied, "only superusers can lookup resource") |
| 466 | } |
| 467 | |
| 468 | res := &adminv1.SudoGetResourceResponse{} |
| 469 | switch id := req.Id.(type) { |
| 470 | case *adminv1.SudoGetResourceRequest_UserId: |
| 471 | user, err := s.admin.DB.FindUser(ctx, id.UserId) |
| 472 | if err != nil { |
| 473 | return nil, err |
| 474 | } |
| 475 | res.Resource = &adminv1.SudoGetResourceResponse_User{User: s.userToPB(user, false)} |
| 476 | case *adminv1.SudoGetResourceRequest_OrgId: |
| 477 | org, err := s.admin.DB.FindOrganization(ctx, id.OrgId) |
| 478 | if err != nil { |
| 479 | return nil, err |
| 480 | } |
| 481 | res.Resource = &adminv1.SudoGetResourceResponse_Org{Org: s.organizationToDTO(org, true)} |
| 482 | case *adminv1.SudoGetResourceRequest_ProjectId: |
| 483 | proj, err := s.admin.DB.FindProject(ctx, id.ProjectId) |
| 484 | if err != nil { |
| 485 | return nil, err |
| 486 | } |
| 487 | org, err := s.admin.DB.FindOrganization(ctx, proj.OrganizationID) |
| 488 | if err != nil { |
| 489 | return nil, err |
| 490 | } |
| 491 | res.Resource = &adminv1.SudoGetResourceResponse_Project{Project: s.projToDTO(proj, org.Name)} |
| 492 | case *adminv1.SudoGetResourceRequest_DeploymentId: |
| 493 | depl, err := s.admin.DB.FindDeployment(ctx, id.DeploymentId) |
| 494 | if err != nil { |
| 495 | return nil, err |
| 496 | } |
| 497 | res.Resource = &adminv1.SudoGetResourceResponse_Deployment{Deployment: deploymentToDTO(depl)} |
| 498 | case *adminv1.SudoGetResourceRequest_InstanceId: |
| 499 | depl, err := s.admin.DB.FindDeploymentByInstanceID(ctx, id.InstanceId) |
| 500 | if err != nil { |
| 501 | return nil, err |
| 502 | } |
| 503 | res.Resource = &adminv1.SudoGetResourceResponse_Instance{Instance: deploymentToDTO(depl)} |
| 504 | default: |
| 505 | return nil, status.Errorf(codes.Internal, "unexpected resource type %T", id) |
| 506 | } |
| 507 | |
| 508 | return res, nil |
| 509 | } |
| 510 | |
| 511 | func (s *Server) GetUser(ctx context.Context, req *adminv1.GetUserRequest) (*adminv1.GetUserResponse, error) { |
| 512 | claims := auth.GetClaims(ctx) |
nothing calls this directly
no test coverage detected