package user import ( "context" "connectrpc.com/connect" "github.com/zitadel/zitadel/internal/api/grpc/filter/v2" object "github.com/zitadel/zitadel/internal/api/grpc/object/v2beta" "github.com/zitadel/zitadel/internal/api/grpc/user/v2beta/convert" "github.com/zitadel/zitadel/internal/domain" user "github.com/zitadel/zitadel/pkg/grpc/user/v2beta" ) func (s *Server) GetUserByID(ctx context.Context, req *connect.Request[user.GetUserByIDRequest]) (_ *connect.Response[user.GetUserByIDResponse], err error) { resp, err := s.query.GetUserByIDWithPermission(ctx, true, req.Msg.GetUserId(), s.checkPermission) if err != nil { return nil, err } return connect.NewResponse(&user.GetUserByIDResponse{ Details: object.DomainToDetailsPb(&domain.ObjectDetails{ Sequence: resp.Sequence, EventDate: resp.ChangeDate, ResourceOwner: resp.ResourceOwner, }), User: convert.UserToPb(resp, s.assetAPIPrefix(ctx)), }), nil } func (s *Server) ListUsers(ctx context.Context, req *connect.Request[user.ListUsersRequest]) (*connect.Response[user.ListUsersResponse], error) { queries, err := convert.ListUsersRequestToModel(req.Msg) if err != nil { return nil, err } res, err := s.query.SearchUsers(ctx, queries, s.checkPermission) if err != nil { return nil, err } return connect.NewResponse(&user.ListUsersResponse{ Result: convert.UsersToPb(res.Users, s.assetAPIPrefix(ctx)), Details: object.ToListDetails(res.SearchResponse), }), nil } func (s *Server) ListUsersByMetadata(ctx context.Context, req *connect.Request[user.ListUsersByMetadataRequest]) (*connect.Response[user.ListUsersByMetadataResponse], error) { queries, err := convert.ListUsersByMetadataRequestToModel(req.Msg, s.systemDefaults) if err != nil { return nil, err } res, err := s.query.SearchUsersByMetadata(ctx, queries, s.checkPermission) if err != nil { return nil, err } return &connect.Response[user.ListUsersByMetadataResponse]{ Msg: &user.ListUsersByMetadataResponse{ Users: convert.UsersByMetadataModelToGRPC(res.UsersByMeta, s.assetAPIPrefix(ctx)), Pagination: filter.QueryToPaginationPb(queries.SearchRequest, res.SearchResponse), }, }, nil }