@@ -225,27 +225,19 @@ LIMIT 1;
|
|||||||
func (i *Identity) AuthorizationAttributes(ctx context.Context, conn pg.Conn) (map[string]string, error) {
|
func (i *Identity) AuthorizationAttributes(ctx context.Context, conn pg.Conn) (map[string]string, error) {
|
||||||
q := `
|
q := `
|
||||||
SELECT
|
SELECT
|
||||||
ident.id,
|
id,
|
||||||
ident.email_address,
|
email_address
|
||||||
COALESCE(string_agg(inv.organization_id::text, ','), '') AS pending_invitation_organization_ids
|
|
||||||
FROM
|
FROM
|
||||||
identities ident
|
identities
|
||||||
LEFT JOIN
|
|
||||||
iam_invitations inv ON inv.email = ident.email_address
|
|
||||||
AND inv.accepted_at IS NULL
|
|
||||||
AND inv.expires_at > NOW()
|
|
||||||
WHERE
|
WHERE
|
||||||
ident.id = $1
|
id = $1
|
||||||
GROUP BY
|
|
||||||
ident.id, ident.email_address
|
|
||||||
`
|
`
|
||||||
|
|
||||||
var (
|
var (
|
||||||
id gid.GID
|
id gid.GID
|
||||||
emailAddress string
|
emailAddress string
|
||||||
pendingInvitationOrgIDs string
|
|
||||||
)
|
)
|
||||||
if err := conn.QueryRow(ctx, q, i.ID).Scan(&id, &emailAddress, &pendingInvitationOrgIDs); err != nil {
|
if err := conn.QueryRow(ctx, q, i.ID).Scan(&id, &emailAddress); err != nil {
|
||||||
if errors.Is(err, pgx.ErrNoRows) {
|
if errors.Is(err, pgx.ErrNoRows) {
|
||||||
return nil, ErrResourceNotFound
|
return nil, ErrResourceNotFound
|
||||||
}
|
}
|
||||||
@@ -253,9 +245,8 @@ GROUP BY
|
|||||||
}
|
}
|
||||||
|
|
||||||
return map[string]string{
|
return map[string]string{
|
||||||
"identity_id": id.String(),
|
"identity_id": id.String(),
|
||||||
"email": emailAddress,
|
"email": emailAddress,
|
||||||
"pending_invitation_organization_ids": pendingInvitationOrgIDs,
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,11 +76,6 @@ var IAMSelfManageInvitationPolicy = policy.NewPolicy(
|
|||||||
).
|
).
|
||||||
WithSID("manage-own-invitations").
|
WithSID("manage-own-invitations").
|
||||||
When(policy.Equals("principal.email", "resource.email")),
|
When(policy.Equals("principal.email", "resource.email")),
|
||||||
|
|
||||||
// Users can view organization details for organizations they have pending invitations to
|
|
||||||
policy.Allow(ActionOrganizationGet).
|
|
||||||
WithSID("view-org-for-pending-invitation").
|
|
||||||
When(policy.In("resource.organization_id", "principal.pending_invitation_organization_ids")),
|
|
||||||
).
|
).
|
||||||
WithDescription("Allows users to view and accept invitations sent to them")
|
WithDescription("Allows users to view and accept invitations sent to them")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user