mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 20:07:32 +00:00
63 lines
2.1 KiB
Go
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
|
|
}
|