(ctx context.Context, req *adminv1.SearchUsersRequest)
| 70 | } |
| 71 | |
| 72 | func (s *Server) SearchUsers(ctx context.Context, req *adminv1.SearchUsersRequest) (*adminv1.SearchUsersResponse, error) { |
| 73 | claims := auth.GetClaims(ctx) |
| 74 | if !claims.Superuser(ctx) { |
| 75 | return nil, status.Error(codes.PermissionDenied, "only superusers can search users by email") |
| 76 | } |
| 77 | |
| 78 | token, err := unmarshalPageToken(req.PageToken) |
| 79 | if err != nil { |
| 80 | return nil, err |
| 81 | } |
| 82 | pageSize := validPageSize(req.PageSize) |
| 83 | |
| 84 | users, err := s.admin.DB.FindUsersByEmailPattern(ctx, req.EmailPattern, token.Val, pageSize) |
| 85 | if err != nil { |
| 86 | return nil, err |
| 87 | } |
| 88 | |
| 89 | nextToken := "" |
| 90 | if len(users) >= pageSize { |
| 91 | nextToken = marshalPageToken(users[len(users)-1].Email) |
| 92 | } |
| 93 | |
| 94 | dtos := make([]*adminv1.User, len(users)) |
| 95 | for i, user := range users { |
| 96 | dtos[i] = s.userToPB(user, false) |
| 97 | } |
| 98 | |
| 99 | return &adminv1.SearchUsersResponse{ |
| 100 | Users: dtos, |
| 101 | NextPageToken: nextToken, |
| 102 | }, nil |
| 103 | } |
| 104 | |
| 105 | func (s *Server) GetCurrentUser(ctx context.Context, req *adminv1.GetCurrentUserRequest) (*adminv1.GetCurrentUserResponse, error) { |
| 106 | // Return an empty result if not authenticated. |
nothing calls this directly
no test coverage detected