From edb227f06608c63133a06ffcd1fbf6932e630ae8 Mon Sep 17 00:00:00 2001 From: Stefan Benz <46600784+stebenz@users.noreply.github.com> Date: Tue, 16 Sep 2025 12:04:53 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20user=20grant=20query=20with=20user=20org?= =?UTF-8?q?anization=20instead=20of=20organization=20=E2=80=A6=20(#10732)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …of project grant # Which Problems Are Solved On Management API the fields for `GrantedOrgId`, `GrantedOrgName` and `GrantedOrgDomain` were only filled if it was a usergrant for a granted project. # How the Problems Are Solved Correctly query the Organization of the User again to the Organization the Project is granted to. Then fill in the information about the Organization of the User in the fields `GrantedOrgId`, `GrantedOrgName` and `GrantedOrgDomain`. # Additional Changes Additionally query the information about the Organization the Project is granted to, to have it available for the Authorization v2beta API. # Additional Context Closes #10723 --------- Co-authored-by: Tim Möhlmann --- internal/api/grpc/user/user_grant.go | 6 +- internal/query/user_grant.go | 63 ++- internal/query/user_grant_test.go | 708 +++++++++++++++------------ 3 files changed, 436 insertions(+), 341 deletions(-) diff --git a/internal/api/grpc/user/user_grant.go b/internal/api/grpc/user/user_grant.go index eb7f2be2051..14ec8f6395d 100644 --- a/internal/api/grpc/user/user_grant.go +++ b/internal/api/grpc/user/user_grant.go @@ -39,9 +39,9 @@ func UserGrantToPb(assetPrefix string, grant *query.UserGrant) *user_pb.UserGran AvatarUrl: domain.AvatarURL(assetPrefix, grant.UserResourceOwner, grant.AvatarURL), PreferredLoginName: grant.PreferredLoginName, UserType: TypeToPb(grant.UserType), - GrantedOrgId: grant.GrantedOrgID, - GrantedOrgName: grant.GrantedOrgName, - GrantedOrgDomain: grant.GrantedOrgDomain, + GrantedOrgId: grant.UserResourceOwner, + GrantedOrgName: grant.UserResourceOwnerName, + GrantedOrgDomain: grant.UserResourceOwnerDomain, Details: object.ToViewDetailsPb( grant.Sequence, grant.CreationDate, diff --git a/internal/query/user_grant.go b/internal/query/user_grant.go index da38d488215..6a527c92c81 100644 --- a/internal/query/user_grant.go +++ b/internal/query/user_grant.go @@ -30,16 +30,18 @@ type UserGrant struct { GrantID string `json:"grant_id,omitempty"` State domain.UserGrantState `json:"state,omitempty"` - UserID string `json:"user_id,omitempty"` - Username string `json:"username,omitempty"` - UserType domain.UserType `json:"user_type,omitempty"` - UserResourceOwner string `json:"user_resource_owner,omitempty"` - FirstName string `json:"first_name,omitempty"` - LastName string `json:"last_name,omitempty"` - Email string `json:"email,omitempty"` - DisplayName string `json:"display_name,omitempty"` - AvatarURL string `json:"avatar_url,omitempty"` - PreferredLoginName string `json:"preferred_login_name,omitempty"` + UserID string `json:"user_id,omitempty"` + Username string `json:"username,omitempty"` + UserType domain.UserType `json:"user_type,omitempty"` + UserResourceOwner string `json:"user_resource_owner,omitempty"` + UserResourceOwnerName string `json:"user_resource_owner_name,omitempty"` + UserResourceOwnerDomain string `json:"user_resource_owner_domain,omitempty"` + FirstName string `json:"first_name,omitempty"` + LastName string `json:"last_name,omitempty"` + Email string `json:"email,omitempty"` + DisplayName string `json:"display_name,omitempty"` + AvatarURL string `json:"avatar_url,omitempty"` + PreferredLoginName string `json:"preferred_login_name,omitempty"` ResourceOwner string `json:"resource_owner,omitempty"` OrgName string `json:"org_name,omitempty"` @@ -257,6 +259,25 @@ var ( name: projection.UserGrantState, table: userGrantTable, } + + UserOrgsTable = table{ + name: projection.OrgProjectionTable, + alias: "user_orgs", + instanceIDCol: projection.OrgColumnInstanceID, + } + UserOrgColumnId = Column{ + name: projection.OrgColumnID, + table: UserOrgsTable, + } + UserOrgColumnName = Column{ + name: projection.OrgColumnName, + table: UserOrgsTable, + } + UserOrgColumnDomain = Column{ + name: projection.OrgColumnDomain, + table: UserOrgsTable, + } + GrantedOrgsTable = table{ name: projection.OrgProjectionTable, alias: "granted_orgs", @@ -366,7 +387,9 @@ func prepareUserGrantQuery() (sq.SelectBuilder, func(*sql.Row) (*UserGrant, erro UserGrantUserID.identifier(), UserUsernameCol.identifier(), UserTypeCol.identifier(), - UserResourceOwnerCol.identifier(), + UserOrgColumnId.identifier(), + UserOrgColumnName.identifier(), + UserOrgColumnDomain.identifier(), HumanFirstNameCol.identifier(), HumanLastNameCol.identifier(), HumanEmailCol.identifier(), @@ -391,6 +414,7 @@ func prepareUserGrantQuery() (sq.SelectBuilder, func(*sql.Row) (*UserGrant, erro LeftJoin(join(HumanUserIDCol, UserGrantUserID)). LeftJoin(join(OrgColumnID, UserGrantResourceOwner)). LeftJoin(join(ProjectColumnID, UserGrantProjectID)). + LeftJoin(join(UserOrgColumnId, UserResourceOwnerCol)). LeftJoin(join(ProjectGrantColumnGrantID, UserGrantGrantID) + " AND " + ProjectGrantColumnProjectID.identifier() + " = " + UserGrantProjectID.identifier()). LeftJoin(join(GrantedOrgColumnId, ProjectGrantColumnGrantedOrgID)). LeftJoin(join(LoginNameUserIDCol, UserGrantUserID)). @@ -405,6 +429,8 @@ func prepareUserGrantQuery() (sq.SelectBuilder, func(*sql.Row) (*UserGrant, erro firstName sql.NullString userType sql.NullInt32 userOwner sql.NullString + userOwnerName sql.NullString + userOwnerDomain sql.NullString lastName sql.NullString email sql.NullString displayName sql.NullString @@ -435,6 +461,8 @@ func prepareUserGrantQuery() (sq.SelectBuilder, func(*sql.Row) (*UserGrant, erro &username, &userType, &userOwner, + &userOwnerName, + &userOwnerDomain, &firstName, &lastName, &email, @@ -464,6 +492,8 @@ func prepareUserGrantQuery() (sq.SelectBuilder, func(*sql.Row) (*UserGrant, erro g.Username = username.String g.UserType = domain.UserType(userType.Int32) g.UserResourceOwner = userOwner.String + g.UserResourceOwnerName = userOwnerName.String + g.UserResourceOwnerDomain = userOwnerDomain.String g.FirstName = firstName.String g.LastName = lastName.String g.Email = email.String @@ -494,7 +524,9 @@ func prepareUserGrantsQuery() (sq.SelectBuilder, func(*sql.Rows) (*UserGrants, e UserGrantUserID.identifier(), UserUsernameCol.identifier(), UserTypeCol.identifier(), - UserResourceOwnerCol.identifier(), + UserOrgColumnId.identifier(), + UserOrgColumnName.identifier(), + UserOrgColumnDomain.identifier(), HumanFirstNameCol.identifier(), HumanLastNameCol.identifier(), HumanEmailCol.identifier(), @@ -521,6 +553,7 @@ func prepareUserGrantsQuery() (sq.SelectBuilder, func(*sql.Rows) (*UserGrants, e LeftJoin(join(HumanUserIDCol, UserGrantUserID)). LeftJoin(join(OrgColumnID, UserGrantResourceOwner)). LeftJoin(join(ProjectColumnID, UserGrantProjectID)). + LeftJoin(join(UserOrgColumnId, UserResourceOwnerCol)). LeftJoin(join(ProjectGrantColumnGrantID, UserGrantGrantID) + " AND " + ProjectGrantColumnProjectID.identifier() + " = " + UserGrantProjectID.identifier()). LeftJoin(join(GrantedOrgColumnId, ProjectGrantColumnGrantedOrgID)). LeftJoin(join(LoginNameUserIDCol, UserGrantUserID)). @@ -537,6 +570,8 @@ func prepareUserGrantsQuery() (sq.SelectBuilder, func(*sql.Rows) (*UserGrants, e username sql.NullString userType sql.NullInt32 userOwner sql.NullString + userOwnerName sql.NullString + userOwnerDomain sql.NullString firstName sql.NullString lastName sql.NullString email sql.NullString @@ -568,6 +603,8 @@ func prepareUserGrantsQuery() (sq.SelectBuilder, func(*sql.Rows) (*UserGrants, e &username, &userType, &userOwner, + &userOwnerName, + &userOwnerDomain, &firstName, &lastName, &email, @@ -596,6 +633,8 @@ func prepareUserGrantsQuery() (sq.SelectBuilder, func(*sql.Rows) (*UserGrants, e g.Username = username.String g.UserType = domain.UserType(userType.Int32) g.UserResourceOwner = userOwner.String + g.UserResourceOwnerName = userOwnerName.String + g.UserResourceOwnerDomain = userOwnerDomain.String g.FirstName = firstName.String g.LastName = lastName.String g.Email = email.String diff --git a/internal/query/user_grant_test.go b/internal/query/user_grant_test.go index dde04f2c884..f79ae78a80e 100644 --- a/internal/query/user_grant_test.go +++ b/internal/query/user_grant_test.go @@ -25,7 +25,9 @@ var ( ", projections.user_grants5.user_id" + ", projections.users14.username" + ", projections.users14.type" + - ", projections.users14.resource_owner" + + ", user_orgs.id" + + ", user_orgs.name" + + ", user_orgs.primary_domain" + ", projections.users14_humans.first_name" + ", projections.users14_humans.last_name" + ", projections.users14_humans.email" + @@ -46,6 +48,7 @@ var ( " LEFT JOIN projections.users14_humans ON projections.user_grants5.user_id = projections.users14_humans.user_id AND projections.user_grants5.instance_id = projections.users14_humans.instance_id" + " LEFT JOIN projections.orgs1 ON projections.user_grants5.resource_owner = projections.orgs1.id AND projections.user_grants5.instance_id = projections.orgs1.instance_id" + " LEFT JOIN projections.projects4 ON projections.user_grants5.project_id = projections.projects4.id AND projections.user_grants5.instance_id = projections.projects4.instance_id" + + " LEFT JOIN projections.orgs1 AS user_orgs ON projections.users14.resource_owner = user_orgs.id AND projections.users14.instance_id = user_orgs.instance_id" + " LEFT JOIN projections.project_grants4 ON projections.user_grants5.grant_id = projections.project_grants4.grant_id AND projections.user_grants5.instance_id = projections.project_grants4.instance_id AND projections.project_grants4.project_id = projections.user_grants5.project_id" + " LEFT JOIN projections.orgs1 AS granted_orgs ON projections.project_grants4.granted_org_id = granted_orgs.id AND projections.project_grants4.instance_id = granted_orgs.instance_id" + " LEFT JOIN projections.login_names3 ON projections.user_grants5.user_id = projections.login_names3.user_id AND projections.user_grants5.instance_id = projections.login_names3.instance_id" + @@ -62,6 +65,8 @@ var ( "username", "type", "resource_owner", //user resource owner + "name", + "primary_domain", "first_name", "last_name", "email", @@ -89,7 +94,9 @@ var ( ", projections.user_grants5.user_id" + ", projections.users14.username" + ", projections.users14.type" + - ", projections.users14.resource_owner" + + ", user_orgs.id" + + ", user_orgs.name" + + ", user_orgs.primary_domain" + ", projections.users14_humans.first_name" + ", projections.users14_humans.last_name" + ", projections.users14_humans.email" + @@ -111,6 +118,7 @@ var ( " LEFT JOIN projections.users14_humans ON projections.user_grants5.user_id = projections.users14_humans.user_id AND projections.user_grants5.instance_id = projections.users14_humans.instance_id" + " LEFT JOIN projections.orgs1 ON projections.user_grants5.resource_owner = projections.orgs1.id AND projections.user_grants5.instance_id = projections.orgs1.instance_id" + " LEFT JOIN projections.projects4 ON projections.user_grants5.project_id = projections.projects4.id AND projections.user_grants5.instance_id = projections.projects4.instance_id" + + " LEFT JOIN projections.orgs1 AS user_orgs ON projections.users14.resource_owner = user_orgs.id AND projections.users14.instance_id = user_orgs.instance_id" + " LEFT JOIN projections.project_grants4 ON projections.user_grants5.grant_id = projections.project_grants4.grant_id AND projections.user_grants5.instance_id = projections.project_grants4.instance_id AND projections.project_grants4.project_id = projections.user_grants5.project_id" + " LEFT JOIN projections.orgs1 AS granted_orgs ON projections.project_grants4.granted_org_id = granted_orgs.id AND projections.project_grants4.instance_id = granted_orgs.instance_id" + " LEFT JOIN projections.login_names3 ON projections.user_grants5.user_id = projections.login_names3.user_id AND projections.user_grants5.instance_id = projections.login_names3.instance_id" + @@ -168,7 +176,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -188,32 +198,34 @@ func Test_UserGrantPrepares(t *testing.T) { ), }, object: &UserGrant{ - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, { @@ -234,7 +246,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeMachine, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", nil, nil, nil, @@ -254,32 +268,34 @@ func Test_UserGrantPrepares(t *testing.T) { ), }, object: &UserGrant{ - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeMachine, - UserResourceOwner: "resource-owner", - FirstName: "", - LastName: "", - Email: "", - DisplayName: "", - AvatarURL: "", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeMachine, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "", + LastName: "", + Email: "", + DisplayName: "", + AvatarURL: "", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, { @@ -300,7 +316,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -320,32 +338,34 @@ func Test_UserGrantPrepares(t *testing.T) { ), }, object: &UserGrant{ - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "", - OrgPrimaryDomain: "", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "", + OrgPrimaryDomain: "", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, { @@ -366,7 +386,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -386,32 +408,34 @@ func Test_UserGrantPrepares(t *testing.T) { ), }, object: &UserGrant{ - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "", - ProjectResourceOwner: "", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "", + ProjectResourceOwner: "", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, { @@ -432,7 +456,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -452,32 +478,34 @@ func Test_UserGrantPrepares(t *testing.T) { ), }, object: &UserGrant{ - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, { @@ -528,7 +556,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -554,32 +584,34 @@ func Test_UserGrantPrepares(t *testing.T) { }, UserGrants: []*UserGrant{ { - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, }, @@ -603,7 +635,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeMachine, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", nil, nil, nil, @@ -629,32 +663,34 @@ func Test_UserGrantPrepares(t *testing.T) { }, UserGrants: []*UserGrant{ { - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeMachine, - UserResourceOwner: "resource-owner", - FirstName: "", - LastName: "", - Email: "", - DisplayName: "", - AvatarURL: "", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeMachine, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "", + LastName: "", + Email: "", + DisplayName: "", + AvatarURL: "", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, }, @@ -678,7 +714,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeMachine, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -704,32 +742,34 @@ func Test_UserGrantPrepares(t *testing.T) { }, UserGrants: []*UserGrant{ { - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeMachine, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "", - OrgPrimaryDomain: "", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeMachine, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "", + OrgPrimaryDomain: "", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, }, @@ -753,7 +793,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -779,32 +821,34 @@ func Test_UserGrantPrepares(t *testing.T) { }, UserGrants: []*UserGrant{ { - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "", - ProjectResourceOwner: "", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "", + ProjectResourceOwner: "", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, }, @@ -828,7 +872,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -854,32 +900,34 @@ func Test_UserGrantPrepares(t *testing.T) { }, UserGrants: []*UserGrant{ { - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, }, @@ -903,7 +951,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -931,7 +981,9 @@ func Test_UserGrantPrepares(t *testing.T) { "user-id", "username", domain.UserTypeHuman, - "resource-owner", + "user-resource-owner", + "user-resource-owner-name", + "user-resource-owner-domain", "first-name", "last-name", "email", @@ -957,60 +1009,64 @@ func Test_UserGrantPrepares(t *testing.T) { }, UserGrants: []*UserGrant{ { - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, { - ID: "id", - CreationDate: testNow, - ChangeDate: testNow, - Sequence: 20211111, - Roles: database.TextArray[string]{"role-key"}, - GrantID: "grant-id", - State: domain.UserGrantStateActive, - UserID: "user-id", - Username: "username", - UserType: domain.UserTypeHuman, - UserResourceOwner: "resource-owner", - FirstName: "first-name", - LastName: "last-name", - Email: "email", - DisplayName: "display-name", - AvatarURL: "avatar-key", - PreferredLoginName: "login-name", - ResourceOwner: "ro", - OrgName: "org-name", - OrgPrimaryDomain: "primary-domain", - ProjectID: "project-id", - ProjectName: "project-name", - ProjectResourceOwner: "project-resource-owner", - GrantedOrgID: "granted-org-id", - GrantedOrgName: "granted-org-name", - GrantedOrgDomain: "granted-org-domain", + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211111, + Roles: database.TextArray[string]{"role-key"}, + GrantID: "grant-id", + State: domain.UserGrantStateActive, + UserID: "user-id", + Username: "username", + UserType: domain.UserTypeHuman, + UserResourceOwner: "user-resource-owner", + UserResourceOwnerName: "user-resource-owner-name", + UserResourceOwnerDomain: "user-resource-owner-domain", + FirstName: "first-name", + LastName: "last-name", + Email: "email", + DisplayName: "display-name", + AvatarURL: "avatar-key", + PreferredLoginName: "login-name", + ResourceOwner: "ro", + OrgName: "org-name", + OrgPrimaryDomain: "primary-domain", + ProjectID: "project-id", + ProjectName: "project-name", + ProjectResourceOwner: "project-resource-owner", + GrantedOrgID: "granted-org-id", + GrantedOrgName: "granted-org-name", + GrantedOrgDomain: "granted-org-domain", }, }, },