mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 00:57:33 +00:00
feat: member queries (#2796)
* refactor(domain): add user type * fix(projections): start with login names * fix(login_policy): correct handling of user domain claimed event * fix(projections): add members * refactor: simplify member projections * add migration for members * add metadata to member projections * refactor: login name projection * fix: set correct suffixes on login name projections * test(projections): login name reduces * fix: correct cols in reduce member * test(projections): org, iam, project members * member additional cols and conds as opt, add project grant members * fix(migration): members * fix(migration): correct database name * migration version * migs * better naming for member cond and col * split project and project grant members * prepare member columns * feat(queries): membership query * test(queries): membership prepare * fix(queries): multiple projections for latest sequence * fix(api): use query for membership queries in auth and management * feat: org member queries * fix(api): use query for iam member calls * fix(queries): org members * fix(queries): project members * fix(queries): project grant members * fix(query): member queries and user avatar column * member cols * fix(queries): membership stmt * fix user test * fix user test * fix(membership): correct display name * fix(projection): additional member manipulation events * additional member tests * fix(projections): additional events of idp links * fix: use query for memberships (#2797) * fix(api): use query for memberships * remove comment * handle err * refactor(projections): idp user link user aggregate type * fix(projections): handle old user events * fix(api): add asset prefix * no image for iam members
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
package member
|
||||
|
||||
import (
|
||||
"github.com/caos/zitadel/internal/api/grpc/object"
|
||||
"github.com/caos/zitadel/internal/domain"
|
||||
"github.com/caos/zitadel/internal/errors"
|
||||
"github.com/caos/zitadel/internal/query"
|
||||
member_pb "github.com/caos/zitadel/pkg/grpc/member"
|
||||
)
|
||||
|
||||
@@ -11,3 +14,56 @@ func MemberToDomain(member *member_pb.Member) *domain.Member {
|
||||
Roles: member.Roles,
|
||||
}
|
||||
}
|
||||
|
||||
func MembersToPb(assetAPIPrefix string, members []*query.Member) []*member_pb.Member {
|
||||
m := make([]*member_pb.Member, len(members))
|
||||
for i, member := range members {
|
||||
m[i] = MemberToPb(assetAPIPrefix, member)
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
func MemberToPb(assetAPIPrefix string, m *query.Member) *member_pb.Member {
|
||||
return &member_pb.Member{
|
||||
UserId: m.UserID,
|
||||
Roles: m.Roles,
|
||||
PreferredLoginName: m.PreferredLoginName,
|
||||
Email: m.Email,
|
||||
FirstName: m.FirstName,
|
||||
LastName: m.LastName,
|
||||
DisplayName: m.DisplayName,
|
||||
AvatarUrl: domain.AvatarURL(assetAPIPrefix, m.ResourceOwner, m.AvatarURL),
|
||||
Details: object.ToViewDetailsPb(
|
||||
m.Sequence,
|
||||
m.CreationDate,
|
||||
m.ChangeDate,
|
||||
m.ResourceOwner,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
func MemberQueriesToQuery(queries []*member_pb.SearchQuery) (q []query.SearchQuery, err error) {
|
||||
q = make([]query.SearchQuery, len(queries))
|
||||
for i, query := range queries {
|
||||
q[i], err = MemberQueryToMember(query)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return q, nil
|
||||
}
|
||||
|
||||
func MemberQueryToMember(search *member_pb.SearchQuery) (query.SearchQuery, error) {
|
||||
switch q := search.Query.(type) {
|
||||
case *member_pb.SearchQuery_EmailQuery:
|
||||
return query.NewMemberEmailSearchQuery(object.TextMethodToQuery(q.EmailQuery.Method), q.EmailQuery.Email)
|
||||
case *member_pb.SearchQuery_FirstNameQuery:
|
||||
return query.NewMemberFirstNameSearchQuery(object.TextMethodToQuery(q.FirstNameQuery.Method), q.FirstNameQuery.FirstName)
|
||||
case *member_pb.SearchQuery_LastNameQuery:
|
||||
return query.NewMemberLastNameSearchQuery(object.TextMethodToQuery(q.LastNameQuery.Method), q.LastNameQuery.LastName)
|
||||
case *member_pb.SearchQuery_UserIdQuery:
|
||||
return query.NewMemberUserIDSearchQuery(q.UserIdQuery.UserId)
|
||||
default:
|
||||
return nil, errors.ThrowInvalidArgument(nil, "MEMBE-7Bb92", "Errors.Query.InvalidRequest")
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user