mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 00:17:32 +00:00
fix: project grants (#4031)
* fix: filter granted memberships correctly * fix: only show changes of granted project * Apply suggestions from code review Co-authored-by: Fabi <38692350+hifabienne@users.noreply.github.com> * Update internal/query/user_membership.go Co-authored-by: Fabi <38692350+hifabienne@users.noreply.github.com> Co-authored-by: Fabi <38692350+hifabienne@users.noreply.github.com>
This commit is contained in:
@@ -48,9 +48,10 @@ type ProjectMembership struct {
|
||||
}
|
||||
|
||||
type ProjectGrantMembership struct {
|
||||
ProjectID string
|
||||
ProjectName string
|
||||
GrantID string
|
||||
ProjectID string
|
||||
ProjectName string
|
||||
GrantID string
|
||||
GrantedOrgID string
|
||||
}
|
||||
|
||||
type MembershipSearchQuery struct {
|
||||
@@ -78,6 +79,10 @@ func NewMembershipResourceOwnersSearchQuery(ids ...string) (SearchQuery, error)
|
||||
return NewListQuery(membershipResourceOwner, list, ListIn)
|
||||
}
|
||||
|
||||
func NewMembershipGrantedOrgIDSearchQuery(id string) (SearchQuery, error) {
|
||||
return NewTextQuery(ProjectGrantColumnGrantedOrgID, id, TextEquals)
|
||||
}
|
||||
|
||||
func NewMembershipProjectIDQuery(value string) (SearchQuery, error) {
|
||||
return NewTextQuery(membershipProjectID, value, TextEquals)
|
||||
}
|
||||
@@ -173,6 +178,10 @@ var (
|
||||
name: projection.ProjectGrantMemberGrantIDCol,
|
||||
table: membershipAlias,
|
||||
}
|
||||
membershipGrantGrantedOrgID = Column{
|
||||
name: projection.ProjectGrantColumnGrantedOrgID,
|
||||
table: membershipAlias,
|
||||
}
|
||||
|
||||
membershipFrom = "(" +
|
||||
prepareOrgMember() +
|
||||
@@ -197,12 +206,14 @@ func prepareMembershipsQuery() (sq.SelectBuilder, func(*sql.Rows) (*Memberships,
|
||||
membershipIAMID.identifier(),
|
||||
membershipProjectID.identifier(),
|
||||
membershipGrantID.identifier(),
|
||||
ProjectGrantColumnGrantedOrgID.identifier(),
|
||||
ProjectColumnName.identifier(),
|
||||
OrgColumnName.identifier(),
|
||||
countColumn.identifier(),
|
||||
).From(membershipFrom).
|
||||
LeftJoin(join(ProjectColumnID, membershipProjectID)).
|
||||
LeftJoin(join(OrgColumnID, membershipOrgID)).
|
||||
LeftJoin(join(ProjectGrantColumnGrantID, membershipGrantID)).
|
||||
PlaceholderFormat(sq.Dollar),
|
||||
func(rows *sql.Rows) (*Memberships, error) {
|
||||
memberships := make([]*Membership, 0)
|
||||
@@ -210,14 +221,15 @@ func prepareMembershipsQuery() (sq.SelectBuilder, func(*sql.Rows) (*Memberships,
|
||||
for rows.Next() {
|
||||
|
||||
var (
|
||||
membership = new(Membership)
|
||||
orgID = sql.NullString{}
|
||||
iamID = sql.NullString{}
|
||||
projectID = sql.NullString{}
|
||||
grantID = sql.NullString{}
|
||||
roles = pq.StringArray{}
|
||||
projectName = sql.NullString{}
|
||||
orgName = sql.NullString{}
|
||||
membership = new(Membership)
|
||||
orgID = sql.NullString{}
|
||||
iamID = sql.NullString{}
|
||||
projectID = sql.NullString{}
|
||||
grantID = sql.NullString{}
|
||||
grantedOrgID = sql.NullString{}
|
||||
roles = pq.StringArray{}
|
||||
projectName = sql.NullString{}
|
||||
orgName = sql.NullString{}
|
||||
)
|
||||
|
||||
err := rows.Scan(
|
||||
@@ -231,6 +243,7 @@ func prepareMembershipsQuery() (sq.SelectBuilder, func(*sql.Rows) (*Memberships,
|
||||
&iamID,
|
||||
&projectID,
|
||||
&grantID,
|
||||
&grantedOrgID,
|
||||
&projectName,
|
||||
&orgName,
|
||||
&count,
|
||||
@@ -252,11 +265,12 @@ func prepareMembershipsQuery() (sq.SelectBuilder, func(*sql.Rows) (*Memberships,
|
||||
IAMID: iamID.String,
|
||||
Name: iamID.String,
|
||||
}
|
||||
} else if projectID.Valid && grantID.Valid {
|
||||
} else if projectID.Valid && grantID.Valid && grantedOrgID.Valid {
|
||||
membership.ProjectGrant = &ProjectGrantMembership{
|
||||
ProjectID: projectID.String,
|
||||
ProjectName: projectName.String,
|
||||
GrantID: grantID.String,
|
||||
ProjectID: projectID.String,
|
||||
ProjectName: projectName.String,
|
||||
GrantID: grantID.String,
|
||||
GrantedOrgID: grantedOrgID.String,
|
||||
}
|
||||
} else if projectID.Valid {
|
||||
membership.Project = &ProjectMembership{
|
||||
@@ -346,7 +360,8 @@ func prepareProjectGrantMember() string {
|
||||
"NULL::STRING AS "+membershipIAMID.name,
|
||||
ProjectGrantMemberProjectID.identifier(),
|
||||
ProjectGrantMemberGrantID.identifier(),
|
||||
).From(projectGrantMemberTable.identifier()).MustSql()
|
||||
).From(projectGrantMemberTable.identifier()).
|
||||
MustSql()
|
||||
|
||||
return stmt
|
||||
}
|
||||
|
Reference in New Issue
Block a user