@@ -564,6 +564,42 @@ const (
564564 grant_this_role_scope;
565565 `
566566
567+ // grantsForTokenGlobalOrgProjectResourcesRecursiveQuery gets a app token's grants for resources
568+ // applicable to all scopes at the global request scope.
569+ grantsForTokenGlobalOrgProjectResourcesRecursiveQuery = `
570+ select app_token_permission_global.private_id as permission_id,
571+ app_token_permission_global.description,
572+ app_token_permission_global.create_time,
573+ app_token_permission_global.grant_this_scope,
574+ app_token_permission_global.grant_scope,
575+ app_token_global.public_id as app_token_id,
576+ array_agg(distinct app_token_permission_grant.canonical_grant) as canonical_grants,
577+ array_agg(distinct coalesce(iam_scope_org.scope_id, iam_scope_project.scope_id)) as active_grant_scopes
578+ from app_token_global
579+ join app_token_permission_global
580+ on app_token_global.public_id = app_token_permission_global.app_token_id
581+ and app_token_global.public_id = any(@token_ids)
582+ join app_token_permission_grant
583+ on app_token_permission_global.private_id = app_token_permission_grant.permission_id
584+ join iam_grant
585+ on app_token_permission_grant.canonical_grant = iam_grant.canonical_grant
586+ and iam_grant.resource = any(@resources)
587+ left join app_token_permission_global_individual_org_grant_scope
588+ on app_token_permission_global.private_id = app_token_permission_global_individual_org_grant_scope.permission_id
589+ left join iam_scope_org
590+ on app_token_permission_global_individual_org_grant_scope.scope_id = iam_scope_org.scope_id
591+ left join app_token_permission_global_individual_project_grant_scope
592+ on app_token_permission_global.private_id = app_token_permission_global_individual_project_grant_scope.permission_id
593+ left join iam_scope_project
594+ on app_token_permission_global_individual_project_grant_scope.scope_id = iam_scope_project.scope_id
595+ group by app_token_permission_global.private_id,
596+ app_token_permission_global.description,
597+ app_token_permission_global.create_time,
598+ app_token_permission_global.grant_this_scope,
599+ app_token_permission_global.grant_scope,
600+ app_token_global.public_id;
601+ `
602+
567603 estimateCountRoles = `
568604 select reltuples::bigint as estimate from pg_class where oid in ('iam_role'::regclass)
569605 `
0 commit comments