Files
zitadel/internal/api/grpc/user/v2beta/query.go
2025-08-07 17:55:06 +02:00

63 lines
2.1 KiB
Go

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
}