mirror of
https://github.com/zitadel/zitadel.git
synced 2025-02-28 20:57:24 +00:00
feat(/internal): Add User Resource Owner (#9168)
Update the ../proto/zitadel/member.proto to include the UserResourceOwner as part of member. Update the queries to include UserResourceOwner for the following : zitadel/internal/query/iam_member.go zitadel/internal/query/org_member.go zitadel/internal/query/project_member.go zitadel/internal/query/project_grant_member.go Non Breaking Changes # Which Problems Are Solved https://github.com/zitadel/zitadel/issues/5062 # How the Problems Are Solved - Updated the member.proto file to include user_resource_owner. I have compiled using` make compile` command . - Changed the queries to include the userResourceOwner as part of Member. - Then, updated the converter to map the userResourceOwner. # Additional Changes Replace this example text with a concise list of additional changes that this PR introduces, that are not directly solving the initial problem but are related. For example: - The docs explicitly describe that the property XY is mandatory - Adds missing translations for validations. # Additional Context - Closes #5062 - https://discordapp.com/channels/927474939156643850/1326245856193544232/1326476710752948316
This commit is contained in:
parent
d01d003a03
commit
b664ffe993
@ -34,6 +34,7 @@ func MemberToPb(assetAPIPrefix string, m *query.Member) *member_pb.Member {
|
||||
m.ChangeDate,
|
||||
m.ResourceOwner,
|
||||
),
|
||||
UserResourceOwner: m.UserResourceOwner,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,6 +44,10 @@ var (
|
||||
name: projection.MemberResourceOwner,
|
||||
table: instanceMemberTable,
|
||||
}
|
||||
InstanceMemberUserResourceOwner = Column{
|
||||
name: projection.MemberUserResourceOwner,
|
||||
table: instanceMemberTable,
|
||||
}
|
||||
InstanceMemberInstanceID = Column{
|
||||
name: projection.MemberInstanceID,
|
||||
table: instanceMemberTable,
|
||||
@ -96,6 +100,7 @@ func prepareInstanceMembersQuery(ctx context.Context, db prepareDatabase) (sq.Se
|
||||
InstanceMemberChangeDate.identifier(),
|
||||
InstanceMemberSequence.identifier(),
|
||||
InstanceMemberResourceOwner.identifier(),
|
||||
InstanceMemberUserResourceOwner.identifier(),
|
||||
InstanceMemberUserID.identifier(),
|
||||
InstanceMemberRoles.identifier(),
|
||||
LoginNameNameCol.identifier(),
|
||||
@ -138,6 +143,7 @@ func prepareInstanceMembersQuery(ctx context.Context, db prepareDatabase) (sq.Se
|
||||
&member.ChangeDate,
|
||||
&member.Sequence,
|
||||
&member.ResourceOwner,
|
||||
&member.UserResourceOwner,
|
||||
&member.UserID,
|
||||
&member.Roles,
|
||||
&preferredLoginName,
|
||||
|
@ -18,6 +18,7 @@ var (
|
||||
", members.change_date" +
|
||||
", members.sequence" +
|
||||
", members.resource_owner" +
|
||||
", members.user_resource_owner" +
|
||||
", members.user_id" +
|
||||
", members.roles" +
|
||||
", projections.login_names3.login_name" +
|
||||
@ -45,6 +46,7 @@ var (
|
||||
"change_date",
|
||||
"sequence",
|
||||
"resource_owner",
|
||||
"user_resource_owner",
|
||||
"user_id",
|
||||
"roles",
|
||||
"login_name",
|
||||
@ -97,6 +99,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"gigi@caos-ag.zitadel.ch",
|
||||
@ -121,6 +124,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "gigi@caos-ag.zitadel.ch",
|
||||
@ -147,6 +151,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"machine@caos-ag.zitadel.ch",
|
||||
@ -171,6 +176,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "machine@caos-ag.zitadel.ch",
|
||||
@ -197,6 +203,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id-1",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"gigi@caos-ag.zitadel.ch",
|
||||
@ -213,6 +220,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id-2",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"machine@caos-ag.zitadel.ch",
|
||||
@ -237,6 +245,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id-1",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "gigi@caos-ag.zitadel.ch",
|
||||
@ -252,6 +261,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id-2",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "machine@caos-ag.zitadel.ch",
|
||||
|
@ -47,11 +47,11 @@ type Members struct {
|
||||
}
|
||||
|
||||
type Member struct {
|
||||
CreationDate time.Time
|
||||
ChangeDate time.Time
|
||||
Sequence uint64
|
||||
ResourceOwner string
|
||||
|
||||
CreationDate time.Time
|
||||
ChangeDate time.Time
|
||||
Sequence uint64
|
||||
ResourceOwner string
|
||||
UserResourceOwner string
|
||||
UserID string
|
||||
Roles database.TextArray[string]
|
||||
PreferredLoginName string
|
||||
|
@ -44,6 +44,10 @@ var (
|
||||
name: projection.MemberResourceOwner,
|
||||
table: orgMemberTable,
|
||||
}
|
||||
OrgMemberUserResourceOwner = Column{
|
||||
name: projection.MemberUserResourceOwner,
|
||||
table: orgMemberTable,
|
||||
}
|
||||
OrgMemberInstanceID = Column{
|
||||
name: projection.MemberInstanceID,
|
||||
table: orgMemberTable,
|
||||
@ -99,6 +103,7 @@ func prepareOrgMembersQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
|
||||
OrgMemberChangeDate.identifier(),
|
||||
OrgMemberSequence.identifier(),
|
||||
OrgMemberResourceOwner.identifier(),
|
||||
OrgMemberUserResourceOwner.identifier(),
|
||||
OrgMemberUserID.identifier(),
|
||||
OrgMemberRoles.identifier(),
|
||||
LoginNameNameCol.identifier(),
|
||||
@ -141,6 +146,7 @@ func prepareOrgMembersQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
|
||||
&member.ChangeDate,
|
||||
&member.Sequence,
|
||||
&member.ResourceOwner,
|
||||
&member.UserResourceOwner,
|
||||
&member.UserID,
|
||||
&member.Roles,
|
||||
&preferredLoginName,
|
||||
|
@ -18,6 +18,7 @@ var (
|
||||
", members.change_date" +
|
||||
", members.sequence" +
|
||||
", members.resource_owner" +
|
||||
", members.user_resource_owner" +
|
||||
", members.user_id" +
|
||||
", members.roles" +
|
||||
", projections.login_names3.login_name" +
|
||||
@ -49,6 +50,7 @@ var (
|
||||
"change_date",
|
||||
"sequence",
|
||||
"resource_owner",
|
||||
"user_resource_owner",
|
||||
"user_id",
|
||||
"roles",
|
||||
"login_name",
|
||||
@ -101,6 +103,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"gigi@caos-ag.zitadel.ch",
|
||||
@ -125,6 +128,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "gigi@caos-ag.zitadel.ch",
|
||||
@ -151,6 +155,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"machine@caos-ag.zitadel.ch",
|
||||
@ -175,6 +180,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "machine@caos-ag.zitadel.ch",
|
||||
@ -201,6 +207,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id-1",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"gigi@caos-ag.zitadel.ch",
|
||||
@ -217,6 +224,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id-2",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"machine@caos-ag.zitadel.ch",
|
||||
@ -241,6 +249,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id-1",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "gigi@caos-ag.zitadel.ch",
|
||||
@ -256,6 +265,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id-2",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "machine@caos-ag.zitadel.ch",
|
||||
|
@ -43,6 +43,10 @@ var (
|
||||
name: projection.MemberResourceOwner,
|
||||
table: projectGrantMemberTable,
|
||||
}
|
||||
ProjectGrantMemberUserResourceOwner = Column{
|
||||
name: projection.MemberUserResourceOwner,
|
||||
table: projectGrantMemberTable,
|
||||
}
|
||||
ProjectGrantMemberInstanceID = Column{
|
||||
name: projection.MemberInstanceID,
|
||||
table: projectGrantMemberTable,
|
||||
@ -108,6 +112,7 @@ func prepareProjectGrantMembersQuery(ctx context.Context, db prepareDatabase) (s
|
||||
ProjectGrantMemberChangeDate.identifier(),
|
||||
ProjectGrantMemberSequence.identifier(),
|
||||
ProjectGrantMemberResourceOwner.identifier(),
|
||||
ProjectGrantMemberUserResourceOwner.identifier(),
|
||||
ProjectGrantMemberUserID.identifier(),
|
||||
ProjectGrantMemberRoles.identifier(),
|
||||
LoginNameNameCol.identifier(),
|
||||
@ -151,6 +156,7 @@ func prepareProjectGrantMembersQuery(ctx context.Context, db prepareDatabase) (s
|
||||
&member.ChangeDate,
|
||||
&member.Sequence,
|
||||
&member.ResourceOwner,
|
||||
&member.UserResourceOwner,
|
||||
&member.UserID,
|
||||
&member.Roles,
|
||||
&preferredLoginName,
|
||||
|
@ -18,6 +18,7 @@ var (
|
||||
", members.change_date" +
|
||||
", members.sequence" +
|
||||
", members.resource_owner" +
|
||||
", members.user_resource_owner" +
|
||||
", members.user_id" +
|
||||
", members.roles" +
|
||||
", projections.login_names3.login_name" +
|
||||
@ -52,6 +53,7 @@ var (
|
||||
"change_date",
|
||||
"sequence",
|
||||
"resource_owner",
|
||||
"user_resource_owner",
|
||||
"user_id",
|
||||
"roles",
|
||||
"login_name",
|
||||
@ -104,6 +106,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"gigi@caos-ag.zitadel.ch",
|
||||
@ -128,6 +131,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "gigi@caos-ag.zitadel.ch",
|
||||
@ -154,6 +158,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"machine@caos-ag.zitadel.ch",
|
||||
@ -178,6 +183,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "machine@caos-ag.zitadel.ch",
|
||||
@ -204,6 +210,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id-1",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"gigi@caos-ag.zitadel.ch",
|
||||
@ -220,6 +227,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id-2",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"machine@caos-ag.zitadel.ch",
|
||||
@ -244,6 +252,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id-1",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "gigi@caos-ag.zitadel.ch",
|
||||
@ -259,6 +268,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id-2",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "machine@caos-ag.zitadel.ch",
|
||||
|
@ -44,6 +44,10 @@ var (
|
||||
name: projection.MemberResourceOwner,
|
||||
table: projectMemberTable,
|
||||
}
|
||||
ProjectMemberUserResourceOwner = Column{
|
||||
name: projection.MemberUserResourceOwner,
|
||||
table: projectMemberTable,
|
||||
}
|
||||
ProjectMemberInstanceID = Column{
|
||||
name: projection.MemberInstanceID,
|
||||
table: projectMemberTable,
|
||||
@ -99,6 +103,7 @@ func prepareProjectMembersQuery(ctx context.Context, db prepareDatabase) (sq.Sel
|
||||
ProjectMemberChangeDate.identifier(),
|
||||
ProjectMemberSequence.identifier(),
|
||||
ProjectMemberResourceOwner.identifier(),
|
||||
ProjectMemberUserResourceOwner.identifier(),
|
||||
ProjectMemberUserID.identifier(),
|
||||
ProjectMemberRoles.identifier(),
|
||||
LoginNameNameCol.identifier(),
|
||||
@ -141,6 +146,7 @@ func prepareProjectMembersQuery(ctx context.Context, db prepareDatabase) (sq.Sel
|
||||
&member.ChangeDate,
|
||||
&member.Sequence,
|
||||
&member.ResourceOwner,
|
||||
&member.UserResourceOwner,
|
||||
&member.UserID,
|
||||
&member.Roles,
|
||||
&preferredLoginName,
|
||||
|
@ -18,6 +18,7 @@ var (
|
||||
", members.change_date" +
|
||||
", members.sequence" +
|
||||
", members.resource_owner" +
|
||||
", members.user_resource_owner" +
|
||||
", members.user_id" +
|
||||
", members.roles" +
|
||||
", projections.login_names3.login_name" +
|
||||
@ -49,6 +50,7 @@ var (
|
||||
"change_date",
|
||||
"sequence",
|
||||
"resource_owner",
|
||||
"user_resource_owner",
|
||||
"user_id",
|
||||
"roles",
|
||||
"login_name",
|
||||
@ -101,6 +103,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"gigi@caos-ag.zitadel.ch",
|
||||
@ -125,6 +128,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "gigi@caos-ag.zitadel.ch",
|
||||
@ -151,6 +155,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"machine@caos-ag.zitadel.ch",
|
||||
@ -175,6 +180,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "machine@caos-ag.zitadel.ch",
|
||||
@ -201,6 +207,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id-1",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"gigi@caos-ag.zitadel.ch",
|
||||
@ -217,6 +224,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
|
||||
testNow,
|
||||
uint64(20211206),
|
||||
"ro",
|
||||
"uro",
|
||||
"user-id-2",
|
||||
database.TextArray[string]{"role-1", "role-2"},
|
||||
"machine@caos-ag.zitadel.ch",
|
||||
@ -241,6 +249,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id-1",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "gigi@caos-ag.zitadel.ch",
|
||||
@ -256,6 +265,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
|
||||
ChangeDate: testNow,
|
||||
Sequence: 20211206,
|
||||
ResourceOwner: "ro",
|
||||
UserResourceOwner: "uro",
|
||||
UserID: "user-id-2",
|
||||
Roles: database.TextArray[string]{"role-1", "role-2"},
|
||||
PreferredLoginName: "machine@caos-ag.zitadel.ch",
|
||||
|
@ -63,6 +63,14 @@ message Member {
|
||||
description: "type of the user (human / machine)"
|
||||
}
|
||||
];
|
||||
|
||||
// The organization the user belong to.
|
||||
string user_resource_owner = 11 [
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
example: "\"69629023906488334\"";
|
||||
}
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
message SearchQuery {
|
||||
|
Loading…
x
Reference in New Issue
Block a user