@decaf-ts/integrations 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -0
- package/dist/integrations.cjs +1 -1
- package/dist/integrations.cjs.map +1 -1
- package/dist/integrations.js +1 -1
- package/dist/integrations.js.map +1 -1
- package/docker/mailpit-compose.yml +17 -0
- package/docker/postgres-compose.yml +26 -0
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +12 -23
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -1
- package/lib/cjs/blob/core/BlobStoreService.cjs +26 -25
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -1
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +12 -23
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -1
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +11 -16
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -1
- package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +14 -16
- package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +1 -1
- package/lib/cjs/comms/email/EmailService.cjs +376 -0
- package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
- package/lib/cjs/comms/email/index.cjs +29 -0
- package/lib/cjs/comms/email/index.cjs.map +1 -0
- package/lib/cjs/comms/email/mime.cjs +225 -0
- package/lib/cjs/comms/email/mime.cjs.map +1 -0
- package/lib/cjs/comms/email/smtp.cjs +204 -0
- package/lib/cjs/comms/email/smtp.cjs.map +1 -0
- package/lib/cjs/comms/environment.cjs +63 -0
- package/lib/cjs/comms/environment.cjs.map +1 -0
- package/lib/cjs/comms/gmail/GmailService.cjs +235 -0
- package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
- package/lib/cjs/comms/gmail/index.cjs +24 -0
- package/lib/cjs/comms/gmail/index.cjs.map +1 -0
- package/lib/cjs/comms/index.cjs +31 -0
- package/lib/cjs/comms/index.cjs.map +1 -0
- package/lib/cjs/comms/slack/SlackService.cjs +264 -0
- package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
- package/lib/cjs/comms/slack/index.cjs +24 -0
- package/lib/cjs/comms/slack/index.cjs.map +1 -0
- package/lib/cjs/comms/teams/TeamsService.cjs +212 -0
- package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
- package/lib/cjs/comms/teams/index.cjs +24 -0
- package/lib/cjs/comms/teams/index.cjs.map +1 -0
- package/lib/cjs/comms/telegram/TelegramService.cjs +196 -0
- package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
- package/lib/cjs/comms/telegram/index.cjs +24 -0
- package/lib/cjs/comms/telegram/index.cjs.map +1 -0
- package/lib/cjs/devops/environment.cjs +43 -0
- package/lib/cjs/devops/environment.cjs.map +1 -0
- package/lib/cjs/devops/github/GithubService.cjs +302 -0
- package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
- package/lib/cjs/devops/github/index.cjs +24 -0
- package/lib/cjs/devops/github/index.cjs.map +1 -0
- package/lib/cjs/devops/gitlab/GitlabService.cjs +282 -0
- package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
- package/lib/cjs/devops/gitlab/index.cjs +24 -0
- package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
- package/lib/cjs/devops/index.cjs +28 -0
- package/lib/cjs/devops/index.cjs.map +1 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -1
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -0
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -1
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/io/airtable/AirtableService.cjs +266 -0
- package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
- package/lib/cjs/io/airtable/index.cjs +24 -0
- package/lib/cjs/io/airtable/index.cjs.map +1 -0
- package/lib/cjs/io/environment.cjs +46 -0
- package/lib/cjs/io/environment.cjs.map +1 -0
- package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +288 -0
- package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
- package/lib/cjs/io/google-sheets/index.cjs +24 -0
- package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
- package/lib/cjs/io/graphql/GraphqlService.cjs +143 -0
- package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
- package/lib/cjs/io/graphql/index.cjs +24 -0
- package/lib/cjs/io/graphql/index.cjs.map +1 -0
- package/lib/cjs/io/index.cjs +30 -0
- package/lib/cjs/io/index.cjs.map +1 -0
- package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +205 -0
- package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
- package/lib/cjs/io/spreadsheet/index.cjs +25 -0
- package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
- package/lib/cjs/namespaces/index.cjs +1 -0
- package/lib/cjs/namespaces/index.cjs.map +1 -1
- package/lib/cjs/namespaces/models/credential.model.cjs +115 -0
- package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/group.model.cjs +2 -0
- package/lib/cjs/namespaces/models/group.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/index.cjs +1 -0
- package/lib/cjs/namespaces/models/index.cjs.map +1 -1
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/permission.model.cjs +2 -0
- package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/principal.model.cjs +2 -0
- package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/role.model.cjs +2 -0
- package/lib/cjs/namespaces/models/role.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/tenant.model.cjs +2 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/user.model.cjs +2 -0
- package/lib/cjs/namespaces/models/user.model.cjs.map +1 -1
- package/lib/cjs/namespaces/rls/index.cjs +28 -0
- package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/principal-resolver.cjs +66 -0
- package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +269 -0
- package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.constants.cjs +79 -0
- package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.template.cjs +719 -0
- package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.types.cjs +4 -0
- package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/session-binding.cjs +70 -0
- package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
- package/lib/cjs/namespaces/services/credential.service.cjs +327 -0
- package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/index.cjs +1 -0
- package/lib/cjs/namespaces/services/index.cjs.map +1 -1
- package/lib/cjs/namespaces/types.cjs +6 -1
- package/lib/cjs/namespaces/types.cjs.map +1 -1
- package/lib/cjs/redis/adapter.cjs +7 -1
- package/lib/cjs/redis/adapter.cjs.map +1 -1
- package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +80 -0
- package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -15
- package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -1
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -16
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -1
- package/lib/cjs/secrets/core/SecretReference.cjs +1 -0
- package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -1
- package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +28 -0
- package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/fs/FsSecretService.cjs +420 -0
- package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +25 -0
- package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/fs/index.cjs +27 -0
- package/lib/cjs/secrets/fs/index.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -16
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -1
- package/lib/cjs/secrets/index.cjs +2 -0
- package/lib/cjs/secrets/index.cjs.map +1 -1
- package/lib/cjs/secrets/model/ModelSecretService.cjs +335 -43
- package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -1
- package/lib/cjs/secrets/model/Secret.cjs +83 -5
- package/lib/cjs/secrets/model/Secret.cjs.map +1 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -16
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -1
- package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -16
- package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -1
- package/lib/cjs/shared/environmentValue.cjs +24 -0
- package/lib/cjs/shared/environmentValue.cjs.map +1 -1
- package/lib/cjs/shared/http/HttpApiService.cjs +190 -0
- package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
- package/lib/cjs/shared/http/hermeticBoot.cjs +150 -0
- package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
- package/lib/cjs/shared/http/index.cjs +28 -0
- package/lib/cjs/shared/http/index.cjs.map +1 -0
- package/lib/esm/blob/azure/AzureBlobStoreService.js +13 -21
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -1
- package/lib/esm/blob/core/BlobStoreService.js +26 -25
- package/lib/esm/blob/core/BlobStoreService.js.map +1 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +13 -21
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js +12 -14
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -1
- package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +14 -16
- package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -1
- package/lib/esm/comms/email/EmailService.js +338 -0
- package/lib/esm/comms/email/EmailService.js.map +1 -0
- package/lib/esm/comms/email/index.js +12 -0
- package/lib/esm/comms/email/index.js.map +1 -0
- package/lib/esm/comms/email/mime.js +218 -0
- package/lib/esm/comms/email/mime.js.map +1 -0
- package/lib/esm/comms/email/smtp.js +166 -0
- package/lib/esm/comms/email/smtp.js.map +1 -0
- package/lib/esm/comms/environment.js +59 -0
- package/lib/esm/comms/environment.js.map +1 -0
- package/lib/esm/comms/gmail/GmailService.js +230 -0
- package/lib/esm/comms/gmail/GmailService.js.map +1 -0
- package/lib/esm/comms/gmail/index.js +7 -0
- package/lib/esm/comms/gmail/index.js.map +1 -0
- package/lib/esm/comms/index.js +14 -0
- package/lib/esm/comms/index.js.map +1 -0
- package/lib/esm/comms/slack/SlackService.js +259 -0
- package/lib/esm/comms/slack/SlackService.js.map +1 -0
- package/lib/esm/comms/slack/index.js +7 -0
- package/lib/esm/comms/slack/index.js.map +1 -0
- package/lib/esm/comms/teams/TeamsService.js +204 -0
- package/lib/esm/comms/teams/TeamsService.js.map +1 -0
- package/lib/esm/comms/teams/index.js +7 -0
- package/lib/esm/comms/teams/index.js.map +1 -0
- package/lib/esm/comms/telegram/TelegramService.js +191 -0
- package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
- package/lib/esm/comms/telegram/index.js +7 -0
- package/lib/esm/comms/telegram/index.js.map +1 -0
- package/lib/esm/devops/environment.js +39 -0
- package/lib/esm/devops/environment.js.map +1 -0
- package/lib/esm/devops/github/GithubService.js +297 -0
- package/lib/esm/devops/github/GithubService.js.map +1 -0
- package/lib/esm/devops/github/index.js +7 -0
- package/lib/esm/devops/github/index.js.map +1 -0
- package/lib/esm/devops/gitlab/GitlabService.js +277 -0
- package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
- package/lib/esm/devops/gitlab/index.js +7 -0
- package/lib/esm/devops/gitlab/index.js.map +1 -0
- package/lib/esm/devops/index.js +11 -0
- package/lib/esm/devops/index.js.map +1 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js +2 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -1
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +2 -0
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/io/airtable/AirtableService.js +261 -0
- package/lib/esm/io/airtable/AirtableService.js.map +1 -0
- package/lib/esm/io/airtable/index.js +7 -0
- package/lib/esm/io/airtable/index.js.map +1 -0
- package/lib/esm/io/environment.js +42 -0
- package/lib/esm/io/environment.js.map +1 -0
- package/lib/esm/io/google-sheets/GoogleSheetsService.js +283 -0
- package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
- package/lib/esm/io/google-sheets/index.js +7 -0
- package/lib/esm/io/google-sheets/index.js.map +1 -0
- package/lib/esm/io/graphql/GraphqlService.js +138 -0
- package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
- package/lib/esm/io/graphql/index.js +7 -0
- package/lib/esm/io/graphql/index.js.map +1 -0
- package/lib/esm/io/index.js +13 -0
- package/lib/esm/io/index.js.map +1 -0
- package/lib/esm/io/spreadsheet/SpreadsheetService.js +200 -0
- package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
- package/lib/esm/io/spreadsheet/index.js +8 -0
- package/lib/esm/io/spreadsheet/index.js.map +1 -0
- package/lib/esm/namespaces/index.js +1 -0
- package/lib/esm/namespaces/index.js.map +1 -1
- package/lib/esm/namespaces/models/credential.model.js +106 -0
- package/lib/esm/namespaces/models/credential.model.js.map +1 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +2 -0
- package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -1
- package/lib/esm/namespaces/models/group-membership.model.js +2 -0
- package/lib/esm/namespaces/models/group-membership.model.js.map +1 -1
- package/lib/esm/namespaces/models/group.model.js +2 -0
- package/lib/esm/namespaces/models/group.model.js.map +1 -1
- package/lib/esm/namespaces/models/index.js +1 -0
- package/lib/esm/namespaces/models/index.js.map +1 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js +2 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js +2 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js +2 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js +2 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -1
- package/lib/esm/namespaces/models/org-unit.model.js +2 -0
- package/lib/esm/namespaces/models/org-unit.model.js.map +1 -1
- package/lib/esm/namespaces/models/permission.model.js +2 -0
- package/lib/esm/namespaces/models/permission.model.js.map +1 -1
- package/lib/esm/namespaces/models/principal.model.js +2 -0
- package/lib/esm/namespaces/models/principal.model.js.map +1 -1
- package/lib/esm/namespaces/models/protected-resource.model.js +2 -0
- package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -1
- package/lib/esm/namespaces/models/resource-grant.model.js +2 -0
- package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -1
- package/lib/esm/namespaces/models/role-assignment.model.js +2 -0
- package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -1
- package/lib/esm/namespaces/models/role-permission.model.js +2 -0
- package/lib/esm/namespaces/models/role-permission.model.js.map +1 -1
- package/lib/esm/namespaces/models/role.model.js +2 -0
- package/lib/esm/namespaces/models/role.model.js.map +1 -1
- package/lib/esm/namespaces/models/storage-binding.model.js +2 -0
- package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js +2 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js +2 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -1
- package/lib/esm/namespaces/models/tenant.model.js +2 -0
- package/lib/esm/namespaces/models/tenant.model.js.map +1 -1
- package/lib/esm/namespaces/models/user.model.js +2 -0
- package/lib/esm/namespaces/models/user.model.js.map +1 -1
- package/lib/esm/namespaces/rls/index.js +11 -0
- package/lib/esm/namespaces/rls/index.js.map +1 -0
- package/lib/esm/namespaces/rls/principal-resolver.js +61 -0
- package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
- package/lib/esm/namespaces/rls/rls-bootstrap.service.js +261 -0
- package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.constants.js +75 -0
- package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.template.js +711 -0
- package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.types.js +9 -0
- package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
- package/lib/esm/namespaces/rls/session-binding.js +65 -0
- package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
- package/lib/esm/namespaces/services/credential.service.js +322 -0
- package/lib/esm/namespaces/services/credential.service.js.map +1 -0
- package/lib/esm/namespaces/services/index.js +1 -0
- package/lib/esm/namespaces/services/index.js.map +1 -1
- package/lib/esm/namespaces/types.js +6 -0
- package/lib/esm/namespaces/types.js.map +1 -1
- package/lib/esm/redis/adapter.js +7 -1
- package/lib/esm/redis/adapter.js.map +1 -1
- package/lib/esm/secrets/InfraCredentialBootstrap.js +74 -0
- package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretService.js +3 -13
- package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +2 -13
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -1
- package/lib/esm/secrets/core/SecretReference.js +1 -0
- package/lib/esm/secrets/core/SecretReference.js.map +1 -1
- package/lib/esm/secrets/fs/FsSecretEnvironment.js +24 -0
- package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/fs/FsSecretService.js +412 -0
- package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
- package/lib/esm/secrets/fs/FsSecretServiceConfig.js +21 -0
- package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/fs/index.js +10 -0
- package/lib/esm/secrets/fs/index.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js +2 -13
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -1
- package/lib/esm/secrets/index.js +2 -0
- package/lib/esm/secrets/index.js.map +1 -1
- package/lib/esm/secrets/model/ModelSecretService.js +337 -42
- package/lib/esm/secrets/model/ModelSecretService.js.map +1 -1
- package/lib/esm/secrets/model/Secret.js +86 -7
- package/lib/esm/secrets/model/Secret.js.map +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +2 -13
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -1
- package/lib/esm/secrets/vault/VaultSecretService.js +2 -13
- package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -1
- package/lib/esm/shared/environmentValue.js +24 -0
- package/lib/esm/shared/environmentValue.js.map +1 -1
- package/lib/esm/shared/http/HttpApiService.js +181 -0
- package/lib/esm/shared/http/HttpApiService.js.map +1 -0
- package/lib/esm/shared/http/hermeticBoot.js +146 -0
- package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
- package/lib/esm/shared/http/index.js +11 -0
- package/lib/esm/shared/http/index.js.map +1 -0
- package/lib/types/blob/azure/AzureBlobStoreService.d.cts +7 -7
- package/lib/types/blob/azure/AzureBlobStoreService.d.mts +7 -7
- package/lib/types/blob/core/BlobStoreService.d.cts +28 -27
- package/lib/types/blob/core/BlobStoreService.d.mts +28 -27
- package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +7 -7
- package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +7 -7
- package/lib/types/blob/s3/S3BlobStoreService.d.cts +9 -1
- package/lib/types/blob/s3/S3BlobStoreService.d.mts +9 -1
- package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.cts +11 -15
- package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.mts +11 -15
- package/lib/types/comms/email/EmailService.d.cts +184 -0
- package/lib/types/comms/email/EmailService.d.mts +184 -0
- package/lib/types/comms/email/index.d.cts +11 -0
- package/lib/types/comms/email/index.d.mts +11 -0
- package/lib/types/comms/email/mime.d.cts +84 -0
- package/lib/types/comms/email/mime.d.mts +84 -0
- package/lib/types/comms/email/smtp.d.cts +107 -0
- package/lib/types/comms/email/smtp.d.mts +107 -0
- package/lib/types/comms/environment.d.cts +84 -0
- package/lib/types/comms/environment.d.mts +84 -0
- package/lib/types/comms/gmail/GmailService.d.cts +190 -0
- package/lib/types/comms/gmail/GmailService.d.mts +190 -0
- package/lib/types/comms/gmail/index.d.cts +6 -0
- package/lib/types/comms/gmail/index.d.mts +6 -0
- package/lib/types/comms/index.d.cts +13 -0
- package/lib/types/comms/index.d.mts +13 -0
- package/lib/types/comms/slack/SlackService.d.cts +259 -0
- package/lib/types/comms/slack/SlackService.d.mts +259 -0
- package/lib/types/comms/slack/index.d.cts +6 -0
- package/lib/types/comms/slack/index.d.mts +6 -0
- package/lib/types/comms/teams/TeamsService.d.cts +172 -0
- package/lib/types/comms/teams/TeamsService.d.mts +172 -0
- package/lib/types/comms/teams/index.d.cts +6 -0
- package/lib/types/comms/teams/index.d.mts +6 -0
- package/lib/types/comms/telegram/TelegramService.d.cts +202 -0
- package/lib/types/comms/telegram/TelegramService.d.mts +202 -0
- package/lib/types/comms/telegram/index.d.cts +6 -0
- package/lib/types/comms/telegram/index.d.mts +6 -0
- package/lib/types/devops/environment.d.cts +62 -0
- package/lib/types/devops/environment.d.mts +62 -0
- package/lib/types/devops/github/GithubService.d.cts +287 -0
- package/lib/types/devops/github/GithubService.d.mts +287 -0
- package/lib/types/devops/github/index.d.cts +6 -0
- package/lib/types/devops/github/index.d.mts +6 -0
- package/lib/types/devops/gitlab/GitlabService.d.cts +277 -0
- package/lib/types/devops/gitlab/GitlabService.d.mts +277 -0
- package/lib/types/devops/gitlab/index.d.cts +6 -0
- package/lib/types/devops/gitlab/index.d.mts +6 -0
- package/lib/types/devops/index.d.cts +10 -0
- package/lib/types/devops/index.d.mts +10 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/io/airtable/AirtableService.d.cts +268 -0
- package/lib/types/io/airtable/AirtableService.d.mts +268 -0
- package/lib/types/io/airtable/index.d.cts +6 -0
- package/lib/types/io/airtable/index.d.mts +6 -0
- package/lib/types/io/environment.d.cts +67 -0
- package/lib/types/io/environment.d.mts +67 -0
- package/lib/types/io/google-sheets/GoogleSheetsService.d.cts +204 -0
- package/lib/types/io/google-sheets/GoogleSheetsService.d.mts +204 -0
- package/lib/types/io/google-sheets/index.d.cts +6 -0
- package/lib/types/io/google-sheets/index.d.mts +6 -0
- package/lib/types/io/graphql/GraphqlService.d.cts +173 -0
- package/lib/types/io/graphql/GraphqlService.d.mts +173 -0
- package/lib/types/io/graphql/index.d.cts +6 -0
- package/lib/types/io/graphql/index.d.mts +6 -0
- package/lib/types/io/index.d.cts +12 -0
- package/lib/types/io/index.d.mts +12 -0
- package/lib/types/io/spreadsheet/SpreadsheetService.d.cts +144 -0
- package/lib/types/io/spreadsheet/SpreadsheetService.d.mts +144 -0
- package/lib/types/io/spreadsheet/index.d.cts +7 -0
- package/lib/types/io/spreadsheet/index.d.mts +7 -0
- package/lib/types/namespaces/index.d.cts +1 -0
- package/lib/types/namespaces/index.d.mts +1 -0
- package/lib/types/namespaces/models/credential.model.d.cts +23 -0
- package/lib/types/namespaces/models/credential.model.d.mts +23 -0
- package/lib/types/namespaces/models/index.d.cts +1 -0
- package/lib/types/namespaces/models/index.d.mts +1 -0
- package/lib/types/namespaces/rls/index.d.cts +10 -0
- package/lib/types/namespaces/rls/index.d.mts +10 -0
- package/lib/types/namespaces/rls/principal-resolver.d.cts +47 -0
- package/lib/types/namespaces/rls/principal-resolver.d.mts +47 -0
- package/lib/types/namespaces/rls/rls-bootstrap.service.d.cts +157 -0
- package/lib/types/namespaces/rls/rls-bootstrap.service.d.mts +157 -0
- package/lib/types/namespaces/rls/rls.constants.d.cts +52 -0
- package/lib/types/namespaces/rls/rls.constants.d.mts +52 -0
- package/lib/types/namespaces/rls/rls.template.d.cts +42 -0
- package/lib/types/namespaces/rls/rls.template.d.mts +42 -0
- package/lib/types/namespaces/rls/rls.types.d.cts +77 -0
- package/lib/types/namespaces/rls/rls.types.d.mts +77 -0
- package/lib/types/namespaces/rls/session-binding.d.cts +87 -0
- package/lib/types/namespaces/rls/session-binding.d.mts +87 -0
- package/lib/types/namespaces/services/credential.service.d.cts +175 -0
- package/lib/types/namespaces/services/credential.service.d.mts +175 -0
- package/lib/types/namespaces/services/index.d.cts +1 -0
- package/lib/types/namespaces/services/index.d.mts +1 -0
- package/lib/types/namespaces/types.d.cts +37 -0
- package/lib/types/namespaces/types.d.mts +37 -0
- package/lib/types/redis/adapter.d.cts +2 -0
- package/lib/types/redis/adapter.d.mts +2 -0
- package/lib/types/redis/types.d.cts +27 -2
- package/lib/types/redis/types.d.mts +27 -2
- package/lib/types/secrets/InfraCredentialBootstrap.d.cts +100 -0
- package/lib/types/secrets/InfraCredentialBootstrap.d.mts +100 -0
- package/lib/types/secrets/core/SecretTypes.d.cts +15 -1
- package/lib/types/secrets/core/SecretTypes.d.mts +15 -1
- package/lib/types/secrets/fs/FsSecretEnvironment.d.cts +42 -0
- package/lib/types/secrets/fs/FsSecretEnvironment.d.mts +42 -0
- package/lib/types/secrets/fs/FsSecretService.d.cts +207 -0
- package/lib/types/secrets/fs/FsSecretService.d.mts +207 -0
- package/lib/types/secrets/fs/FsSecretServiceConfig.d.cts +37 -0
- package/lib/types/secrets/fs/FsSecretServiceConfig.d.mts +37 -0
- package/lib/types/secrets/fs/index.d.cts +9 -0
- package/lib/types/secrets/fs/index.d.mts +9 -0
- package/lib/types/secrets/index.d.cts +2 -0
- package/lib/types/secrets/index.d.mts +2 -0
- package/lib/types/secrets/model/ModelSecretService.d.cts +190 -1
- package/lib/types/secrets/model/ModelSecretService.d.mts +190 -1
- package/lib/types/secrets/model/Secret.d.cts +44 -3
- package/lib/types/secrets/model/Secret.d.mts +44 -3
- package/lib/types/shared/environmentValue.d.cts +24 -0
- package/lib/types/shared/environmentValue.d.mts +24 -0
- package/lib/types/shared/http/HttpApiService.d.cts +193 -0
- package/lib/types/shared/http/HttpApiService.d.mts +193 -0
- package/lib/types/shared/http/hermeticBoot.d.cts +84 -0
- package/lib/types/shared/http/hermeticBoot.d.mts +84 -0
- package/lib/types/shared/http/index.d.cts +10 -0
- package/lib/types/shared/http/index.d.mts +10 -0
- package/package.json +180 -3
- package/sql/002_rls.sql +660 -15
- package/sql/004_credentials.sql +46 -0
package/sql/002_rls.sql
CHANGED
|
@@ -1,20 +1,665 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
CREATE
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
-- Namespace row-level security template.
|
|
2
|
+
-- Generated from src/namespaces/rls/rls.template.ts; do not edit by hand.
|
|
3
|
+
-- Apply with RlsBootstrapService.apply() or a migration runner.
|
|
4
|
+
CREATE OR REPLACE FUNCTION app_rls_principal_id()
|
|
5
|
+
RETURNS uuid
|
|
6
|
+
LANGUAGE sql
|
|
7
|
+
STABLE
|
|
8
|
+
AS $fn$
|
|
9
|
+
SELECT NULLIF(current_setting('app.principal_id', true), '')::uuid
|
|
10
|
+
$fn$;
|
|
11
|
+
CREATE OR REPLACE FUNCTION app_rls_subject_id()
|
|
12
|
+
RETURNS text
|
|
13
|
+
LANGUAGE sql
|
|
14
|
+
STABLE
|
|
15
|
+
SECURITY DEFINER
|
|
16
|
+
SET search_path = public, pg_temp
|
|
17
|
+
AS $fn$
|
|
18
|
+
SELECT p.subject_id
|
|
19
|
+
FROM principals p
|
|
20
|
+
WHERE p.id = app_rls_principal_id()
|
|
21
|
+
$fn$;
|
|
22
|
+
CREATE OR REPLACE FUNCTION app_rls_principal_for_subject(
|
|
23
|
+
p_subject text,
|
|
24
|
+
p_tenant uuid DEFAULT NULL
|
|
25
|
+
)
|
|
26
|
+
RETURNS uuid
|
|
27
|
+
LANGUAGE sql
|
|
28
|
+
STABLE
|
|
29
|
+
SECURITY DEFINER
|
|
30
|
+
SET search_path = public, pg_temp
|
|
31
|
+
AS $fn$
|
|
32
|
+
SELECT CASE WHEN COUNT(*) = 1 THEN (MIN(p.id::text))::uuid ELSE NULL END
|
|
33
|
+
FROM principals p
|
|
34
|
+
WHERE p.subject_id = NULLIF(p_subject, '')
|
|
35
|
+
AND (p_tenant IS NULL OR p.tenant_id = p_tenant)
|
|
36
|
+
$fn$;
|
|
37
|
+
REVOKE ALL ON FUNCTION app_rls_principal_for_subject(text, uuid) FROM PUBLIC;
|
|
38
|
+
CREATE OR REPLACE FUNCTION app_rls_org_unit_tenant(p_org_unit uuid)
|
|
39
|
+
RETURNS uuid
|
|
40
|
+
LANGUAGE sql
|
|
41
|
+
STABLE
|
|
42
|
+
SECURITY DEFINER
|
|
43
|
+
SET search_path = public, pg_temp
|
|
44
|
+
AS $fn$
|
|
45
|
+
SELECT ou.tenant_id
|
|
46
|
+
FROM org_units ou
|
|
47
|
+
WHERE ou.id = p_org_unit
|
|
48
|
+
$fn$;
|
|
49
|
+
CREATE OR REPLACE FUNCTION app_rls_has_permission(
|
|
50
|
+
p_tenant uuid,
|
|
51
|
+
p_permission text,
|
|
52
|
+
p_scope_kind text,
|
|
53
|
+
p_scope_id text
|
|
54
|
+
)
|
|
55
|
+
RETURNS boolean
|
|
56
|
+
LANGUAGE sql
|
|
57
|
+
STABLE
|
|
58
|
+
SECURITY DEFINER
|
|
59
|
+
SET search_path = public, pg_temp
|
|
60
|
+
AS $fn$
|
|
61
|
+
SELECT EXISTS (
|
|
62
|
+
SELECT 1
|
|
63
|
+
FROM effective_permissions ep
|
|
64
|
+
WHERE ep.tenant_id = p_tenant
|
|
65
|
+
AND ep.principal_id = app_rls_principal_id()
|
|
66
|
+
AND ep.permission_key = p_permission
|
|
67
|
+
AND ep.scope_kind = p_scope_kind
|
|
68
|
+
AND ep.scope_id = p_scope_id
|
|
69
|
+
AND (ep.starts_at IS NULL OR ep.starts_at <= now())
|
|
70
|
+
AND (ep.expires_at IS NULL OR ep.expires_at >= now())
|
|
71
|
+
)
|
|
72
|
+
$fn$;
|
|
73
|
+
CREATE OR REPLACE FUNCTION app_rls_tenant_permission(
|
|
74
|
+
p_tenant uuid,
|
|
75
|
+
p_permission text
|
|
76
|
+
)
|
|
77
|
+
RETURNS boolean
|
|
78
|
+
LANGUAGE sql
|
|
79
|
+
STABLE
|
|
80
|
+
SECURITY DEFINER
|
|
81
|
+
SET search_path = public, pg_temp
|
|
82
|
+
AS $fn$
|
|
83
|
+
SELECT app_rls_has_permission(
|
|
84
|
+
p_tenant,
|
|
85
|
+
p_permission,
|
|
86
|
+
'tenant',
|
|
87
|
+
p_tenant::text
|
|
88
|
+
)
|
|
89
|
+
$fn$;
|
|
90
|
+
CREATE OR REPLACE FUNCTION app_rls_org_unit_permission(
|
|
91
|
+
p_tenant uuid,
|
|
92
|
+
p_org_unit uuid,
|
|
93
|
+
p_permission text
|
|
94
|
+
)
|
|
95
|
+
RETURNS boolean
|
|
96
|
+
LANGUAGE sql
|
|
97
|
+
STABLE
|
|
98
|
+
SECURITY DEFINER
|
|
99
|
+
SET search_path = public, pg_temp
|
|
100
|
+
AS $fn$
|
|
101
|
+
SELECT app_rls_has_permission(
|
|
102
|
+
p_tenant,
|
|
103
|
+
p_permission,
|
|
104
|
+
'tenant',
|
|
105
|
+
p_tenant::text
|
|
106
|
+
)
|
|
107
|
+
OR (
|
|
108
|
+
p_org_unit IS NOT NULL
|
|
109
|
+
AND app_rls_has_permission(
|
|
110
|
+
p_tenant,
|
|
111
|
+
p_permission,
|
|
112
|
+
'org_unit',
|
|
113
|
+
p_org_unit::text
|
|
114
|
+
)
|
|
115
|
+
)
|
|
116
|
+
$fn$;
|
|
117
|
+
CREATE OR REPLACE FUNCTION app_rls_is_tenant_member(p_tenant uuid)
|
|
118
|
+
RETURNS boolean
|
|
119
|
+
LANGUAGE sql
|
|
120
|
+
STABLE
|
|
121
|
+
SECURITY DEFINER
|
|
122
|
+
SET search_path = public, pg_temp
|
|
123
|
+
AS $fn$
|
|
124
|
+
SELECT EXISTS (
|
|
125
|
+
SELECT 1
|
|
126
|
+
FROM tenant_memberships tm
|
|
127
|
+
WHERE tm.tenant_id = p_tenant
|
|
128
|
+
AND tm.status = 'active'
|
|
129
|
+
AND tm.user_id::text = app_rls_subject_id()
|
|
130
|
+
)
|
|
131
|
+
$fn$;
|
|
132
|
+
CREATE OR REPLACE FUNCTION app_rls_is_org_unit_member(
|
|
133
|
+
p_tenant uuid,
|
|
134
|
+
p_org_unit uuid
|
|
135
|
+
)
|
|
136
|
+
RETURNS boolean
|
|
137
|
+
LANGUAGE sql
|
|
138
|
+
STABLE
|
|
139
|
+
SECURITY DEFINER
|
|
140
|
+
SET search_path = public, pg_temp
|
|
141
|
+
AS $fn$
|
|
142
|
+
SELECT EXISTS (
|
|
143
|
+
SELECT 1
|
|
144
|
+
FROM org_unit_memberships m
|
|
145
|
+
WHERE m.tenant_id = p_tenant
|
|
146
|
+
AND m.org_unit_id = p_org_unit
|
|
147
|
+
AND m.status = 'active'
|
|
148
|
+
AND m.user_id::text = app_rls_subject_id()
|
|
149
|
+
)
|
|
150
|
+
$fn$;
|
|
151
|
+
CREATE OR REPLACE FUNCTION app_rls_can_read_tenant(p_tenant uuid)
|
|
152
|
+
RETURNS boolean
|
|
153
|
+
LANGUAGE sql
|
|
154
|
+
STABLE
|
|
155
|
+
SECURITY DEFINER
|
|
156
|
+
SET search_path = public, pg_temp
|
|
157
|
+
AS $fn$
|
|
158
|
+
SELECT app_rls_tenant_permission(p_tenant, 'namespace.admin')
|
|
159
|
+
OR app_rls_tenant_permission(p_tenant, 'namespace.write')
|
|
160
|
+
OR app_rls_tenant_permission(p_tenant, 'namespace.read')
|
|
161
|
+
$fn$;
|
|
162
|
+
CREATE OR REPLACE FUNCTION app_rls_can_write_tenant(p_tenant uuid)
|
|
163
|
+
RETURNS boolean
|
|
164
|
+
LANGUAGE sql
|
|
165
|
+
STABLE
|
|
166
|
+
SECURITY DEFINER
|
|
167
|
+
SET search_path = public, pg_temp
|
|
168
|
+
AS $fn$
|
|
169
|
+
SELECT app_rls_tenant_permission(p_tenant, 'namespace.admin')
|
|
170
|
+
OR app_rls_tenant_permission(p_tenant, 'namespace.write')
|
|
171
|
+
$fn$;
|
|
172
|
+
CREATE OR REPLACE FUNCTION app_rls_can_read_org_unit(
|
|
173
|
+
p_tenant uuid,
|
|
174
|
+
p_org_unit uuid
|
|
175
|
+
)
|
|
176
|
+
RETURNS boolean
|
|
177
|
+
LANGUAGE sql
|
|
178
|
+
STABLE
|
|
179
|
+
SECURITY DEFINER
|
|
180
|
+
SET search_path = public, pg_temp
|
|
181
|
+
AS $fn$
|
|
182
|
+
SELECT app_rls_can_read_tenant(p_tenant)
|
|
183
|
+
OR app_rls_org_unit_permission(p_tenant, p_org_unit, 'namespace.admin')
|
|
184
|
+
OR app_rls_org_unit_permission(p_tenant, p_org_unit, 'namespace.write')
|
|
185
|
+
OR app_rls_org_unit_permission(p_tenant, p_org_unit, 'namespace.read')
|
|
186
|
+
OR app_rls_is_org_unit_member(p_tenant, p_org_unit)
|
|
187
|
+
$fn$;
|
|
188
|
+
CREATE OR REPLACE FUNCTION app_rls_can_write_org_unit(
|
|
189
|
+
p_tenant uuid,
|
|
190
|
+
p_org_unit uuid
|
|
191
|
+
)
|
|
192
|
+
RETURNS boolean
|
|
193
|
+
LANGUAGE sql
|
|
194
|
+
STABLE
|
|
195
|
+
SECURITY DEFINER
|
|
196
|
+
SET search_path = public, pg_temp
|
|
197
|
+
AS $fn$
|
|
198
|
+
SELECT app_rls_can_write_tenant(p_tenant)
|
|
199
|
+
OR app_rls_org_unit_permission(p_tenant, p_org_unit, 'namespace.admin')
|
|
200
|
+
OR app_rls_org_unit_permission(p_tenant, p_org_unit, 'namespace.write')
|
|
201
|
+
$fn$;
|
|
202
|
+
CREATE OR REPLACE FUNCTION app_rls_is_admin()
|
|
203
|
+
RETURNS boolean
|
|
204
|
+
LANGUAGE sql
|
|
205
|
+
STABLE
|
|
206
|
+
SECURITY DEFINER
|
|
207
|
+
SET search_path = public, pg_temp
|
|
208
|
+
AS $fn$
|
|
209
|
+
SELECT EXISTS (
|
|
9
210
|
SELECT 1
|
|
10
211
|
FROM effective_permissions ep
|
|
11
|
-
WHERE ep.
|
|
12
|
-
AND ep.
|
|
13
|
-
AND ep.
|
|
212
|
+
WHERE ep.principal_id = app_rls_principal_id()
|
|
213
|
+
AND ep.permission_key = 'namespace.admin'
|
|
214
|
+
AND (ep.starts_at IS NULL OR ep.starts_at <= now())
|
|
215
|
+
AND (ep.expires_at IS NULL OR ep.expires_at >= now())
|
|
216
|
+
)
|
|
217
|
+
$fn$;
|
|
218
|
+
CREATE OR REPLACE FUNCTION app_rls_is_tenant_admin(p_tenant uuid)
|
|
219
|
+
RETURNS boolean
|
|
220
|
+
LANGUAGE sql
|
|
221
|
+
STABLE
|
|
222
|
+
SECURITY DEFINER
|
|
223
|
+
SET search_path = public, pg_temp
|
|
224
|
+
AS $fn$
|
|
225
|
+
SELECT app_rls_tenant_permission(p_tenant, 'namespace.admin')
|
|
226
|
+
$fn$;
|
|
227
|
+
CREATE OR REPLACE FUNCTION app_rls_is_org_unit_admin(
|
|
228
|
+
p_tenant uuid,
|
|
229
|
+
p_org_unit uuid
|
|
230
|
+
)
|
|
231
|
+
RETURNS boolean
|
|
232
|
+
LANGUAGE sql
|
|
233
|
+
STABLE
|
|
234
|
+
SECURITY DEFINER
|
|
235
|
+
SET search_path = public, pg_temp
|
|
236
|
+
AS $fn$
|
|
237
|
+
SELECT app_rls_is_tenant_admin(p_tenant)
|
|
238
|
+
OR (
|
|
239
|
+
p_org_unit IS NOT NULL
|
|
240
|
+
AND app_rls_org_unit_permission(p_tenant, p_org_unit, 'namespace.admin')
|
|
241
|
+
)
|
|
242
|
+
$fn$;
|
|
243
|
+
CREATE OR REPLACE FUNCTION app_rls_is_scope_admin(
|
|
244
|
+
p_tenant uuid,
|
|
245
|
+
p_scope_kind text,
|
|
246
|
+
p_scope_id text
|
|
247
|
+
)
|
|
248
|
+
RETURNS boolean
|
|
249
|
+
LANGUAGE sql
|
|
250
|
+
STABLE
|
|
251
|
+
SECURITY DEFINER
|
|
252
|
+
SET search_path = public, pg_temp
|
|
253
|
+
AS $fn$
|
|
254
|
+
SELECT CASE
|
|
255
|
+
WHEN p_scope_kind = 'tenant' THEN app_rls_is_tenant_admin(p_tenant)
|
|
256
|
+
WHEN p_scope_kind = 'org_unit' THEN app_rls_is_org_unit_admin(
|
|
257
|
+
p_tenant,
|
|
258
|
+
p_scope_id::uuid
|
|
259
|
+
)
|
|
260
|
+
WHEN p_scope_kind = 'resource' THEN EXISTS (
|
|
261
|
+
SELECT 1
|
|
262
|
+
FROM protected_resources r
|
|
263
|
+
WHERE r.id = p_scope_id::uuid
|
|
264
|
+
AND r.tenant_id = p_tenant
|
|
265
|
+
AND app_rls_is_org_unit_admin(p_tenant, r.org_unit_id)
|
|
266
|
+
)
|
|
267
|
+
ELSE false
|
|
268
|
+
END
|
|
269
|
+
$fn$;
|
|
270
|
+
CREATE OR REPLACE FUNCTION app_rls_can_admin_user(p_user_id uuid)
|
|
271
|
+
RETURNS boolean
|
|
272
|
+
LANGUAGE sql
|
|
273
|
+
STABLE
|
|
274
|
+
SECURITY DEFINER
|
|
275
|
+
SET search_path = public, pg_temp
|
|
276
|
+
AS $fn$
|
|
277
|
+
SELECT EXISTS (
|
|
278
|
+
SELECT 1
|
|
279
|
+
FROM tenant_memberships tm
|
|
280
|
+
WHERE tm.user_id = p_user_id
|
|
281
|
+
AND app_rls_is_tenant_admin(tm.tenant_id)
|
|
282
|
+
)
|
|
283
|
+
$fn$;
|
|
284
|
+
CREATE OR REPLACE FUNCTION app_rls_can_read_group(
|
|
285
|
+
p_tenant uuid,
|
|
286
|
+
p_group uuid
|
|
287
|
+
)
|
|
288
|
+
RETURNS boolean
|
|
289
|
+
LANGUAGE sql
|
|
290
|
+
STABLE
|
|
291
|
+
SECURITY DEFINER
|
|
292
|
+
SET search_path = public, pg_temp
|
|
293
|
+
AS $fn$
|
|
294
|
+
SELECT EXISTS (
|
|
295
|
+
SELECT 1
|
|
296
|
+
FROM groups g
|
|
297
|
+
WHERE g.id = p_group
|
|
298
|
+
AND g.tenant_id = p_tenant
|
|
14
299
|
AND (
|
|
15
|
-
(
|
|
16
|
-
OR (
|
|
17
|
-
|
|
300
|
+
(g.org_unit_id IS NULL AND app_rls_can_read_tenant(p_tenant))
|
|
301
|
+
OR (
|
|
302
|
+
g.org_unit_id IS NOT NULL
|
|
303
|
+
AND app_rls_can_read_org_unit(p_tenant, g.org_unit_id)
|
|
304
|
+
)
|
|
18
305
|
)
|
|
19
306
|
)
|
|
20
|
-
|
|
307
|
+
$fn$;
|
|
308
|
+
CREATE OR REPLACE FUNCTION app_rls_can_write_group(
|
|
309
|
+
p_tenant uuid,
|
|
310
|
+
p_group uuid
|
|
311
|
+
)
|
|
312
|
+
RETURNS boolean
|
|
313
|
+
LANGUAGE sql
|
|
314
|
+
STABLE
|
|
315
|
+
SECURITY DEFINER
|
|
316
|
+
SET search_path = public, pg_temp
|
|
317
|
+
AS $fn$
|
|
318
|
+
SELECT EXISTS (
|
|
319
|
+
SELECT 1
|
|
320
|
+
FROM groups g
|
|
321
|
+
WHERE g.id = p_group
|
|
322
|
+
AND g.tenant_id = p_tenant
|
|
323
|
+
AND (
|
|
324
|
+
(g.org_unit_id IS NULL AND app_rls_can_write_tenant(p_tenant))
|
|
325
|
+
OR (
|
|
326
|
+
g.org_unit_id IS NOT NULL
|
|
327
|
+
AND app_rls_can_write_org_unit(p_tenant, g.org_unit_id)
|
|
328
|
+
)
|
|
329
|
+
)
|
|
330
|
+
)
|
|
331
|
+
$fn$;
|
|
332
|
+
CREATE OR REPLACE FUNCTION app_rls_can_read_resource(
|
|
333
|
+
p_tenant uuid,
|
|
334
|
+
p_resource uuid
|
|
335
|
+
)
|
|
336
|
+
RETURNS boolean
|
|
337
|
+
LANGUAGE sql
|
|
338
|
+
STABLE
|
|
339
|
+
SECURITY DEFINER
|
|
340
|
+
SET search_path = public, pg_temp
|
|
341
|
+
AS $fn$
|
|
342
|
+
SELECT EXISTS (
|
|
343
|
+
SELECT 1
|
|
344
|
+
FROM protected_resources r
|
|
345
|
+
WHERE r.id = p_resource
|
|
346
|
+
AND r.tenant_id = p_tenant
|
|
347
|
+
AND (
|
|
348
|
+
r.owner_principal_id = app_rls_principal_id()
|
|
349
|
+
OR app_rls_is_org_unit_admin(p_tenant, r.org_unit_id)
|
|
350
|
+
OR (
|
|
351
|
+
r.visibility = 'tenant'
|
|
352
|
+
AND app_rls_can_read_tenant(p_tenant)
|
|
353
|
+
)
|
|
354
|
+
OR (
|
|
355
|
+
r.visibility IN ('org_unit', 'org_subtree')
|
|
356
|
+
AND app_rls_can_read_org_unit(p_tenant, r.org_unit_id)
|
|
357
|
+
)
|
|
358
|
+
OR EXISTS (
|
|
359
|
+
SELECT 1
|
|
360
|
+
FROM resource_grants g
|
|
361
|
+
WHERE g.resource_id = r.id
|
|
362
|
+
AND g.principal_id = app_rls_principal_id()
|
|
363
|
+
AND g.permission_key IN (
|
|
364
|
+
'resource.read',
|
|
365
|
+
'namespace.read',
|
|
366
|
+
'namespace.write',
|
|
367
|
+
'namespace.admin'
|
|
368
|
+
)
|
|
369
|
+
AND (g.starts_at IS NULL OR g.starts_at <= now())
|
|
370
|
+
AND (g.expires_at IS NULL OR g.expires_at >= now())
|
|
371
|
+
)
|
|
372
|
+
)
|
|
373
|
+
)
|
|
374
|
+
$fn$;
|
|
375
|
+
CREATE OR REPLACE FUNCTION app_rls_can_write_resource(
|
|
376
|
+
p_tenant uuid,
|
|
377
|
+
p_resource uuid
|
|
378
|
+
)
|
|
379
|
+
RETURNS boolean
|
|
380
|
+
LANGUAGE sql
|
|
381
|
+
STABLE
|
|
382
|
+
SECURITY DEFINER
|
|
383
|
+
SET search_path = public, pg_temp
|
|
384
|
+
AS $fn$
|
|
385
|
+
SELECT EXISTS (
|
|
386
|
+
SELECT 1
|
|
387
|
+
FROM protected_resources r
|
|
388
|
+
WHERE r.id = p_resource
|
|
389
|
+
AND r.tenant_id = p_tenant
|
|
390
|
+
AND (
|
|
391
|
+
app_rls_is_org_unit_admin(p_tenant, r.org_unit_id)
|
|
392
|
+
OR app_rls_can_write_org_unit(p_tenant, r.org_unit_id)
|
|
393
|
+
)
|
|
394
|
+
)
|
|
395
|
+
$fn$;
|
|
396
|
+
CREATE OR REPLACE FUNCTION app_rls_is_role_admin(p_role uuid)
|
|
397
|
+
RETURNS boolean
|
|
398
|
+
LANGUAGE sql
|
|
399
|
+
STABLE
|
|
400
|
+
SECURITY DEFINER
|
|
401
|
+
SET search_path = public, pg_temp
|
|
402
|
+
AS $fn$
|
|
403
|
+
SELECT EXISTS (
|
|
404
|
+
SELECT 1
|
|
405
|
+
FROM roles r
|
|
406
|
+
WHERE r.id = p_role
|
|
407
|
+
AND (
|
|
408
|
+
(r.tenant_id IS NULL AND app_rls_is_admin())
|
|
409
|
+
OR (
|
|
410
|
+
r.tenant_id IS NOT NULL
|
|
411
|
+
AND app_rls_is_tenant_admin(r.tenant_id)
|
|
412
|
+
)
|
|
413
|
+
)
|
|
414
|
+
)
|
|
415
|
+
$fn$;
|
|
416
|
+
CREATE OR REPLACE FUNCTION app_rls_can_read_credential_scope(
|
|
417
|
+
p_tenant uuid,
|
|
418
|
+
p_org_unit uuid
|
|
419
|
+
)
|
|
420
|
+
RETURNS boolean
|
|
421
|
+
LANGUAGE sql
|
|
422
|
+
STABLE
|
|
423
|
+
SECURITY DEFINER
|
|
424
|
+
SET search_path = public, pg_temp
|
|
425
|
+
AS $fn$
|
|
426
|
+
SELECT CASE
|
|
427
|
+
WHEN p_org_unit IS NULL THEN app_rls_can_read_tenant(p_tenant)
|
|
428
|
+
ELSE app_rls_can_read_org_unit(p_tenant, p_org_unit)
|
|
429
|
+
END
|
|
430
|
+
$fn$;
|
|
431
|
+
CREATE OR REPLACE FUNCTION app_rls_can_write_credential_scope(
|
|
432
|
+
p_tenant uuid,
|
|
433
|
+
p_org_unit uuid
|
|
434
|
+
)
|
|
435
|
+
RETURNS boolean
|
|
436
|
+
LANGUAGE sql
|
|
437
|
+
STABLE
|
|
438
|
+
SECURITY DEFINER
|
|
439
|
+
SET search_path = public, pg_temp
|
|
440
|
+
AS $fn$
|
|
441
|
+
SELECT CASE
|
|
442
|
+
WHEN p_org_unit IS NULL THEN app_rls_can_write_tenant(p_tenant)
|
|
443
|
+
ELSE app_rls_can_write_org_unit(p_tenant, p_org_unit)
|
|
444
|
+
END
|
|
445
|
+
$fn$;
|
|
446
|
+
ALTER TABLE tenants ENABLE ROW LEVEL SECURITY;
|
|
447
|
+
ALTER TABLE tenants FORCE ROW LEVEL SECURITY;
|
|
448
|
+
DROP POLICY IF EXISTS tenants_select_policy ON tenants;
|
|
449
|
+
CREATE POLICY tenants_select_policy ON tenants FOR SELECT USING (app_rls_is_tenant_member(id) OR app_rls_can_read_tenant(id));
|
|
450
|
+
DROP POLICY IF EXISTS tenants_insert_policy ON tenants;
|
|
451
|
+
CREATE POLICY tenants_insert_policy ON tenants FOR INSERT WITH CHECK (app_rls_is_admin());
|
|
452
|
+
DROP POLICY IF EXISTS tenants_update_policy ON tenants;
|
|
453
|
+
CREATE POLICY tenants_update_policy ON tenants FOR UPDATE USING (app_rls_is_tenant_admin(id)) WITH CHECK (app_rls_is_tenant_admin(id));
|
|
454
|
+
DROP POLICY IF EXISTS tenants_delete_policy ON tenants;
|
|
455
|
+
CREATE POLICY tenants_delete_policy ON tenants FOR DELETE USING (app_rls_is_tenant_admin(id));
|
|
456
|
+
ALTER TABLE org_units ENABLE ROW LEVEL SECURITY;
|
|
457
|
+
ALTER TABLE org_units FORCE ROW LEVEL SECURITY;
|
|
458
|
+
DROP POLICY IF EXISTS org_units_select_policy ON org_units;
|
|
459
|
+
CREATE POLICY org_units_select_policy ON org_units FOR SELECT USING (app_rls_can_read_org_unit(tenant_id, id) OR (parent_id IS NOT NULL AND app_rls_can_write_org_unit(tenant_id, parent_id)));
|
|
460
|
+
DROP POLICY IF EXISTS org_units_insert_policy ON org_units;
|
|
461
|
+
CREATE POLICY org_units_insert_policy ON org_units FOR INSERT WITH CHECK (app_rls_can_write_tenant(tenant_id) OR (parent_id IS NOT NULL AND app_rls_can_write_org_unit(tenant_id, parent_id)));
|
|
462
|
+
DROP POLICY IF EXISTS org_units_update_policy ON org_units;
|
|
463
|
+
CREATE POLICY org_units_update_policy ON org_units FOR UPDATE USING (app_rls_can_write_org_unit(tenant_id, id) OR (parent_id IS NOT NULL AND app_rls_can_write_org_unit(tenant_id, parent_id))) WITH CHECK (app_rls_can_write_org_unit(tenant_id, id) OR (parent_id IS NOT NULL AND app_rls_can_write_org_unit(tenant_id, parent_id)));
|
|
464
|
+
DROP POLICY IF EXISTS org_units_delete_policy ON org_units;
|
|
465
|
+
CREATE POLICY org_units_delete_policy ON org_units FOR DELETE USING (app_rls_can_write_org_unit(tenant_id, id) OR (parent_id IS NOT NULL AND app_rls_can_write_org_unit(tenant_id, parent_id)));
|
|
466
|
+
ALTER TABLE org_unit_closure ENABLE ROW LEVEL SECURITY;
|
|
467
|
+
ALTER TABLE org_unit_closure FORCE ROW LEVEL SECURITY;
|
|
468
|
+
DROP POLICY IF EXISTS org_unit_closure_select_policy ON org_unit_closure;
|
|
469
|
+
CREATE POLICY org_unit_closure_select_policy ON org_unit_closure FOR SELECT USING (app_rls_can_read_org_unit(tenant_id, descendant_org_unit_id));
|
|
470
|
+
DROP POLICY IF EXISTS org_unit_closure_insert_policy ON org_unit_closure;
|
|
471
|
+
CREATE POLICY org_unit_closure_insert_policy ON org_unit_closure FOR INSERT WITH CHECK (app_rls_can_write_org_unit(tenant_id, descendant_org_unit_id));
|
|
472
|
+
DROP POLICY IF EXISTS org_unit_closure_update_policy ON org_unit_closure;
|
|
473
|
+
CREATE POLICY org_unit_closure_update_policy ON org_unit_closure FOR UPDATE USING (app_rls_can_write_org_unit(tenant_id, descendant_org_unit_id)) WITH CHECK (app_rls_can_write_org_unit(tenant_id, descendant_org_unit_id));
|
|
474
|
+
DROP POLICY IF EXISTS org_unit_closure_delete_policy ON org_unit_closure;
|
|
475
|
+
CREATE POLICY org_unit_closure_delete_policy ON org_unit_closure FOR DELETE USING (app_rls_can_write_org_unit(tenant_id, descendant_org_unit_id));
|
|
476
|
+
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
477
|
+
ALTER TABLE users FORCE ROW LEVEL SECURITY;
|
|
478
|
+
DROP POLICY IF EXISTS users_select_policy ON users;
|
|
479
|
+
CREATE POLICY users_select_policy ON users FOR SELECT USING (id::text = app_rls_subject_id() OR app_rls_can_admin_user(id));
|
|
480
|
+
DROP POLICY IF EXISTS users_insert_policy ON users;
|
|
481
|
+
CREATE POLICY users_insert_policy ON users FOR INSERT WITH CHECK (app_rls_is_admin());
|
|
482
|
+
DROP POLICY IF EXISTS users_update_policy ON users;
|
|
483
|
+
CREATE POLICY users_update_policy ON users FOR UPDATE USING (id::text = app_rls_subject_id() OR app_rls_can_admin_user(id)) WITH CHECK (id::text = app_rls_subject_id() OR app_rls_can_admin_user(id));
|
|
484
|
+
DROP POLICY IF EXISTS users_delete_policy ON users;
|
|
485
|
+
CREATE POLICY users_delete_policy ON users FOR DELETE USING (app_rls_can_admin_user(id));
|
|
486
|
+
ALTER TABLE groups ENABLE ROW LEVEL SECURITY;
|
|
487
|
+
ALTER TABLE groups FORCE ROW LEVEL SECURITY;
|
|
488
|
+
DROP POLICY IF EXISTS groups_select_policy ON groups;
|
|
489
|
+
CREATE POLICY groups_select_policy ON groups FOR SELECT USING (app_rls_can_read_group(tenant_id, id));
|
|
490
|
+
DROP POLICY IF EXISTS groups_insert_policy ON groups;
|
|
491
|
+
CREATE POLICY groups_insert_policy ON groups FOR INSERT WITH CHECK (app_rls_can_write_tenant(tenant_id) OR (org_unit_id IS NOT NULL AND app_rls_can_write_org_unit(tenant_id, org_unit_id)));
|
|
492
|
+
DROP POLICY IF EXISTS groups_update_policy ON groups;
|
|
493
|
+
CREATE POLICY groups_update_policy ON groups FOR UPDATE USING (app_rls_can_write_group(tenant_id, id)) WITH CHECK (app_rls_can_write_group(tenant_id, id));
|
|
494
|
+
DROP POLICY IF EXISTS groups_delete_policy ON groups;
|
|
495
|
+
CREATE POLICY groups_delete_policy ON groups FOR DELETE USING (app_rls_can_write_group(tenant_id, id));
|
|
496
|
+
ALTER TABLE principals ENABLE ROW LEVEL SECURITY;
|
|
497
|
+
ALTER TABLE principals FORCE ROW LEVEL SECURITY;
|
|
498
|
+
DROP POLICY IF EXISTS principals_select_policy ON principals;
|
|
499
|
+
CREATE POLICY principals_select_policy ON principals FOR SELECT USING (id = app_rls_principal_id() OR (kind = 'user' AND subject_id = app_rls_subject_id()) OR app_rls_is_tenant_admin(tenant_id));
|
|
500
|
+
DROP POLICY IF EXISTS principals_insert_policy ON principals;
|
|
501
|
+
CREATE POLICY principals_insert_policy ON principals FOR INSERT WITH CHECK (app_rls_is_tenant_admin(tenant_id));
|
|
502
|
+
DROP POLICY IF EXISTS principals_update_policy ON principals;
|
|
503
|
+
CREATE POLICY principals_update_policy ON principals FOR UPDATE USING (app_rls_is_tenant_admin(tenant_id)) WITH CHECK (app_rls_is_tenant_admin(tenant_id));
|
|
504
|
+
DROP POLICY IF EXISTS principals_delete_policy ON principals;
|
|
505
|
+
CREATE POLICY principals_delete_policy ON principals FOR DELETE USING (app_rls_is_tenant_admin(tenant_id));
|
|
506
|
+
ALTER TABLE tenant_memberships ENABLE ROW LEVEL SECURITY;
|
|
507
|
+
ALTER TABLE tenant_memberships FORCE ROW LEVEL SECURITY;
|
|
508
|
+
DROP POLICY IF EXISTS tenant_memberships_select_policy ON tenant_memberships;
|
|
509
|
+
CREATE POLICY tenant_memberships_select_policy ON tenant_memberships FOR SELECT USING (user_id::text = app_rls_subject_id() OR app_rls_can_read_tenant(tenant_id));
|
|
510
|
+
DROP POLICY IF EXISTS tenant_memberships_insert_policy ON tenant_memberships;
|
|
511
|
+
CREATE POLICY tenant_memberships_insert_policy ON tenant_memberships FOR INSERT WITH CHECK (app_rls_is_tenant_admin(tenant_id));
|
|
512
|
+
DROP POLICY IF EXISTS tenant_memberships_update_policy ON tenant_memberships;
|
|
513
|
+
CREATE POLICY tenant_memberships_update_policy ON tenant_memberships FOR UPDATE USING (app_rls_is_tenant_admin(tenant_id)) WITH CHECK (app_rls_is_tenant_admin(tenant_id));
|
|
514
|
+
DROP POLICY IF EXISTS tenant_memberships_delete_policy ON tenant_memberships;
|
|
515
|
+
CREATE POLICY tenant_memberships_delete_policy ON tenant_memberships FOR DELETE USING (app_rls_is_tenant_admin(tenant_id));
|
|
516
|
+
ALTER TABLE org_unit_memberships ENABLE ROW LEVEL SECURITY;
|
|
517
|
+
ALTER TABLE org_unit_memberships FORCE ROW LEVEL SECURITY;
|
|
518
|
+
DROP POLICY IF EXISTS org_unit_memberships_select_policy ON org_unit_memberships;
|
|
519
|
+
CREATE POLICY org_unit_memberships_select_policy ON org_unit_memberships FOR SELECT USING (user_id::text = app_rls_subject_id() OR app_rls_org_unit_permission(tenant_id, org_unit_id, 'namespace.admin') OR app_rls_org_unit_permission(tenant_id, org_unit_id, 'namespace.write') OR app_rls_org_unit_permission(tenant_id, org_unit_id, 'namespace.read'));
|
|
520
|
+
DROP POLICY IF EXISTS org_unit_memberships_insert_policy ON org_unit_memberships;
|
|
521
|
+
CREATE POLICY org_unit_memberships_insert_policy ON org_unit_memberships FOR INSERT WITH CHECK (app_rls_can_write_org_unit(tenant_id, org_unit_id));
|
|
522
|
+
DROP POLICY IF EXISTS org_unit_memberships_update_policy ON org_unit_memberships;
|
|
523
|
+
CREATE POLICY org_unit_memberships_update_policy ON org_unit_memberships FOR UPDATE USING (app_rls_can_write_org_unit(tenant_id, org_unit_id)) WITH CHECK (app_rls_can_write_org_unit(tenant_id, org_unit_id));
|
|
524
|
+
DROP POLICY IF EXISTS org_unit_memberships_delete_policy ON org_unit_memberships;
|
|
525
|
+
CREATE POLICY org_unit_memberships_delete_policy ON org_unit_memberships FOR DELETE USING (app_rls_can_write_org_unit(tenant_id, org_unit_id));
|
|
526
|
+
ALTER TABLE group_memberships ENABLE ROW LEVEL SECURITY;
|
|
527
|
+
ALTER TABLE group_memberships FORCE ROW LEVEL SECURITY;
|
|
528
|
+
DROP POLICY IF EXISTS group_memberships_select_policy ON group_memberships;
|
|
529
|
+
CREATE POLICY group_memberships_select_policy ON group_memberships FOR SELECT USING (app_rls_can_read_group(tenant_id, group_id));
|
|
530
|
+
DROP POLICY IF EXISTS group_memberships_insert_policy ON group_memberships;
|
|
531
|
+
CREATE POLICY group_memberships_insert_policy ON group_memberships FOR INSERT WITH CHECK (app_rls_can_write_group(tenant_id, group_id));
|
|
532
|
+
DROP POLICY IF EXISTS group_memberships_update_policy ON group_memberships;
|
|
533
|
+
CREATE POLICY group_memberships_update_policy ON group_memberships FOR UPDATE USING (app_rls_can_write_group(tenant_id, group_id)) WITH CHECK (app_rls_can_write_group(tenant_id, group_id));
|
|
534
|
+
DROP POLICY IF EXISTS group_memberships_delete_policy ON group_memberships;
|
|
535
|
+
CREATE POLICY group_memberships_delete_policy ON group_memberships FOR DELETE USING (app_rls_can_write_group(tenant_id, group_id));
|
|
536
|
+
ALTER TABLE permissions ENABLE ROW LEVEL SECURITY;
|
|
537
|
+
ALTER TABLE permissions FORCE ROW LEVEL SECURITY;
|
|
538
|
+
DROP POLICY IF EXISTS permissions_select_policy ON permissions;
|
|
539
|
+
CREATE POLICY permissions_select_policy ON permissions FOR SELECT USING (app_rls_is_admin());
|
|
540
|
+
DROP POLICY IF EXISTS permissions_insert_policy ON permissions;
|
|
541
|
+
CREATE POLICY permissions_insert_policy ON permissions FOR INSERT WITH CHECK (app_rls_is_admin());
|
|
542
|
+
DROP POLICY IF EXISTS permissions_update_policy ON permissions;
|
|
543
|
+
CREATE POLICY permissions_update_policy ON permissions FOR UPDATE USING (app_rls_is_admin()) WITH CHECK (app_rls_is_admin());
|
|
544
|
+
DROP POLICY IF EXISTS permissions_delete_policy ON permissions;
|
|
545
|
+
CREATE POLICY permissions_delete_policy ON permissions FOR DELETE USING (app_rls_is_admin());
|
|
546
|
+
ALTER TABLE roles ENABLE ROW LEVEL SECURITY;
|
|
547
|
+
ALTER TABLE roles FORCE ROW LEVEL SECURITY;
|
|
548
|
+
DROP POLICY IF EXISTS roles_select_policy ON roles;
|
|
549
|
+
CREATE POLICY roles_select_policy ON roles FOR SELECT USING ((tenant_id IS NOT NULL AND app_rls_is_tenant_admin(tenant_id)) OR (tenant_id IS NULL AND app_rls_is_admin()));
|
|
550
|
+
DROP POLICY IF EXISTS roles_insert_policy ON roles;
|
|
551
|
+
CREATE POLICY roles_insert_policy ON roles FOR INSERT WITH CHECK ((tenant_id IS NOT NULL AND app_rls_is_tenant_admin(tenant_id)) OR (tenant_id IS NULL AND app_rls_is_admin()));
|
|
552
|
+
DROP POLICY IF EXISTS roles_update_policy ON roles;
|
|
553
|
+
CREATE POLICY roles_update_policy ON roles FOR UPDATE USING ((tenant_id IS NOT NULL AND app_rls_is_tenant_admin(tenant_id)) OR (tenant_id IS NULL AND app_rls_is_admin())) WITH CHECK ((tenant_id IS NOT NULL AND app_rls_is_tenant_admin(tenant_id)) OR (tenant_id IS NULL AND app_rls_is_admin()));
|
|
554
|
+
DROP POLICY IF EXISTS roles_delete_policy ON roles;
|
|
555
|
+
CREATE POLICY roles_delete_policy ON roles FOR DELETE USING ((tenant_id IS NOT NULL AND app_rls_is_tenant_admin(tenant_id)) OR (tenant_id IS NULL AND app_rls_is_admin()));
|
|
556
|
+
ALTER TABLE role_permissions ENABLE ROW LEVEL SECURITY;
|
|
557
|
+
ALTER TABLE role_permissions FORCE ROW LEVEL SECURITY;
|
|
558
|
+
DROP POLICY IF EXISTS role_permissions_select_policy ON role_permissions;
|
|
559
|
+
CREATE POLICY role_permissions_select_policy ON role_permissions FOR SELECT USING (app_rls_is_role_admin(role_id));
|
|
560
|
+
DROP POLICY IF EXISTS role_permissions_insert_policy ON role_permissions;
|
|
561
|
+
CREATE POLICY role_permissions_insert_policy ON role_permissions FOR INSERT WITH CHECK (app_rls_is_role_admin(role_id));
|
|
562
|
+
DROP POLICY IF EXISTS role_permissions_update_policy ON role_permissions;
|
|
563
|
+
CREATE POLICY role_permissions_update_policy ON role_permissions FOR UPDATE USING (app_rls_is_role_admin(role_id)) WITH CHECK (app_rls_is_role_admin(role_id));
|
|
564
|
+
DROP POLICY IF EXISTS role_permissions_delete_policy ON role_permissions;
|
|
565
|
+
CREATE POLICY role_permissions_delete_policy ON role_permissions FOR DELETE USING (app_rls_is_role_admin(role_id));
|
|
566
|
+
ALTER TABLE role_assignments ENABLE ROW LEVEL SECURITY;
|
|
567
|
+
ALTER TABLE role_assignments FORCE ROW LEVEL SECURITY;
|
|
568
|
+
DROP POLICY IF EXISTS role_assignments_select_policy ON role_assignments;
|
|
569
|
+
CREATE POLICY role_assignments_select_policy ON role_assignments FOR SELECT USING (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id));
|
|
570
|
+
DROP POLICY IF EXISTS role_assignments_insert_policy ON role_assignments;
|
|
571
|
+
CREATE POLICY role_assignments_insert_policy ON role_assignments FOR INSERT WITH CHECK (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id));
|
|
572
|
+
DROP POLICY IF EXISTS role_assignments_update_policy ON role_assignments;
|
|
573
|
+
CREATE POLICY role_assignments_update_policy ON role_assignments FOR UPDATE USING (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id)) WITH CHECK (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id));
|
|
574
|
+
DROP POLICY IF EXISTS role_assignments_delete_policy ON role_assignments;
|
|
575
|
+
CREATE POLICY role_assignments_delete_policy ON role_assignments FOR DELETE USING (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id));
|
|
576
|
+
ALTER TABLE inheritance_blocks ENABLE ROW LEVEL SECURITY;
|
|
577
|
+
ALTER TABLE inheritance_blocks FORCE ROW LEVEL SECURITY;
|
|
578
|
+
DROP POLICY IF EXISTS inheritance_blocks_select_policy ON inheritance_blocks;
|
|
579
|
+
CREATE POLICY inheritance_blocks_select_policy ON inheritance_blocks FOR SELECT USING (app_rls_is_org_unit_admin(tenant_id, org_unit_id));
|
|
580
|
+
DROP POLICY IF EXISTS inheritance_blocks_insert_policy ON inheritance_blocks;
|
|
581
|
+
CREATE POLICY inheritance_blocks_insert_policy ON inheritance_blocks FOR INSERT WITH CHECK (app_rls_is_org_unit_admin(tenant_id, org_unit_id));
|
|
582
|
+
DROP POLICY IF EXISTS inheritance_blocks_update_policy ON inheritance_blocks;
|
|
583
|
+
CREATE POLICY inheritance_blocks_update_policy ON inheritance_blocks FOR UPDATE USING (app_rls_is_org_unit_admin(tenant_id, org_unit_id)) WITH CHECK (app_rls_is_org_unit_admin(tenant_id, org_unit_id));
|
|
584
|
+
DROP POLICY IF EXISTS inheritance_blocks_delete_policy ON inheritance_blocks;
|
|
585
|
+
CREATE POLICY inheritance_blocks_delete_policy ON inheritance_blocks FOR DELETE USING (app_rls_is_org_unit_admin(tenant_id, org_unit_id));
|
|
586
|
+
ALTER TABLE protected_resources ENABLE ROW LEVEL SECURITY;
|
|
587
|
+
ALTER TABLE protected_resources FORCE ROW LEVEL SECURITY;
|
|
588
|
+
DROP POLICY IF EXISTS protected_resources_select_policy ON protected_resources;
|
|
589
|
+
CREATE POLICY protected_resources_select_policy ON protected_resources FOR SELECT USING (app_rls_can_read_resource(tenant_id, id));
|
|
590
|
+
DROP POLICY IF EXISTS protected_resources_insert_policy ON protected_resources;
|
|
591
|
+
CREATE POLICY protected_resources_insert_policy ON protected_resources FOR INSERT WITH CHECK (app_rls_can_write_tenant(tenant_id) OR (org_unit_id IS NOT NULL AND app_rls_can_write_org_unit(tenant_id, org_unit_id)));
|
|
592
|
+
DROP POLICY IF EXISTS protected_resources_update_policy ON protected_resources;
|
|
593
|
+
CREATE POLICY protected_resources_update_policy ON protected_resources FOR UPDATE USING (app_rls_can_write_resource(tenant_id, id)) WITH CHECK (app_rls_can_write_resource(tenant_id, id));
|
|
594
|
+
DROP POLICY IF EXISTS protected_resources_delete_policy ON protected_resources;
|
|
595
|
+
CREATE POLICY protected_resources_delete_policy ON protected_resources FOR DELETE USING (app_rls_can_write_resource(tenant_id, id));
|
|
596
|
+
ALTER TABLE resource_grants ENABLE ROW LEVEL SECURITY;
|
|
597
|
+
ALTER TABLE resource_grants FORCE ROW LEVEL SECURITY;
|
|
598
|
+
DROP POLICY IF EXISTS resource_grants_select_policy ON resource_grants;
|
|
599
|
+
CREATE POLICY resource_grants_select_policy ON resource_grants FOR SELECT USING (principal_id = app_rls_principal_id() OR app_rls_can_read_resource(tenant_id, resource_id));
|
|
600
|
+
DROP POLICY IF EXISTS resource_grants_insert_policy ON resource_grants;
|
|
601
|
+
CREATE POLICY resource_grants_insert_policy ON resource_grants FOR INSERT WITH CHECK (app_rls_can_write_resource(tenant_id, resource_id));
|
|
602
|
+
DROP POLICY IF EXISTS resource_grants_update_policy ON resource_grants;
|
|
603
|
+
CREATE POLICY resource_grants_update_policy ON resource_grants FOR UPDATE USING (app_rls_can_write_resource(tenant_id, resource_id)) WITH CHECK (app_rls_can_write_resource(tenant_id, resource_id));
|
|
604
|
+
DROP POLICY IF EXISTS resource_grants_delete_policy ON resource_grants;
|
|
605
|
+
CREATE POLICY resource_grants_delete_policy ON resource_grants FOR DELETE USING (app_rls_can_write_resource(tenant_id, resource_id));
|
|
606
|
+
ALTER TABLE effective_permissions ENABLE ROW LEVEL SECURITY;
|
|
607
|
+
ALTER TABLE effective_permissions FORCE ROW LEVEL SECURITY;
|
|
608
|
+
DROP POLICY IF EXISTS effective_permissions_select_policy ON effective_permissions;
|
|
609
|
+
CREATE POLICY effective_permissions_select_policy ON effective_permissions FOR SELECT USING (principal_id = app_rls_principal_id() OR app_rls_is_scope_admin(tenant_id, scope_kind, scope_id));
|
|
610
|
+
DROP POLICY IF EXISTS effective_permissions_insert_policy ON effective_permissions;
|
|
611
|
+
CREATE POLICY effective_permissions_insert_policy ON effective_permissions FOR INSERT WITH CHECK (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id));
|
|
612
|
+
DROP POLICY IF EXISTS effective_permissions_update_policy ON effective_permissions;
|
|
613
|
+
CREATE POLICY effective_permissions_update_policy ON effective_permissions FOR UPDATE USING (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id)) WITH CHECK (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id));
|
|
614
|
+
DROP POLICY IF EXISTS effective_permissions_delete_policy ON effective_permissions;
|
|
615
|
+
CREATE POLICY effective_permissions_delete_policy ON effective_permissions FOR DELETE USING (app_rls_is_scope_admin(tenant_id, scope_kind, scope_id));
|
|
616
|
+
ALTER TABLE storage_bindings ENABLE ROW LEVEL SECURITY;
|
|
617
|
+
ALTER TABLE storage_bindings FORCE ROW LEVEL SECURITY;
|
|
618
|
+
DROP POLICY IF EXISTS storage_bindings_select_policy ON storage_bindings;
|
|
619
|
+
CREATE POLICY storage_bindings_select_policy ON storage_bindings FOR SELECT USING (app_rls_is_tenant_admin(tenant_id));
|
|
620
|
+
DROP POLICY IF EXISTS storage_bindings_insert_policy ON storage_bindings;
|
|
621
|
+
CREATE POLICY storage_bindings_insert_policy ON storage_bindings FOR INSERT WITH CHECK (app_rls_is_tenant_admin(tenant_id));
|
|
622
|
+
DROP POLICY IF EXISTS storage_bindings_update_policy ON storage_bindings;
|
|
623
|
+
CREATE POLICY storage_bindings_update_policy ON storage_bindings FOR UPDATE USING (app_rls_is_tenant_admin(tenant_id)) WITH CHECK (app_rls_is_tenant_admin(tenant_id));
|
|
624
|
+
DROP POLICY IF EXISTS storage_bindings_delete_policy ON storage_bindings;
|
|
625
|
+
CREATE POLICY storage_bindings_delete_policy ON storage_bindings FOR DELETE USING (app_rls_is_tenant_admin(tenant_id));
|
|
626
|
+
ALTER TABLE tenant_profiles ENABLE ROW LEVEL SECURITY;
|
|
627
|
+
ALTER TABLE tenant_profiles FORCE ROW LEVEL SECURITY;
|
|
628
|
+
DROP POLICY IF EXISTS tenant_profiles_select_policy ON tenant_profiles;
|
|
629
|
+
CREATE POLICY tenant_profiles_select_policy ON tenant_profiles FOR SELECT USING (app_rls_is_tenant_member(tenant_id) OR app_rls_can_read_tenant(tenant_id));
|
|
630
|
+
DROP POLICY IF EXISTS tenant_profiles_insert_policy ON tenant_profiles;
|
|
631
|
+
CREATE POLICY tenant_profiles_insert_policy ON tenant_profiles FOR INSERT WITH CHECK (app_rls_is_tenant_admin(tenant_id));
|
|
632
|
+
DROP POLICY IF EXISTS tenant_profiles_update_policy ON tenant_profiles;
|
|
633
|
+
CREATE POLICY tenant_profiles_update_policy ON tenant_profiles FOR UPDATE USING (app_rls_is_tenant_admin(tenant_id)) WITH CHECK (app_rls_is_tenant_admin(tenant_id));
|
|
634
|
+
DROP POLICY IF EXISTS tenant_profiles_delete_policy ON tenant_profiles;
|
|
635
|
+
CREATE POLICY tenant_profiles_delete_policy ON tenant_profiles FOR DELETE USING (app_rls_is_tenant_admin(tenant_id));
|
|
636
|
+
ALTER TABLE org_unit_profiles ENABLE ROW LEVEL SECURITY;
|
|
637
|
+
ALTER TABLE org_unit_profiles FORCE ROW LEVEL SECURITY;
|
|
638
|
+
DROP POLICY IF EXISTS org_unit_profiles_select_policy ON org_unit_profiles;
|
|
639
|
+
CREATE POLICY org_unit_profiles_select_policy ON org_unit_profiles FOR SELECT USING (app_rls_can_read_org_unit(app_rls_org_unit_tenant(org_unit_id), org_unit_id));
|
|
640
|
+
DROP POLICY IF EXISTS org_unit_profiles_insert_policy ON org_unit_profiles;
|
|
641
|
+
CREATE POLICY org_unit_profiles_insert_policy ON org_unit_profiles FOR INSERT WITH CHECK (app_rls_can_write_org_unit(app_rls_org_unit_tenant(org_unit_id), org_unit_id));
|
|
642
|
+
DROP POLICY IF EXISTS org_unit_profiles_update_policy ON org_unit_profiles;
|
|
643
|
+
CREATE POLICY org_unit_profiles_update_policy ON org_unit_profiles FOR UPDATE USING (app_rls_can_write_org_unit(app_rls_org_unit_tenant(org_unit_id), org_unit_id)) WITH CHECK (app_rls_can_write_org_unit(app_rls_org_unit_tenant(org_unit_id), org_unit_id));
|
|
644
|
+
DROP POLICY IF EXISTS org_unit_profiles_delete_policy ON org_unit_profiles;
|
|
645
|
+
CREATE POLICY org_unit_profiles_delete_policy ON org_unit_profiles FOR DELETE USING (app_rls_can_write_org_unit(app_rls_org_unit_tenant(org_unit_id), org_unit_id));
|
|
646
|
+
ALTER TABLE credentials ENABLE ROW LEVEL SECURITY;
|
|
647
|
+
ALTER TABLE credentials FORCE ROW LEVEL SECURITY;
|
|
648
|
+
DROP POLICY IF EXISTS credentials_select_policy ON credentials;
|
|
649
|
+
CREATE POLICY credentials_select_policy ON credentials FOR SELECT USING (owner_principal_id = app_rls_principal_id() OR app_rls_can_read_credential_scope(tenant_id, org_unit_id));
|
|
650
|
+
DROP POLICY IF EXISTS credentials_insert_policy ON credentials;
|
|
651
|
+
CREATE POLICY credentials_insert_policy ON credentials FOR INSERT WITH CHECK (app_rls_can_write_credential_scope(tenant_id, org_unit_id));
|
|
652
|
+
DROP POLICY IF EXISTS credentials_update_policy ON credentials;
|
|
653
|
+
CREATE POLICY credentials_update_policy ON credentials FOR UPDATE USING (app_rls_can_write_credential_scope(tenant_id, org_unit_id)) WITH CHECK (app_rls_can_write_credential_scope(tenant_id, org_unit_id));
|
|
654
|
+
DROP POLICY IF EXISTS credentials_delete_policy ON credentials;
|
|
655
|
+
CREATE POLICY credentials_delete_policy ON credentials FOR DELETE USING (app_rls_can_write_credential_scope(tenant_id, org_unit_id));
|
|
656
|
+
ALTER TABLE secrets ENABLE ROW LEVEL SECURITY;
|
|
657
|
+
ALTER TABLE secrets FORCE ROW LEVEL SECURITY;
|
|
658
|
+
DROP POLICY IF EXISTS secrets_select_policy ON secrets;
|
|
659
|
+
CREATE POLICY secrets_select_policy ON secrets FOR SELECT USING (owner_principal_id = app_rls_principal_id() OR app_rls_can_read_credential_scope(tenant_id, org_unit_id) OR (tenant_id IS NULL AND app_rls_is_admin()));
|
|
660
|
+
DROP POLICY IF EXISTS secrets_insert_policy ON secrets;
|
|
661
|
+
CREATE POLICY secrets_insert_policy ON secrets FOR INSERT WITH CHECK (app_rls_can_write_credential_scope(tenant_id, org_unit_id) OR (tenant_id IS NULL AND app_rls_is_admin()));
|
|
662
|
+
DROP POLICY IF EXISTS secrets_update_policy ON secrets;
|
|
663
|
+
CREATE POLICY secrets_update_policy ON secrets FOR UPDATE USING (app_rls_can_write_credential_scope(tenant_id, org_unit_id) OR (tenant_id IS NULL AND app_rls_is_admin())) WITH CHECK (app_rls_can_write_credential_scope(tenant_id, org_unit_id) OR (tenant_id IS NULL AND app_rls_is_admin()));
|
|
664
|
+
DROP POLICY IF EXISTS secrets_delete_policy ON secrets;
|
|
665
|
+
CREATE POLICY secrets_delete_policy ON secrets FOR DELETE USING (app_rls_can_write_credential_scope(tenant_id, org_unit_id) OR (tenant_id IS NULL AND app_rls_is_admin()));
|