@contember/engine-tenant-api 2.2.0-alpha.1 → 2.2.0-alpha.10
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/CLAUDE.md +60 -7
- package/dist/development/index.cjs +69 -0
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +71 -2
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/TenantContainer.cjs +39 -10
- package/dist/development/src/TenantContainer.cjs.map +1 -1
- package/dist/development/src/TenantContainer.js +39 -10
- package/dist/development/src/TenantContainer.js.map +1 -1
- package/dist/development/src/bridges/system/IdentityFetcher.cjs +9 -7
- package/dist/development/src/bridges/system/IdentityFetcher.cjs.map +1 -1
- package/dist/development/src/bridges/system/IdentityFetcher.js +9 -7
- package/dist/development/src/bridges/system/IdentityFetcher.js.map +1 -1
- package/dist/development/src/migrations/2026-06-18-120000-idp-claim-mapping.cjs +10 -0
- package/dist/development/src/migrations/2026-06-18-120000-idp-claim-mapping.cjs.map +1 -0
- package/dist/development/src/migrations/2026-06-18-120000-idp-claim-mapping.js +11 -0
- package/dist/development/src/migrations/2026-06-18-120000-idp-claim-mapping.js.map +1 -0
- package/dist/development/src/migrations/2026-08-03-120000-person-enable-auth-log.cjs +9 -0
- package/dist/development/src/migrations/2026-08-03-120000-person-enable-auth-log.cjs.map +1 -0
- package/dist/development/src/migrations/2026-08-03-120000-person-enable-auth-log.js +10 -0
- package/dist/development/src/migrations/2026-08-03-120000-person-enable-auth-log.js.map +1 -0
- package/dist/development/src/migrations/2026-08-04-120000-config-panel.cjs +11 -0
- package/dist/development/src/migrations/2026-08-04-120000-config-panel.cjs.map +1 -0
- package/dist/development/src/migrations/2026-08-04-120000-config-panel.js +12 -0
- package/dist/development/src/migrations/2026-08-04-120000-config-panel.js.map +1 -0
- package/dist/development/src/migrations/2026-09-04-120000-idp-disable-local-authentication.cjs +18 -0
- package/dist/development/src/migrations/2026-09-04-120000-idp-disable-local-authentication.cjs.map +1 -0
- package/dist/development/src/migrations/2026-09-04-120000-idp-disable-local-authentication.js +19 -0
- package/dist/development/src/migrations/2026-09-04-120000-idp-disable-local-authentication.js.map +1 -0
- package/dist/development/src/migrations/2026-09-11-120000-custom-role.cjs +18 -0
- package/dist/development/src/migrations/2026-09-11-120000-custom-role.cjs.map +1 -0
- package/dist/development/src/migrations/2026-09-11-120000-custom-role.js +19 -0
- package/dist/development/src/migrations/2026-09-11-120000-custom-role.js.map +1 -0
- package/dist/development/src/migrations/runner.cjs +17 -5
- package/dist/development/src/migrations/runner.cjs.map +1 -1
- package/dist/development/src/migrations/runner.js +17 -5
- package/dist/development/src/migrations/runner.js.map +1 -1
- package/dist/development/src/migrations/snapshot.cjs +22 -2
- package/dist/development/src/migrations/snapshot.cjs.map +1 -1
- package/dist/development/src/migrations/snapshot.js +22 -2
- package/dist/development/src/migrations/snapshot.js.map +1 -1
- package/dist/development/src/model/authorization/CustomRoleAuthorizator.cjs +65 -0
- package/dist/development/src/model/authorization/CustomRoleAuthorizator.cjs.map +1 -0
- package/dist/development/src/model/authorization/CustomRoleAuthorizator.js +65 -0
- package/dist/development/src/model/authorization/CustomRoleAuthorizator.js.map +1 -0
- package/dist/development/src/model/authorization/CustomRolePermissions.cjs +404 -0
- package/dist/development/src/model/authorization/CustomRolePermissions.cjs.map +1 -0
- package/dist/development/src/model/authorization/CustomRolePermissions.js +387 -0
- package/dist/development/src/model/authorization/CustomRolePermissions.js.map +1 -0
- package/dist/development/src/model/authorization/PermissionActions.cjs +19 -16
- package/dist/development/src/model/authorization/PermissionActions.cjs.map +1 -1
- package/dist/development/src/model/authorization/PermissionActions.js +19 -16
- package/dist/development/src/model/authorization/PermissionActions.js.map +1 -1
- package/dist/development/src/model/authorization/PermissionContextFactory.cjs +20 -2
- package/dist/development/src/model/authorization/PermissionContextFactory.cjs.map +1 -1
- package/dist/development/src/model/authorization/PermissionContextFactory.js +20 -2
- package/dist/development/src/model/authorization/PermissionContextFactory.js.map +1 -1
- package/dist/development/src/model/authorization/PermissionsFactory.cjs +32 -24
- package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
- package/dist/development/src/model/authorization/PermissionsFactory.js +33 -25
- package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
- package/dist/development/src/model/authorization/Roles.cjs +8 -0
- package/dist/development/src/model/authorization/Roles.cjs.map +1 -1
- package/dist/development/src/model/authorization/Roles.js +8 -0
- package/dist/development/src/model/authorization/Roles.js.map +1 -1
- package/dist/development/src/model/authorization/TargetIdentityPermission.cjs +35 -0
- package/dist/development/src/model/authorization/TargetIdentityPermission.cjs.map +1 -0
- package/dist/development/src/model/authorization/TargetIdentityPermission.js +35 -0
- package/dist/development/src/model/authorization/TargetIdentityPermission.js.map +1 -0
- package/dist/development/src/model/commands/apiKey/ApiKeyHelper.cjs +19 -0
- package/dist/development/src/model/commands/apiKey/ApiKeyHelper.cjs.map +1 -1
- package/dist/development/src/model/commands/apiKey/ApiKeyHelper.js +19 -0
- package/dist/development/src/model/commands/apiKey/ApiKeyHelper.js.map +1 -1
- package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.cjs +4 -2
- package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.js +5 -3
- package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.js.map +1 -1
- package/dist/development/src/model/commands/apiKey/ProlongApiKeyCommand.cjs +9 -10
- package/dist/development/src/model/commands/apiKey/ProlongApiKeyCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/apiKey/ProlongApiKeyCommand.js +10 -11
- package/dist/development/src/model/commands/apiKey/ProlongApiKeyCommand.js.map +1 -1
- package/dist/development/src/model/commands/authLog/CreateAuthLogEntryCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/authLog/CreateAuthLogEntryCommand.js.map +1 -1
- package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs +5 -3
- package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js +5 -3
- package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -1
- package/dist/development/src/model/commands/customRole/CreateCustomRoleCommand.cjs +23 -0
- package/dist/development/src/model/commands/customRole/CreateCustomRoleCommand.cjs.map +1 -0
- package/dist/development/src/model/commands/customRole/CreateCustomRoleCommand.js +23 -0
- package/dist/development/src/model/commands/customRole/CreateCustomRoleCommand.js.map +1 -0
- package/dist/development/src/model/commands/customRole/DeleteCustomRoleCommand.cjs +14 -0
- package/dist/development/src/model/commands/customRole/DeleteCustomRoleCommand.cjs.map +1 -0
- package/dist/development/src/model/commands/customRole/DeleteCustomRoleCommand.js +14 -0
- package/dist/development/src/model/commands/customRole/DeleteCustomRoleCommand.js.map +1 -0
- package/dist/development/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.cjs +16 -0
- package/dist/development/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.cjs.map +1 -0
- package/dist/development/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.js +16 -0
- package/dist/development/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.js.map +1 -0
- package/dist/development/src/model/commands/customRole/UpdateCustomRoleCommand.cjs +19 -0
- package/dist/development/src/model/commands/customRole/UpdateCustomRoleCommand.cjs.map +1 -0
- package/dist/development/src/model/commands/customRole/UpdateCustomRoleCommand.js +19 -0
- package/dist/development/src/model/commands/customRole/UpdateCustomRoleCommand.js.map +1 -0
- package/dist/development/src/model/commands/identity/PatchIdentityGlobalRoles.cjs +1 -1
- package/dist/development/src/model/commands/identity/PatchIdentityGlobalRoles.cjs.map +1 -1
- package/dist/development/src/model/commands/identity/PatchIdentityGlobalRoles.js +1 -1
- package/dist/development/src/model/commands/identity/PatchIdentityGlobalRoles.js.map +1 -1
- package/dist/development/src/model/commands/idp/ClaimIdpRevalidationCommand.cjs +3 -7
- package/dist/development/src/model/commands/idp/ClaimIdpRevalidationCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/idp/ClaimIdpRevalidationCommand.js +3 -7
- package/dist/development/src/model/commands/idp/ClaimIdpRevalidationCommand.js.map +1 -1
- package/dist/development/src/model/commands/idp/CreateIdpCommand.cjs +8 -2
- package/dist/development/src/model/commands/idp/CreateIdpCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/idp/CreateIdpCommand.js +8 -2
- package/dist/development/src/model/commands/idp/CreateIdpCommand.js.map +1 -1
- package/dist/development/src/model/commands/idp/CreateIdpSessionCommand.cjs +4 -1
- package/dist/development/src/model/commands/idp/CreateIdpSessionCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/idp/CreateIdpSessionCommand.js +5 -2
- package/dist/development/src/model/commands/idp/CreateIdpSessionCommand.js.map +1 -1
- package/dist/development/src/model/commands/idp/UpdateIdpCommand.cjs +6 -2
- package/dist/development/src/model/commands/idp/UpdateIdpCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/idp/UpdateIdpCommand.js +6 -2
- package/dist/development/src/model/commands/idp/UpdateIdpCommand.js.map +1 -1
- package/dist/development/src/model/commands/idp/UpdateIdpSessionCommand.cjs +2 -1
- package/dist/development/src/model/commands/idp/UpdateIdpSessionCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/idp/UpdateIdpSessionCommand.js +3 -2
- package/dist/development/src/model/commands/idp/UpdateIdpSessionCommand.js.map +1 -1
- package/dist/development/src/model/commands/membership/{RemoveProjectMembershipsCommand.cjs → RemoveProjectMembershipCommand.cjs} +1 -1
- package/dist/development/src/model/commands/membership/RemoveProjectMembershipCommand.cjs.map +1 -0
- package/dist/development/src/model/commands/membership/{RemoveProjectMembershipsCommand.js → RemoveProjectMembershipCommand.js} +1 -1
- package/dist/development/src/model/commands/membership/RemoveProjectMembershipCommand.js.map +1 -0
- package/dist/development/src/model/commands/membership/UpdateProjectMemberCommand.cjs +2 -2
- package/dist/development/src/model/commands/membership/UpdateProjectMemberCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/membership/UpdateProjectMemberCommand.js +1 -1
- package/dist/development/src/model/commands/membership/UpdateProjectMemberCommand.js.map +1 -1
- package/dist/development/src/model/commands/person/CreatePersonCommand.cjs +1 -0
- package/dist/development/src/model/commands/person/CreatePersonCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/person/CreatePersonCommand.js +1 -0
- package/dist/development/src/model/commands/person/CreatePersonCommand.js.map +1 -1
- package/dist/development/src/model/commands/person/EnablePersonCommand.cjs +17 -0
- package/dist/development/src/model/commands/person/EnablePersonCommand.cjs.map +1 -0
- package/dist/development/src/model/commands/person/EnablePersonCommand.js +17 -0
- package/dist/development/src/model/commands/person/EnablePersonCommand.js.map +1 -0
- package/dist/development/src/model/commands/person/SetMfaGraceUntilCommand.cjs +3 -3
- package/dist/development/src/model/commands/person/SetMfaGraceUntilCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/person/SetMfaGraceUntilCommand.js +4 -4
- package/dist/development/src/model/commands/person/SetMfaGraceUntilCommand.js.map +1 -1
- package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs +2 -3
- package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/personToken/ResetPasswordCommand.js +2 -3
- package/dist/development/src/model/commands/personToken/ResetPasswordCommand.js.map +1 -1
- package/dist/development/src/model/commands/personToken/SaveEmailOtpTokenCommand.cjs +3 -3
- package/dist/development/src/model/commands/personToken/SaveEmailOtpTokenCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/personToken/SaveEmailOtpTokenCommand.js +4 -4
- package/dist/development/src/model/commands/personToken/SaveEmailOtpTokenCommand.js.map +1 -1
- package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.cjs +12 -6
- package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.js +13 -7
- package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.js.map +1 -1
- package/dist/development/src/model/commands/rateLimit/RecordRateLimitEventCommand.cjs +1 -2
- package/dist/development/src/model/commands/rateLimit/RecordRateLimitEventCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/rateLimit/RecordRateLimitEventCommand.js +1 -2
- package/dist/development/src/model/commands/rateLimit/RecordRateLimitEventCommand.js.map +1 -1
- package/dist/development/src/model/mailing/UserMailer.cjs +2 -1
- package/dist/development/src/model/mailing/UserMailer.cjs.map +1 -1
- package/dist/development/src/model/mailing/UserMailer.js +2 -1
- package/dist/development/src/model/mailing/UserMailer.js.map +1 -1
- package/dist/development/src/model/queries/apiKey/ApiKeyQuery.cjs +8 -1
- package/dist/development/src/model/queries/apiKey/ApiKeyQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/apiKey/ApiKeyQuery.js +9 -2
- package/dist/development/src/model/queries/apiKey/ApiKeyQuery.js.map +1 -1
- package/dist/development/src/model/queries/apiKey/ApiKeySessionsQuery.cjs +2 -3
- package/dist/development/src/model/queries/apiKey/ApiKeySessionsQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/apiKey/ApiKeySessionsQuery.js +2 -3
- package/dist/development/src/model/queries/apiKey/ApiKeySessionsQuery.js.map +1 -1
- package/dist/development/src/model/queries/authLog/NextLoginAttemptQuery.cjs +12 -10
- package/dist/development/src/model/queries/authLog/NextLoginAttemptQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/authLog/NextLoginAttemptQuery.js +12 -10
- package/dist/development/src/model/queries/authLog/NextLoginAttemptQuery.js.map +1 -1
- package/dist/development/src/model/queries/authLog/NextMailAttemptQuery.cjs +10 -8
- package/dist/development/src/model/queries/authLog/NextMailAttemptQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/authLog/NextMailAttemptQuery.js +10 -8
- package/dist/development/src/model/queries/authLog/NextMailAttemptQuery.js.map +1 -1
- package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs +4 -0
- package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/configuration/ConfigurationQuery.js +4 -0
- package/dist/development/src/model/queries/configuration/ConfigurationQuery.js.map +1 -1
- package/dist/development/src/model/queries/customRole/CustomRolesQuery.cjs +23 -0
- package/dist/development/src/model/queries/customRole/CustomRolesQuery.cjs.map +1 -0
- package/dist/development/src/model/queries/customRole/CustomRolesQuery.js +23 -0
- package/dist/development/src/model/queries/customRole/CustomRolesQuery.js.map +1 -0
- package/dist/development/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.cjs +15 -0
- package/dist/development/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.cjs.map +1 -0
- package/dist/development/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.js +15 -0
- package/dist/development/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.js.map +1 -0
- package/dist/development/src/model/queries/identity/IdentityQuery.cjs +7 -2
- package/dist/development/src/model/queries/identity/IdentityQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/identity/IdentityQuery.js +7 -2
- package/dist/development/src/model/queries/identity/IdentityQuery.js.map +1 -1
- package/dist/development/src/model/queries/idp/LocalAuthDisablingIdpsQuery.cjs +21 -0
- package/dist/development/src/model/queries/idp/LocalAuthDisablingIdpsQuery.cjs.map +1 -0
- package/dist/development/src/model/queries/idp/LocalAuthDisablingIdpsQuery.js +21 -0
- package/dist/development/src/model/queries/idp/LocalAuthDisablingIdpsQuery.js.map +1 -0
- package/dist/development/src/model/queries/idp/PersonIdentityProvidersQuery.cjs +1 -1
- package/dist/development/src/model/queries/idp/PersonIdentityProvidersQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/idp/PersonIdentityProvidersQuery.js +1 -1
- package/dist/development/src/model/queries/idp/PersonIdentityProvidersQuery.js.map +1 -1
- package/dist/development/src/model/queries/idp/helpers.cjs +3 -3
- package/dist/development/src/model/queries/idp/helpers.cjs.map +1 -1
- package/dist/development/src/model/queries/idp/helpers.js +3 -3
- package/dist/development/src/model/queries/idp/helpers.js.map +1 -1
- package/dist/development/src/model/queries/membership/IdentityHasProjectMembershipsQuery.cjs +15 -0
- package/dist/development/src/model/queries/membership/IdentityHasProjectMembershipsQuery.cjs.map +1 -0
- package/dist/development/src/model/queries/membership/IdentityHasProjectMembershipsQuery.js +15 -0
- package/dist/development/src/model/queries/membership/IdentityHasProjectMembershipsQuery.js.map +1 -0
- package/dist/development/src/model/queries/membership/ProjectMembersQuery.cjs +1 -1
- package/dist/development/src/model/queries/membership/ProjectMembersQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/membership/ProjectMembersQuery.js +1 -1
- package/dist/development/src/model/queries/membership/ProjectMembersQuery.js.map +1 -1
- package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.cjs +2 -2
- package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.cjs.map +1 -1
- package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.js +2 -2
- package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.js.map +1 -1
- package/dist/development/src/model/queries/personToken/PersonTokenQuery.cjs +1 -1
- package/dist/development/src/model/queries/personToken/PersonTokenQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/personToken/PersonTokenQuery.js +1 -1
- package/dist/development/src/model/queries/personToken/PersonTokenQuery.js.map +1 -1
- package/dist/development/src/model/queries/project/ProjectsByIdentityQuery.cjs +4 -1
- package/dist/development/src/model/queries/project/ProjectsByIdentityQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/project/ProjectsByIdentityQuery.js +4 -1
- package/dist/development/src/model/queries/project/ProjectsByIdentityQuery.js.map +1 -1
- package/dist/development/src/model/queries/rateLimit/RateLimitCountQuery.cjs +3 -3
- package/dist/development/src/model/queries/rateLimit/RateLimitCountQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/rateLimit/RateLimitCountQuery.js +3 -3
- package/dist/development/src/model/queries/rateLimit/RateLimitCountQuery.js.map +1 -1
- package/dist/development/src/model/service/AuthLogService.cjs +8 -2
- package/dist/development/src/model/service/AuthLogService.cjs.map +1 -1
- package/dist/development/src/model/service/AuthLogService.js +8 -2
- package/dist/development/src/model/service/AuthLogService.js.map +1 -1
- package/dist/development/src/model/service/AuthPolicyManager.cjs +2 -1
- package/dist/development/src/model/service/AuthPolicyManager.cjs.map +1 -1
- package/dist/development/src/model/service/AuthPolicyManager.js +2 -1
- package/dist/development/src/model/service/AuthPolicyManager.js.map +1 -1
- package/dist/development/src/model/service/AuthPolicyResolver.cjs +2 -1
- package/dist/development/src/model/service/AuthPolicyResolver.cjs.map +1 -1
- package/dist/development/src/model/service/AuthPolicyResolver.js +2 -1
- package/dist/development/src/model/service/AuthPolicyResolver.js.map +1 -1
- package/dist/development/src/model/service/CustomRoleManager.cjs +170 -0
- package/dist/development/src/model/service/CustomRoleManager.cjs.map +1 -0
- package/dist/development/src/model/service/CustomRoleManager.js +170 -0
- package/dist/development/src/model/service/CustomRoleManager.js.map +1 -0
- package/dist/development/src/model/service/EmailChangeManager.cjs +5 -4
- package/dist/development/src/model/service/EmailChangeManager.cjs.map +1 -1
- package/dist/development/src/model/service/EmailChangeManager.js +5 -4
- package/dist/development/src/model/service/EmailChangeManager.js.map +1 -1
- package/dist/development/src/model/service/EmailOtpManager.cjs +0 -1
- package/dist/development/src/model/service/EmailOtpManager.cjs.map +1 -1
- package/dist/development/src/model/service/EmailOtpManager.js +0 -1
- package/dist/development/src/model/service/EmailOtpManager.js.map +1 -1
- package/dist/development/src/model/service/EmailValidator.cjs +2 -1
- package/dist/development/src/model/service/EmailValidator.cjs.map +1 -1
- package/dist/development/src/model/service/EmailValidator.js +2 -1
- package/dist/development/src/model/service/EmailValidator.js.map +1 -1
- package/dist/development/src/model/service/EmailVerificationManager.cjs +5 -4
- package/dist/development/src/model/service/EmailVerificationManager.cjs.map +1 -1
- package/dist/development/src/model/service/EmailVerificationManager.js +5 -4
- package/dist/development/src/model/service/EmailVerificationManager.js.map +1 -1
- package/dist/development/src/model/service/GlobalRoleValidator.cjs +35 -0
- package/dist/development/src/model/service/GlobalRoleValidator.cjs.map +1 -0
- package/dist/development/src/model/service/GlobalRoleValidator.js +35 -0
- package/dist/development/src/model/service/GlobalRoleValidator.js.map +1 -0
- package/dist/development/src/model/service/IDPSignInManager.cjs +52 -16
- package/dist/development/src/model/service/IDPSignInManager.cjs.map +1 -1
- package/dist/development/src/model/service/IDPSignInManager.js +52 -16
- package/dist/development/src/model/service/IDPSignInManager.js.map +1 -1
- package/dist/development/src/model/service/InviteManager.cjs +2 -1
- package/dist/development/src/model/service/InviteManager.cjs.map +1 -1
- package/dist/development/src/model/service/InviteManager.js +2 -1
- package/dist/development/src/model/service/InviteManager.js.map +1 -1
- package/dist/development/src/model/service/PanelAccessResolver.cjs +32 -0
- package/dist/development/src/model/service/PanelAccessResolver.cjs.map +1 -0
- package/dist/development/src/model/service/PanelAccessResolver.js +32 -0
- package/dist/development/src/model/service/PanelAccessResolver.js.map +1 -0
- package/dist/development/src/model/service/PasswordChangeManager.cjs +2 -1
- package/dist/development/src/model/service/PasswordChangeManager.cjs.map +1 -1
- package/dist/development/src/model/service/PasswordChangeManager.js +2 -1
- package/dist/development/src/model/service/PasswordChangeManager.js.map +1 -1
- package/dist/development/src/model/service/PasswordResetManager.cjs +9 -3
- package/dist/development/src/model/service/PasswordResetManager.cjs.map +1 -1
- package/dist/development/src/model/service/PasswordResetManager.js +9 -3
- package/dist/development/src/model/service/PasswordResetManager.js.map +1 -1
- package/dist/development/src/model/service/PasswordlessSignInManager.cjs +24 -6
- package/dist/development/src/model/service/PasswordlessSignInManager.cjs.map +1 -1
- package/dist/development/src/model/service/PasswordlessSignInManager.js +24 -6
- package/dist/development/src/model/service/PasswordlessSignInManager.js.map +1 -1
- package/dist/development/src/model/service/PersonAccessManager.cjs +10 -2
- package/dist/development/src/model/service/PersonAccessManager.cjs.map +1 -1
- package/dist/development/src/model/service/PersonAccessManager.js +10 -2
- package/dist/development/src/model/service/PersonAccessManager.js.map +1 -1
- package/dist/development/src/model/service/PersonManager.cjs +2 -1
- package/dist/development/src/model/service/PersonManager.cjs.map +1 -1
- package/dist/development/src/model/service/PersonManager.js +2 -1
- package/dist/development/src/model/service/PersonManager.js.map +1 -1
- package/dist/development/src/model/service/ProjectMemberManager.cjs +2 -1
- package/dist/development/src/model/service/ProjectMemberManager.cjs.map +1 -1
- package/dist/development/src/model/service/ProjectMemberManager.js +2 -1
- package/dist/development/src/model/service/ProjectMemberManager.js.map +1 -1
- package/dist/development/src/model/service/RateLimiter.cjs +1 -2
- package/dist/development/src/model/service/RateLimiter.cjs.map +1 -1
- package/dist/development/src/model/service/RateLimiter.js +1 -2
- package/dist/development/src/model/service/RateLimiter.js.map +1 -1
- package/dist/development/src/model/service/RolesManager.cjs +17 -18
- package/dist/development/src/model/service/RolesManager.cjs.map +1 -1
- package/dist/development/src/model/service/RolesManager.js +18 -19
- package/dist/development/src/model/service/RolesManager.js.map +1 -1
- package/dist/development/src/model/service/SecretsManager.cjs +2 -1
- package/dist/development/src/model/service/SecretsManager.cjs.map +1 -1
- package/dist/development/src/model/service/SecretsManager.js +2 -1
- package/dist/development/src/model/service/SecretsManager.js.map +1 -1
- package/dist/development/src/model/service/SignInManager.cjs +9 -5
- package/dist/development/src/model/service/SignInManager.cjs.map +1 -1
- package/dist/development/src/model/service/SignInManager.js +9 -5
- package/dist/development/src/model/service/SignInManager.js.map +1 -1
- package/dist/development/src/model/service/SignOutManager.cjs +2 -1
- package/dist/development/src/model/service/SignOutManager.cjs.map +1 -1
- package/dist/development/src/model/service/SignOutManager.js +2 -1
- package/dist/development/src/model/service/SignOutManager.js.map +1 -1
- package/dist/development/src/model/service/SignUpManager.cjs +15 -7
- package/dist/development/src/model/service/SignUpManager.cjs.map +1 -1
- package/dist/development/src/model/service/SignUpManager.js +15 -7
- package/dist/development/src/model/service/SignUpManager.js.map +1 -1
- package/dist/development/src/model/service/apiKey/ApiKeyManager.cjs +56 -40
- package/dist/development/src/model/service/apiKey/ApiKeyManager.cjs.map +1 -1
- package/dist/development/src/model/service/apiKey/ApiKeyManager.js +57 -41
- package/dist/development/src/model/service/apiKey/ApiKeyManager.js.map +1 -1
- package/dist/development/src/model/service/apiKey/ApiKeyService.cjs.map +1 -1
- package/dist/development/src/model/service/apiKey/ApiKeyService.js.map +1 -1
- package/dist/development/src/model/service/apiKey/UnpersistedApiKeyManager.cjs +10 -1
- package/dist/development/src/model/service/apiKey/UnpersistedApiKeyManager.cjs.map +1 -1
- package/dist/development/src/model/service/apiKey/UnpersistedApiKeyManager.js +11 -2
- package/dist/development/src/model/service/apiKey/UnpersistedApiKeyManager.js.map +1 -1
- package/dist/development/src/model/service/idp/ClaimMapping.cjs +187 -0
- package/dist/development/src/model/service/idp/ClaimMapping.cjs.map +1 -0
- package/dist/development/src/model/service/idp/ClaimMapping.js +170 -0
- package/dist/development/src/model/service/idp/ClaimMapping.js.map +1 -0
- package/dist/development/src/model/service/idp/ClaimMappingEvaluator.cjs +155 -0
- package/dist/development/src/model/service/idp/ClaimMappingEvaluator.cjs.map +1 -0
- package/dist/development/src/model/service/idp/ClaimMappingEvaluator.js +155 -0
- package/dist/development/src/model/service/idp/ClaimMappingEvaluator.js.map +1 -0
- package/dist/development/src/model/service/idp/ClaimMappingValidation.cjs +83 -0
- package/dist/development/src/model/service/idp/ClaimMappingValidation.cjs.map +1 -0
- package/dist/development/src/model/service/idp/ClaimMappingValidation.js +83 -0
- package/dist/development/src/model/service/idp/ClaimMappingValidation.js.map +1 -0
- package/dist/development/src/model/service/idp/IDPClaimSyncService.cjs +261 -0
- package/dist/development/src/model/service/idp/IDPClaimSyncService.cjs.map +1 -0
- package/dist/development/src/model/service/idp/IDPClaimSyncService.js +261 -0
- package/dist/development/src/model/service/idp/IDPClaimSyncService.js.map +1 -0
- package/dist/development/src/model/service/idp/IDPManager.cjs +98 -21
- package/dist/development/src/model/service/idp/IDPManager.cjs.map +1 -1
- package/dist/development/src/model/service/idp/IDPManager.js +98 -21
- package/dist/development/src/model/service/idp/IDPManager.js.map +1 -1
- package/dist/development/src/model/service/idp/IdpSessionRevalidator.cjs +93 -28
- package/dist/development/src/model/service/idp/IdpSessionRevalidator.cjs.map +1 -1
- package/dist/development/src/model/service/idp/IdpSessionRevalidator.js +93 -28
- package/dist/development/src/model/service/idp/IdpSessionRevalidator.js.map +1 -1
- package/dist/development/src/model/service/idp/PersonIdentityProviderManager.cjs +8 -1
- package/dist/development/src/model/service/idp/PersonIdentityProviderManager.cjs.map +1 -1
- package/dist/development/src/model/service/idp/PersonIdentityProviderManager.js +8 -1
- package/dist/development/src/model/service/idp/PersonIdentityProviderManager.js.map +1 -1
- package/dist/development/src/model/service/idp/providers/OIDCHelpers.cjs +69 -33
- package/dist/development/src/model/service/idp/providers/OIDCHelpers.cjs.map +1 -1
- package/dist/development/src/model/service/idp/providers/OIDCHelpers.js +69 -33
- package/dist/development/src/model/service/idp/providers/OIDCHelpers.js.map +1 -1
- package/dist/development/src/model/service/idp/providers/OIDCProvider.cjs +4 -1
- package/dist/development/src/model/service/idp/providers/OIDCProvider.cjs.map +1 -1
- package/dist/development/src/model/service/idp/providers/OIDCProvider.js +4 -1
- package/dist/development/src/model/service/idp/providers/OIDCProvider.js.map +1 -1
- package/dist/development/src/model/utils/DatabaseContext.cjs +10 -3
- package/dist/development/src/model/utils/DatabaseContext.cjs.map +1 -1
- package/dist/development/src/model/utils/DatabaseContext.js +11 -4
- package/dist/development/src/model/utils/DatabaseContext.js.map +1 -1
- package/dist/development/src/model/utils/token.cjs +2 -2
- package/dist/development/src/model/utils/token.cjs.map +1 -1
- package/dist/development/src/model/utils/token.js +2 -2
- package/dist/development/src/model/utils/token.js.map +1 -1
- package/dist/development/src/resolvers/ResolverFactory.cjs +12 -3
- package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/ResolverFactory.js +12 -3
- package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
- package/dist/development/src/resolvers/TenantResolverContextFactory.cjs +4 -4
- package/dist/development/src/resolvers/TenantResolverContextFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/TenantResolverContextFactory.js +4 -4
- package/dist/development/src/resolvers/TenantResolverContextFactory.js.map +1 -1
- package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs +19 -9
- package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js +20 -10
- package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/configuration/AuthPolicyMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/configuration/AuthPolicyMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/configuration/AuthPolicyMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/configuration/AuthPolicyMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/customRole/CustomRoleMutationResolver.cjs +124 -0
- package/dist/development/src/resolvers/mutation/customRole/CustomRoleMutationResolver.cjs.map +1 -0
- package/dist/development/src/resolvers/mutation/customRole/CustomRoleMutationResolver.js +124 -0
- package/dist/development/src/resolvers/mutation/customRole/CustomRoleMutationResolver.js.map +1 -0
- package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs +35 -11
- package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js +35 -11
- package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs +10 -7
- package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.js +10 -7
- package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.cjs +8 -6
- package/dist/development/src/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.js +8 -6
- package/dist/development/src/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs +10 -7
- package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js +10 -7
- package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/audit.cjs +1 -0
- package/dist/development/src/resolvers/mutation/idp/audit.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/audit.js +1 -0
- package/dist/development/src/resolvers/mutation/idp/audit.js.map +1 -1
- package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs +38 -18
- package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js +38 -18
- package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs +10 -8
- package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.js +10 -8
- package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs +17 -11
- package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.js +17 -11
- package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs +10 -8
- package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.js +10 -8
- package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/EmailOtpMutationResolver.cjs +10 -8
- package/dist/development/src/resolvers/mutation/person/EmailOtpMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/EmailOtpMutationResolver.js +10 -8
- package/dist/development/src/resolvers/mutation/person/EmailOtpMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/EmailVerificationMutationResolver.cjs +10 -8
- package/dist/development/src/resolvers/mutation/person/EmailVerificationMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/EmailVerificationMutationResolver.js +10 -8
- package/dist/development/src/resolvers/mutation/person/EmailVerificationMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/EnablePersonMutationResolver.cjs +61 -0
- package/dist/development/src/resolvers/mutation/person/EnablePersonMutationResolver.cjs.map +1 -0
- package/dist/development/src/resolvers/mutation/person/EnablePersonMutationResolver.js +61 -0
- package/dist/development/src/resolvers/mutation/person/EnablePersonMutationResolver.js.map +1 -0
- package/dist/development/src/resolvers/mutation/person/ForceSignOutMutationResolver.cjs +8 -6
- package/dist/development/src/resolvers/mutation/person/ForceSignOutMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ForceSignOutMutationResolver.js +8 -6
- package/dist/development/src/resolvers/mutation/person/ForceSignOutMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.cjs +32 -5
- package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.js +32 -5
- package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.cjs +9 -7
- package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.js +9 -7
- package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs +12 -6
- package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js +12 -6
- package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.cjs +9 -7
- package/dist/development/src/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.js +9 -7
- package/dist/development/src/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs +10 -8
- package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.js +10 -8
- package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.cjs +8 -6
- package/dist/development/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.js +8 -6
- package/dist/development/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/RevokeSessionMutationResolver.cjs +8 -6
- package/dist/development/src/resolvers/mutation/person/RevokeSessionMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/RevokeSessionMutationResolver.js +8 -6
- package/dist/development/src/resolvers/mutation/person/RevokeSessionMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.cjs +22 -14
- package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.js +22 -14
- package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.cjs +10 -8
- package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.js +10 -8
- package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs +9 -7
- package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js +9 -7
- package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs +7 -5
- package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js +7 -5
- package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs +8 -6
- package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js +8 -6
- package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs +8 -6
- package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js +8 -6
- package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/audit.cjs +2 -1
- package/dist/development/src/resolvers/mutation/projectMember/audit.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/audit.js +2 -1
- package/dist/development/src/resolvers/mutation/projectMember/audit.js.map +1 -1
- package/dist/development/src/resolvers/query/ApiKeyQueryResolver.cjs +8 -6
- package/dist/development/src/resolvers/query/ApiKeyQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/ApiKeyQueryResolver.js +8 -6
- package/dist/development/src/resolvers/query/ApiKeyQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/AuthLogQueryResolver.cjs +7 -5
- package/dist/development/src/resolvers/query/AuthLogQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/AuthLogQueryResolver.js +7 -5
- package/dist/development/src/resolvers/query/AuthLogQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/AuthPolicyQueryResolver.cjs +8 -6
- package/dist/development/src/resolvers/query/AuthPolicyQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/AuthPolicyQueryResolver.js +8 -6
- package/dist/development/src/resolvers/query/AuthPolicyQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs +8 -6
- package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js +8 -6
- package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/CustomRoleQueryResolver.cjs +55 -0
- package/dist/development/src/resolvers/query/CustomRoleQueryResolver.cjs.map +1 -0
- package/dist/development/src/resolvers/query/CustomRoleQueryResolver.js +55 -0
- package/dist/development/src/resolvers/query/CustomRoleQueryResolver.js.map +1 -0
- package/dist/development/src/resolvers/query/IDPQueryResolver.cjs +7 -5
- package/dist/development/src/resolvers/query/IDPQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/IDPQueryResolver.js +7 -5
- package/dist/development/src/resolvers/query/IDPQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/MailTemplateQueryResolver.cjs +21 -14
- package/dist/development/src/resolvers/query/MailTemplateQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/MailTemplateQueryResolver.js +21 -14
- package/dist/development/src/resolvers/query/MailTemplateQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/PersonQueryResolver.cjs +7 -5
- package/dist/development/src/resolvers/query/PersonQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/PersonQueryResolver.js +7 -5
- package/dist/development/src/resolvers/query/PersonQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.cjs +7 -5
- package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.js +7 -5
- package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/ProjectQueryResolver.cjs +10 -7
- package/dist/development/src/resolvers/query/ProjectQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/ProjectQueryResolver.js +10 -7
- package/dist/development/src/resolvers/query/ProjectQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/responseHelpers/ApiKeyResponseFactory.cjs +7 -5
- package/dist/development/src/resolvers/responseHelpers/ApiKeyResponseFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/responseHelpers/ApiKeyResponseFactory.js +7 -5
- package/dist/development/src/resolvers/responseHelpers/ApiKeyResponseFactory.js.map +1 -1
- package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.cjs +5 -0
- package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.js +5 -0
- package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.js.map +1 -1
- package/dist/development/src/resolvers/responseHelpers/ProjectResponseFactory.cjs +23 -0
- package/dist/development/src/resolvers/responseHelpers/ProjectResponseFactory.cjs.map +1 -0
- package/dist/development/src/resolvers/responseHelpers/ProjectResponseFactory.js +23 -0
- package/dist/development/src/resolvers/responseHelpers/ProjectResponseFactory.js.map +1 -0
- package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.cjs +8 -6
- package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.js +8 -6
- package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.js.map +1 -1
- package/dist/development/src/resolvers/types/IdentityTypeResolver.cjs +50 -18
- package/dist/development/src/resolvers/types/IdentityTypeResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/types/IdentityTypeResolver.js +50 -18
- package/dist/development/src/resolvers/types/IdentityTypeResolver.js.map +1 -1
- package/dist/development/src/resolvers/types/PersonTypeResolver.cjs +38 -8
- package/dist/development/src/resolvers/types/PersonTypeResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/types/PersonTypeResolver.js +38 -8
- package/dist/development/src/resolvers/types/PersonTypeResolver.js.map +1 -1
- package/dist/development/src/resolvers/types/ProjectTypeResolver.cjs +31 -6
- package/dist/development/src/resolvers/types/ProjectTypeResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/types/ProjectTypeResolver.js +31 -6
- package/dist/development/src/resolvers/types/ProjectTypeResolver.js.map +1 -1
- package/dist/development/src/schema/tenant.graphql.cjs +275 -15
- package/dist/development/src/schema/tenant.graphql.cjs.map +1 -1
- package/dist/development/src/schema/tenant.graphql.js +275 -15
- package/dist/development/src/schema/tenant.graphql.js.map +1 -1
- package/dist/production/index.cjs +69 -0
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +71 -2
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/TenantContainer.cjs +39 -10
- package/dist/production/src/TenantContainer.cjs.map +1 -1
- package/dist/production/src/TenantContainer.js +39 -10
- package/dist/production/src/TenantContainer.js.map +1 -1
- package/dist/production/src/bridges/system/IdentityFetcher.cjs +9 -7
- package/dist/production/src/bridges/system/IdentityFetcher.cjs.map +1 -1
- package/dist/production/src/bridges/system/IdentityFetcher.js +9 -7
- package/dist/production/src/bridges/system/IdentityFetcher.js.map +1 -1
- package/dist/production/src/migrations/2026-06-18-120000-idp-claim-mapping.cjs +10 -0
- package/dist/production/src/migrations/2026-06-18-120000-idp-claim-mapping.cjs.map +1 -0
- package/dist/production/src/migrations/2026-06-18-120000-idp-claim-mapping.js +11 -0
- package/dist/production/src/migrations/2026-06-18-120000-idp-claim-mapping.js.map +1 -0
- package/dist/production/src/migrations/2026-08-03-120000-person-enable-auth-log.cjs +9 -0
- package/dist/production/src/migrations/2026-08-03-120000-person-enable-auth-log.cjs.map +1 -0
- package/dist/production/src/migrations/2026-08-03-120000-person-enable-auth-log.js +10 -0
- package/dist/production/src/migrations/2026-08-03-120000-person-enable-auth-log.js.map +1 -0
- package/dist/production/src/migrations/2026-08-04-120000-config-panel.cjs +11 -0
- package/dist/production/src/migrations/2026-08-04-120000-config-panel.cjs.map +1 -0
- package/dist/production/src/migrations/2026-08-04-120000-config-panel.js +12 -0
- package/dist/production/src/migrations/2026-08-04-120000-config-panel.js.map +1 -0
- package/dist/production/src/migrations/2026-09-04-120000-idp-disable-local-authentication.cjs +18 -0
- package/dist/production/src/migrations/2026-09-04-120000-idp-disable-local-authentication.cjs.map +1 -0
- package/dist/production/src/migrations/2026-09-04-120000-idp-disable-local-authentication.js +19 -0
- package/dist/production/src/migrations/2026-09-04-120000-idp-disable-local-authentication.js.map +1 -0
- package/dist/production/src/migrations/2026-09-11-120000-custom-role.cjs +18 -0
- package/dist/production/src/migrations/2026-09-11-120000-custom-role.cjs.map +1 -0
- package/dist/production/src/migrations/2026-09-11-120000-custom-role.js +19 -0
- package/dist/production/src/migrations/2026-09-11-120000-custom-role.js.map +1 -0
- package/dist/production/src/migrations/runner.cjs +17 -5
- package/dist/production/src/migrations/runner.cjs.map +1 -1
- package/dist/production/src/migrations/runner.js +17 -5
- package/dist/production/src/migrations/runner.js.map +1 -1
- package/dist/production/src/migrations/snapshot.cjs +22 -2
- package/dist/production/src/migrations/snapshot.cjs.map +1 -1
- package/dist/production/src/migrations/snapshot.js +22 -2
- package/dist/production/src/migrations/snapshot.js.map +1 -1
- package/dist/production/src/model/authorization/CustomRoleAuthorizator.cjs +65 -0
- package/dist/production/src/model/authorization/CustomRoleAuthorizator.cjs.map +1 -0
- package/dist/production/src/model/authorization/CustomRoleAuthorizator.js +65 -0
- package/dist/production/src/model/authorization/CustomRoleAuthorizator.js.map +1 -0
- package/dist/production/src/model/authorization/CustomRolePermissions.cjs +404 -0
- package/dist/production/src/model/authorization/CustomRolePermissions.cjs.map +1 -0
- package/dist/production/src/model/authorization/CustomRolePermissions.js +387 -0
- package/dist/production/src/model/authorization/CustomRolePermissions.js.map +1 -0
- package/dist/production/src/model/authorization/PermissionActions.cjs +19 -16
- package/dist/production/src/model/authorization/PermissionActions.cjs.map +1 -1
- package/dist/production/src/model/authorization/PermissionActions.js +19 -16
- package/dist/production/src/model/authorization/PermissionActions.js.map +1 -1
- package/dist/production/src/model/authorization/PermissionContextFactory.cjs +20 -2
- package/dist/production/src/model/authorization/PermissionContextFactory.cjs.map +1 -1
- package/dist/production/src/model/authorization/PermissionContextFactory.js +20 -2
- package/dist/production/src/model/authorization/PermissionContextFactory.js.map +1 -1
- package/dist/production/src/model/authorization/PermissionsFactory.cjs +32 -24
- package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
- package/dist/production/src/model/authorization/PermissionsFactory.js +33 -25
- package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
- package/dist/production/src/model/authorization/Roles.cjs +8 -0
- package/dist/production/src/model/authorization/Roles.cjs.map +1 -1
- package/dist/production/src/model/authorization/Roles.js +8 -0
- package/dist/production/src/model/authorization/Roles.js.map +1 -1
- package/dist/production/src/model/authorization/TargetIdentityPermission.cjs +35 -0
- package/dist/production/src/model/authorization/TargetIdentityPermission.cjs.map +1 -0
- package/dist/production/src/model/authorization/TargetIdentityPermission.js +35 -0
- package/dist/production/src/model/authorization/TargetIdentityPermission.js.map +1 -0
- package/dist/production/src/model/commands/apiKey/ApiKeyHelper.cjs +19 -0
- package/dist/production/src/model/commands/apiKey/ApiKeyHelper.cjs.map +1 -1
- package/dist/production/src/model/commands/apiKey/ApiKeyHelper.js +19 -0
- package/dist/production/src/model/commands/apiKey/ApiKeyHelper.js.map +1 -1
- package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.cjs +4 -2
- package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.js +5 -3
- package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.js.map +1 -1
- package/dist/production/src/model/commands/apiKey/ProlongApiKeyCommand.cjs +9 -10
- package/dist/production/src/model/commands/apiKey/ProlongApiKeyCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/apiKey/ProlongApiKeyCommand.js +10 -11
- package/dist/production/src/model/commands/apiKey/ProlongApiKeyCommand.js.map +1 -1
- package/dist/production/src/model/commands/authLog/CreateAuthLogEntryCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/authLog/CreateAuthLogEntryCommand.js.map +1 -1
- package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs +5 -3
- package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js +5 -3
- package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -1
- package/dist/production/src/model/commands/customRole/CreateCustomRoleCommand.cjs +23 -0
- package/dist/production/src/model/commands/customRole/CreateCustomRoleCommand.cjs.map +1 -0
- package/dist/production/src/model/commands/customRole/CreateCustomRoleCommand.js +23 -0
- package/dist/production/src/model/commands/customRole/CreateCustomRoleCommand.js.map +1 -0
- package/dist/production/src/model/commands/customRole/DeleteCustomRoleCommand.cjs +14 -0
- package/dist/production/src/model/commands/customRole/DeleteCustomRoleCommand.cjs.map +1 -0
- package/dist/production/src/model/commands/customRole/DeleteCustomRoleCommand.js +14 -0
- package/dist/production/src/model/commands/customRole/DeleteCustomRoleCommand.js.map +1 -0
- package/dist/production/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.cjs +16 -0
- package/dist/production/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.cjs.map +1 -0
- package/dist/production/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.js +16 -0
- package/dist/production/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.js.map +1 -0
- package/dist/production/src/model/commands/customRole/UpdateCustomRoleCommand.cjs +19 -0
- package/dist/production/src/model/commands/customRole/UpdateCustomRoleCommand.cjs.map +1 -0
- package/dist/production/src/model/commands/customRole/UpdateCustomRoleCommand.js +19 -0
- package/dist/production/src/model/commands/customRole/UpdateCustomRoleCommand.js.map +1 -0
- package/dist/production/src/model/commands/identity/PatchIdentityGlobalRoles.cjs +1 -1
- package/dist/production/src/model/commands/identity/PatchIdentityGlobalRoles.cjs.map +1 -1
- package/dist/production/src/model/commands/identity/PatchIdentityGlobalRoles.js +1 -1
- package/dist/production/src/model/commands/identity/PatchIdentityGlobalRoles.js.map +1 -1
- package/dist/production/src/model/commands/idp/ClaimIdpRevalidationCommand.cjs +3 -7
- package/dist/production/src/model/commands/idp/ClaimIdpRevalidationCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/idp/ClaimIdpRevalidationCommand.js +3 -7
- package/dist/production/src/model/commands/idp/ClaimIdpRevalidationCommand.js.map +1 -1
- package/dist/production/src/model/commands/idp/CreateIdpCommand.cjs +8 -2
- package/dist/production/src/model/commands/idp/CreateIdpCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/idp/CreateIdpCommand.js +8 -2
- package/dist/production/src/model/commands/idp/CreateIdpCommand.js.map +1 -1
- package/dist/production/src/model/commands/idp/CreateIdpSessionCommand.cjs +4 -1
- package/dist/production/src/model/commands/idp/CreateIdpSessionCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/idp/CreateIdpSessionCommand.js +5 -2
- package/dist/production/src/model/commands/idp/CreateIdpSessionCommand.js.map +1 -1
- package/dist/production/src/model/commands/idp/UpdateIdpCommand.cjs +6 -2
- package/dist/production/src/model/commands/idp/UpdateIdpCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/idp/UpdateIdpCommand.js +6 -2
- package/dist/production/src/model/commands/idp/UpdateIdpCommand.js.map +1 -1
- package/dist/production/src/model/commands/idp/UpdateIdpSessionCommand.cjs +2 -1
- package/dist/production/src/model/commands/idp/UpdateIdpSessionCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/idp/UpdateIdpSessionCommand.js +3 -2
- package/dist/production/src/model/commands/idp/UpdateIdpSessionCommand.js.map +1 -1
- package/dist/production/src/model/commands/membership/{RemoveProjectMembershipsCommand.cjs → RemoveProjectMembershipCommand.cjs} +1 -1
- package/dist/production/src/model/commands/membership/RemoveProjectMembershipCommand.cjs.map +1 -0
- package/dist/production/src/model/commands/membership/{RemoveProjectMembershipsCommand.js → RemoveProjectMembershipCommand.js} +1 -1
- package/dist/production/src/model/commands/membership/RemoveProjectMembershipCommand.js.map +1 -0
- package/dist/production/src/model/commands/membership/UpdateProjectMemberCommand.cjs +2 -2
- package/dist/production/src/model/commands/membership/UpdateProjectMemberCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/membership/UpdateProjectMemberCommand.js +1 -1
- package/dist/production/src/model/commands/membership/UpdateProjectMemberCommand.js.map +1 -1
- package/dist/production/src/model/commands/person/CreatePersonCommand.cjs +1 -0
- package/dist/production/src/model/commands/person/CreatePersonCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/person/CreatePersonCommand.js +1 -0
- package/dist/production/src/model/commands/person/CreatePersonCommand.js.map +1 -1
- package/dist/production/src/model/commands/person/EnablePersonCommand.cjs +17 -0
- package/dist/production/src/model/commands/person/EnablePersonCommand.cjs.map +1 -0
- package/dist/production/src/model/commands/person/EnablePersonCommand.js +17 -0
- package/dist/production/src/model/commands/person/EnablePersonCommand.js.map +1 -0
- package/dist/production/src/model/commands/person/SetMfaGraceUntilCommand.cjs +3 -3
- package/dist/production/src/model/commands/person/SetMfaGraceUntilCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/person/SetMfaGraceUntilCommand.js +4 -4
- package/dist/production/src/model/commands/person/SetMfaGraceUntilCommand.js.map +1 -1
- package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs +2 -3
- package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/personToken/ResetPasswordCommand.js +2 -3
- package/dist/production/src/model/commands/personToken/ResetPasswordCommand.js.map +1 -1
- package/dist/production/src/model/commands/personToken/SaveEmailOtpTokenCommand.cjs +3 -3
- package/dist/production/src/model/commands/personToken/SaveEmailOtpTokenCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/personToken/SaveEmailOtpTokenCommand.js +4 -4
- package/dist/production/src/model/commands/personToken/SaveEmailOtpTokenCommand.js.map +1 -1
- package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.cjs +12 -6
- package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.js +13 -7
- package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.js.map +1 -1
- package/dist/production/src/model/commands/rateLimit/RecordRateLimitEventCommand.cjs +1 -2
- package/dist/production/src/model/commands/rateLimit/RecordRateLimitEventCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/rateLimit/RecordRateLimitEventCommand.js +1 -2
- package/dist/production/src/model/commands/rateLimit/RecordRateLimitEventCommand.js.map +1 -1
- package/dist/production/src/model/mailing/UserMailer.cjs +2 -1
- package/dist/production/src/model/mailing/UserMailer.cjs.map +1 -1
- package/dist/production/src/model/mailing/UserMailer.js +2 -1
- package/dist/production/src/model/mailing/UserMailer.js.map +1 -1
- package/dist/production/src/model/queries/apiKey/ApiKeyQuery.cjs +8 -1
- package/dist/production/src/model/queries/apiKey/ApiKeyQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/apiKey/ApiKeyQuery.js +9 -2
- package/dist/production/src/model/queries/apiKey/ApiKeyQuery.js.map +1 -1
- package/dist/production/src/model/queries/apiKey/ApiKeySessionsQuery.cjs +2 -3
- package/dist/production/src/model/queries/apiKey/ApiKeySessionsQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/apiKey/ApiKeySessionsQuery.js +2 -3
- package/dist/production/src/model/queries/apiKey/ApiKeySessionsQuery.js.map +1 -1
- package/dist/production/src/model/queries/authLog/NextLoginAttemptQuery.cjs +12 -10
- package/dist/production/src/model/queries/authLog/NextLoginAttemptQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/authLog/NextLoginAttemptQuery.js +12 -10
- package/dist/production/src/model/queries/authLog/NextLoginAttemptQuery.js.map +1 -1
- package/dist/production/src/model/queries/authLog/NextMailAttemptQuery.cjs +10 -8
- package/dist/production/src/model/queries/authLog/NextMailAttemptQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/authLog/NextMailAttemptQuery.js +10 -8
- package/dist/production/src/model/queries/authLog/NextMailAttemptQuery.js.map +1 -1
- package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs +4 -0
- package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/configuration/ConfigurationQuery.js +4 -0
- package/dist/production/src/model/queries/configuration/ConfigurationQuery.js.map +1 -1
- package/dist/production/src/model/queries/customRole/CustomRolesQuery.cjs +23 -0
- package/dist/production/src/model/queries/customRole/CustomRolesQuery.cjs.map +1 -0
- package/dist/production/src/model/queries/customRole/CustomRolesQuery.js +23 -0
- package/dist/production/src/model/queries/customRole/CustomRolesQuery.js.map +1 -0
- package/dist/production/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.cjs +15 -0
- package/dist/production/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.cjs.map +1 -0
- package/dist/production/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.js +15 -0
- package/dist/production/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.js.map +1 -0
- package/dist/production/src/model/queries/identity/IdentityQuery.cjs +7 -2
- package/dist/production/src/model/queries/identity/IdentityQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/identity/IdentityQuery.js +7 -2
- package/dist/production/src/model/queries/identity/IdentityQuery.js.map +1 -1
- package/dist/production/src/model/queries/idp/LocalAuthDisablingIdpsQuery.cjs +21 -0
- package/dist/production/src/model/queries/idp/LocalAuthDisablingIdpsQuery.cjs.map +1 -0
- package/dist/production/src/model/queries/idp/LocalAuthDisablingIdpsQuery.js +21 -0
- package/dist/production/src/model/queries/idp/LocalAuthDisablingIdpsQuery.js.map +1 -0
- package/dist/production/src/model/queries/idp/PersonIdentityProvidersQuery.cjs +1 -1
- package/dist/production/src/model/queries/idp/PersonIdentityProvidersQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/idp/PersonIdentityProvidersQuery.js +1 -1
- package/dist/production/src/model/queries/idp/PersonIdentityProvidersQuery.js.map +1 -1
- package/dist/production/src/model/queries/idp/helpers.cjs +3 -3
- package/dist/production/src/model/queries/idp/helpers.cjs.map +1 -1
- package/dist/production/src/model/queries/idp/helpers.js +3 -3
- package/dist/production/src/model/queries/idp/helpers.js.map +1 -1
- package/dist/production/src/model/queries/membership/IdentityHasProjectMembershipsQuery.cjs +15 -0
- package/dist/production/src/model/queries/membership/IdentityHasProjectMembershipsQuery.cjs.map +1 -0
- package/dist/production/src/model/queries/membership/IdentityHasProjectMembershipsQuery.js +15 -0
- package/dist/production/src/model/queries/membership/IdentityHasProjectMembershipsQuery.js.map +1 -0
- package/dist/production/src/model/queries/membership/ProjectMembersQuery.cjs +1 -1
- package/dist/production/src/model/queries/membership/ProjectMembersQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/membership/ProjectMembersQuery.js +1 -1
- package/dist/production/src/model/queries/membership/ProjectMembersQuery.js.map +1 -1
- package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.cjs +2 -2
- package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.cjs.map +1 -1
- package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.js +2 -2
- package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.js.map +1 -1
- package/dist/production/src/model/queries/personToken/PersonTokenQuery.cjs +1 -1
- package/dist/production/src/model/queries/personToken/PersonTokenQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/personToken/PersonTokenQuery.js +1 -1
- package/dist/production/src/model/queries/personToken/PersonTokenQuery.js.map +1 -1
- package/dist/production/src/model/queries/project/ProjectsByIdentityQuery.cjs +4 -1
- package/dist/production/src/model/queries/project/ProjectsByIdentityQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/project/ProjectsByIdentityQuery.js +4 -1
- package/dist/production/src/model/queries/project/ProjectsByIdentityQuery.js.map +1 -1
- package/dist/production/src/model/queries/rateLimit/RateLimitCountQuery.cjs +3 -3
- package/dist/production/src/model/queries/rateLimit/RateLimitCountQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/rateLimit/RateLimitCountQuery.js +3 -3
- package/dist/production/src/model/queries/rateLimit/RateLimitCountQuery.js.map +1 -1
- package/dist/production/src/model/service/AuthLogService.cjs +8 -2
- package/dist/production/src/model/service/AuthLogService.cjs.map +1 -1
- package/dist/production/src/model/service/AuthLogService.js +8 -2
- package/dist/production/src/model/service/AuthLogService.js.map +1 -1
- package/dist/production/src/model/service/AuthPolicyManager.cjs +2 -1
- package/dist/production/src/model/service/AuthPolicyManager.cjs.map +1 -1
- package/dist/production/src/model/service/AuthPolicyManager.js +2 -1
- package/dist/production/src/model/service/AuthPolicyManager.js.map +1 -1
- package/dist/production/src/model/service/AuthPolicyResolver.cjs +2 -1
- package/dist/production/src/model/service/AuthPolicyResolver.cjs.map +1 -1
- package/dist/production/src/model/service/AuthPolicyResolver.js +2 -1
- package/dist/production/src/model/service/AuthPolicyResolver.js.map +1 -1
- package/dist/production/src/model/service/CustomRoleManager.cjs +170 -0
- package/dist/production/src/model/service/CustomRoleManager.cjs.map +1 -0
- package/dist/production/src/model/service/CustomRoleManager.js +170 -0
- package/dist/production/src/model/service/CustomRoleManager.js.map +1 -0
- package/dist/production/src/model/service/EmailChangeManager.cjs +5 -4
- package/dist/production/src/model/service/EmailChangeManager.cjs.map +1 -1
- package/dist/production/src/model/service/EmailChangeManager.js +5 -4
- package/dist/production/src/model/service/EmailChangeManager.js.map +1 -1
- package/dist/production/src/model/service/EmailOtpManager.cjs +0 -1
- package/dist/production/src/model/service/EmailOtpManager.cjs.map +1 -1
- package/dist/production/src/model/service/EmailOtpManager.js +0 -1
- package/dist/production/src/model/service/EmailOtpManager.js.map +1 -1
- package/dist/production/src/model/service/EmailValidator.cjs +2 -1
- package/dist/production/src/model/service/EmailValidator.cjs.map +1 -1
- package/dist/production/src/model/service/EmailValidator.js +2 -1
- package/dist/production/src/model/service/EmailValidator.js.map +1 -1
- package/dist/production/src/model/service/EmailVerificationManager.cjs +5 -4
- package/dist/production/src/model/service/EmailVerificationManager.cjs.map +1 -1
- package/dist/production/src/model/service/EmailVerificationManager.js +5 -4
- package/dist/production/src/model/service/EmailVerificationManager.js.map +1 -1
- package/dist/production/src/model/service/GlobalRoleValidator.cjs +35 -0
- package/dist/production/src/model/service/GlobalRoleValidator.cjs.map +1 -0
- package/dist/production/src/model/service/GlobalRoleValidator.js +35 -0
- package/dist/production/src/model/service/GlobalRoleValidator.js.map +1 -0
- package/dist/production/src/model/service/IDPSignInManager.cjs +52 -16
- package/dist/production/src/model/service/IDPSignInManager.cjs.map +1 -1
- package/dist/production/src/model/service/IDPSignInManager.js +52 -16
- package/dist/production/src/model/service/IDPSignInManager.js.map +1 -1
- package/dist/production/src/model/service/InviteManager.cjs +2 -1
- package/dist/production/src/model/service/InviteManager.cjs.map +1 -1
- package/dist/production/src/model/service/InviteManager.js +2 -1
- package/dist/production/src/model/service/InviteManager.js.map +1 -1
- package/dist/production/src/model/service/PanelAccessResolver.cjs +32 -0
- package/dist/production/src/model/service/PanelAccessResolver.cjs.map +1 -0
- package/dist/production/src/model/service/PanelAccessResolver.js +32 -0
- package/dist/production/src/model/service/PanelAccessResolver.js.map +1 -0
- package/dist/production/src/model/service/PasswordChangeManager.cjs +2 -1
- package/dist/production/src/model/service/PasswordChangeManager.cjs.map +1 -1
- package/dist/production/src/model/service/PasswordChangeManager.js +2 -1
- package/dist/production/src/model/service/PasswordChangeManager.js.map +1 -1
- package/dist/production/src/model/service/PasswordResetManager.cjs +9 -3
- package/dist/production/src/model/service/PasswordResetManager.cjs.map +1 -1
- package/dist/production/src/model/service/PasswordResetManager.js +9 -3
- package/dist/production/src/model/service/PasswordResetManager.js.map +1 -1
- package/dist/production/src/model/service/PasswordlessSignInManager.cjs +24 -6
- package/dist/production/src/model/service/PasswordlessSignInManager.cjs.map +1 -1
- package/dist/production/src/model/service/PasswordlessSignInManager.js +24 -6
- package/dist/production/src/model/service/PasswordlessSignInManager.js.map +1 -1
- package/dist/production/src/model/service/PersonAccessManager.cjs +10 -2
- package/dist/production/src/model/service/PersonAccessManager.cjs.map +1 -1
- package/dist/production/src/model/service/PersonAccessManager.js +10 -2
- package/dist/production/src/model/service/PersonAccessManager.js.map +1 -1
- package/dist/production/src/model/service/PersonManager.cjs +2 -1
- package/dist/production/src/model/service/PersonManager.cjs.map +1 -1
- package/dist/production/src/model/service/PersonManager.js +2 -1
- package/dist/production/src/model/service/PersonManager.js.map +1 -1
- package/dist/production/src/model/service/ProjectMemberManager.cjs +2 -1
- package/dist/production/src/model/service/ProjectMemberManager.cjs.map +1 -1
- package/dist/production/src/model/service/ProjectMemberManager.js +2 -1
- package/dist/production/src/model/service/ProjectMemberManager.js.map +1 -1
- package/dist/production/src/model/service/RateLimiter.cjs +1 -2
- package/dist/production/src/model/service/RateLimiter.cjs.map +1 -1
- package/dist/production/src/model/service/RateLimiter.js +1 -2
- package/dist/production/src/model/service/RateLimiter.js.map +1 -1
- package/dist/production/src/model/service/RolesManager.cjs +17 -18
- package/dist/production/src/model/service/RolesManager.cjs.map +1 -1
- package/dist/production/src/model/service/RolesManager.js +18 -19
- package/dist/production/src/model/service/RolesManager.js.map +1 -1
- package/dist/production/src/model/service/SecretsManager.cjs +2 -1
- package/dist/production/src/model/service/SecretsManager.cjs.map +1 -1
- package/dist/production/src/model/service/SecretsManager.js +2 -1
- package/dist/production/src/model/service/SecretsManager.js.map +1 -1
- package/dist/production/src/model/service/SignInManager.cjs +9 -5
- package/dist/production/src/model/service/SignInManager.cjs.map +1 -1
- package/dist/production/src/model/service/SignInManager.js +9 -5
- package/dist/production/src/model/service/SignInManager.js.map +1 -1
- package/dist/production/src/model/service/SignOutManager.cjs +2 -1
- package/dist/production/src/model/service/SignOutManager.cjs.map +1 -1
- package/dist/production/src/model/service/SignOutManager.js +2 -1
- package/dist/production/src/model/service/SignOutManager.js.map +1 -1
- package/dist/production/src/model/service/SignUpManager.cjs +15 -7
- package/dist/production/src/model/service/SignUpManager.cjs.map +1 -1
- package/dist/production/src/model/service/SignUpManager.js +15 -7
- package/dist/production/src/model/service/SignUpManager.js.map +1 -1
- package/dist/production/src/model/service/apiKey/ApiKeyManager.cjs +56 -40
- package/dist/production/src/model/service/apiKey/ApiKeyManager.cjs.map +1 -1
- package/dist/production/src/model/service/apiKey/ApiKeyManager.js +57 -41
- package/dist/production/src/model/service/apiKey/ApiKeyManager.js.map +1 -1
- package/dist/production/src/model/service/apiKey/ApiKeyService.cjs.map +1 -1
- package/dist/production/src/model/service/apiKey/ApiKeyService.js.map +1 -1
- package/dist/production/src/model/service/apiKey/UnpersistedApiKeyManager.cjs +10 -1
- package/dist/production/src/model/service/apiKey/UnpersistedApiKeyManager.cjs.map +1 -1
- package/dist/production/src/model/service/apiKey/UnpersistedApiKeyManager.js +11 -2
- package/dist/production/src/model/service/apiKey/UnpersistedApiKeyManager.js.map +1 -1
- package/dist/production/src/model/service/idp/ClaimMapping.cjs +187 -0
- package/dist/production/src/model/service/idp/ClaimMapping.cjs.map +1 -0
- package/dist/production/src/model/service/idp/ClaimMapping.js +170 -0
- package/dist/production/src/model/service/idp/ClaimMapping.js.map +1 -0
- package/dist/production/src/model/service/idp/ClaimMappingEvaluator.cjs +155 -0
- package/dist/production/src/model/service/idp/ClaimMappingEvaluator.cjs.map +1 -0
- package/dist/production/src/model/service/idp/ClaimMappingEvaluator.js +155 -0
- package/dist/production/src/model/service/idp/ClaimMappingEvaluator.js.map +1 -0
- package/dist/production/src/model/service/idp/ClaimMappingValidation.cjs +83 -0
- package/dist/production/src/model/service/idp/ClaimMappingValidation.cjs.map +1 -0
- package/dist/production/src/model/service/idp/ClaimMappingValidation.js +83 -0
- package/dist/production/src/model/service/idp/ClaimMappingValidation.js.map +1 -0
- package/dist/production/src/model/service/idp/IDPClaimSyncService.cjs +261 -0
- package/dist/production/src/model/service/idp/IDPClaimSyncService.cjs.map +1 -0
- package/dist/production/src/model/service/idp/IDPClaimSyncService.js +261 -0
- package/dist/production/src/model/service/idp/IDPClaimSyncService.js.map +1 -0
- package/dist/production/src/model/service/idp/IDPManager.cjs +98 -21
- package/dist/production/src/model/service/idp/IDPManager.cjs.map +1 -1
- package/dist/production/src/model/service/idp/IDPManager.js +98 -21
- package/dist/production/src/model/service/idp/IDPManager.js.map +1 -1
- package/dist/production/src/model/service/idp/IdpSessionRevalidator.cjs +93 -28
- package/dist/production/src/model/service/idp/IdpSessionRevalidator.cjs.map +1 -1
- package/dist/production/src/model/service/idp/IdpSessionRevalidator.js +93 -28
- package/dist/production/src/model/service/idp/IdpSessionRevalidator.js.map +1 -1
- package/dist/production/src/model/service/idp/PersonIdentityProviderManager.cjs +8 -1
- package/dist/production/src/model/service/idp/PersonIdentityProviderManager.cjs.map +1 -1
- package/dist/production/src/model/service/idp/PersonIdentityProviderManager.js +8 -1
- package/dist/production/src/model/service/idp/PersonIdentityProviderManager.js.map +1 -1
- package/dist/production/src/model/service/idp/providers/OIDCHelpers.cjs +69 -33
- package/dist/production/src/model/service/idp/providers/OIDCHelpers.cjs.map +1 -1
- package/dist/production/src/model/service/idp/providers/OIDCHelpers.js +69 -33
- package/dist/production/src/model/service/idp/providers/OIDCHelpers.js.map +1 -1
- package/dist/production/src/model/service/idp/providers/OIDCProvider.cjs +4 -1
- package/dist/production/src/model/service/idp/providers/OIDCProvider.cjs.map +1 -1
- package/dist/production/src/model/service/idp/providers/OIDCProvider.js +4 -1
- package/dist/production/src/model/service/idp/providers/OIDCProvider.js.map +1 -1
- package/dist/production/src/model/utils/DatabaseContext.cjs +10 -3
- package/dist/production/src/model/utils/DatabaseContext.cjs.map +1 -1
- package/dist/production/src/model/utils/DatabaseContext.js +11 -4
- package/dist/production/src/model/utils/DatabaseContext.js.map +1 -1
- package/dist/production/src/model/utils/token.cjs +2 -2
- package/dist/production/src/model/utils/token.cjs.map +1 -1
- package/dist/production/src/model/utils/token.js +2 -2
- package/dist/production/src/model/utils/token.js.map +1 -1
- package/dist/production/src/resolvers/ResolverFactory.cjs +12 -3
- package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/ResolverFactory.js +12 -3
- package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
- package/dist/production/src/resolvers/TenantResolverContextFactory.cjs +4 -4
- package/dist/production/src/resolvers/TenantResolverContextFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/TenantResolverContextFactory.js +4 -4
- package/dist/production/src/resolvers/TenantResolverContextFactory.js.map +1 -1
- package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs +19 -9
- package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js +20 -10
- package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/configuration/AuthPolicyMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/configuration/AuthPolicyMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/configuration/AuthPolicyMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/configuration/AuthPolicyMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/customRole/CustomRoleMutationResolver.cjs +124 -0
- package/dist/production/src/resolvers/mutation/customRole/CustomRoleMutationResolver.cjs.map +1 -0
- package/dist/production/src/resolvers/mutation/customRole/CustomRoleMutationResolver.js +124 -0
- package/dist/production/src/resolvers/mutation/customRole/CustomRoleMutationResolver.js.map +1 -0
- package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs +35 -11
- package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js +35 -11
- package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs +10 -7
- package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.js +10 -7
- package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.cjs +8 -6
- package/dist/production/src/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.js +8 -6
- package/dist/production/src/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs +10 -7
- package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js +10 -7
- package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/audit.cjs +1 -0
- package/dist/production/src/resolvers/mutation/idp/audit.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/audit.js +1 -0
- package/dist/production/src/resolvers/mutation/idp/audit.js.map +1 -1
- package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs +38 -18
- package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js +38 -18
- package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs +10 -8
- package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.js +10 -8
- package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs +17 -11
- package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.js +17 -11
- package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs +10 -8
- package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.js +10 -8
- package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/EmailOtpMutationResolver.cjs +10 -8
- package/dist/production/src/resolvers/mutation/person/EmailOtpMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/EmailOtpMutationResolver.js +10 -8
- package/dist/production/src/resolvers/mutation/person/EmailOtpMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/EmailVerificationMutationResolver.cjs +10 -8
- package/dist/production/src/resolvers/mutation/person/EmailVerificationMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/EmailVerificationMutationResolver.js +10 -8
- package/dist/production/src/resolvers/mutation/person/EmailVerificationMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/EnablePersonMutationResolver.cjs +61 -0
- package/dist/production/src/resolvers/mutation/person/EnablePersonMutationResolver.cjs.map +1 -0
- package/dist/production/src/resolvers/mutation/person/EnablePersonMutationResolver.js +61 -0
- package/dist/production/src/resolvers/mutation/person/EnablePersonMutationResolver.js.map +1 -0
- package/dist/production/src/resolvers/mutation/person/ForceSignOutMutationResolver.cjs +8 -6
- package/dist/production/src/resolvers/mutation/person/ForceSignOutMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ForceSignOutMutationResolver.js +8 -6
- package/dist/production/src/resolvers/mutation/person/ForceSignOutMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.cjs +32 -5
- package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.js +32 -5
- package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.cjs +9 -7
- package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.js +9 -7
- package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs +12 -6
- package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js +12 -6
- package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.cjs +9 -7
- package/dist/production/src/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.js +9 -7
- package/dist/production/src/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs +10 -8
- package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.js +10 -8
- package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.cjs +8 -6
- package/dist/production/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.js +8 -6
- package/dist/production/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/RevokeSessionMutationResolver.cjs +8 -6
- package/dist/production/src/resolvers/mutation/person/RevokeSessionMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/RevokeSessionMutationResolver.js +8 -6
- package/dist/production/src/resolvers/mutation/person/RevokeSessionMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.cjs +22 -14
- package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.js +22 -14
- package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.cjs +10 -8
- package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.js +10 -8
- package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs +9 -7
- package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js +9 -7
- package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs +7 -5
- package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js +7 -5
- package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs +8 -6
- package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js +8 -6
- package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs +8 -6
- package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js +8 -6
- package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/audit.cjs +2 -1
- package/dist/production/src/resolvers/mutation/projectMember/audit.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/audit.js +2 -1
- package/dist/production/src/resolvers/mutation/projectMember/audit.js.map +1 -1
- package/dist/production/src/resolvers/query/ApiKeyQueryResolver.cjs +8 -6
- package/dist/production/src/resolvers/query/ApiKeyQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/ApiKeyQueryResolver.js +8 -6
- package/dist/production/src/resolvers/query/ApiKeyQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/AuthLogQueryResolver.cjs +7 -5
- package/dist/production/src/resolvers/query/AuthLogQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/AuthLogQueryResolver.js +7 -5
- package/dist/production/src/resolvers/query/AuthLogQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/AuthPolicyQueryResolver.cjs +8 -6
- package/dist/production/src/resolvers/query/AuthPolicyQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/AuthPolicyQueryResolver.js +8 -6
- package/dist/production/src/resolvers/query/AuthPolicyQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs +8 -6
- package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js +8 -6
- package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/CustomRoleQueryResolver.cjs +55 -0
- package/dist/production/src/resolvers/query/CustomRoleQueryResolver.cjs.map +1 -0
- package/dist/production/src/resolvers/query/CustomRoleQueryResolver.js +55 -0
- package/dist/production/src/resolvers/query/CustomRoleQueryResolver.js.map +1 -0
- package/dist/production/src/resolvers/query/IDPQueryResolver.cjs +7 -5
- package/dist/production/src/resolvers/query/IDPQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/IDPQueryResolver.js +7 -5
- package/dist/production/src/resolvers/query/IDPQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/MailTemplateQueryResolver.cjs +21 -14
- package/dist/production/src/resolvers/query/MailTemplateQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/MailTemplateQueryResolver.js +21 -14
- package/dist/production/src/resolvers/query/MailTemplateQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/PersonQueryResolver.cjs +7 -5
- package/dist/production/src/resolvers/query/PersonQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/PersonQueryResolver.js +7 -5
- package/dist/production/src/resolvers/query/PersonQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.cjs +7 -5
- package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.js +7 -5
- package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/ProjectQueryResolver.cjs +10 -7
- package/dist/production/src/resolvers/query/ProjectQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/ProjectQueryResolver.js +10 -7
- package/dist/production/src/resolvers/query/ProjectQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/responseHelpers/ApiKeyResponseFactory.cjs +7 -5
- package/dist/production/src/resolvers/responseHelpers/ApiKeyResponseFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/responseHelpers/ApiKeyResponseFactory.js +7 -5
- package/dist/production/src/resolvers/responseHelpers/ApiKeyResponseFactory.js.map +1 -1
- package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.cjs +5 -0
- package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.js +5 -0
- package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.js.map +1 -1
- package/dist/production/src/resolvers/responseHelpers/ProjectResponseFactory.cjs +23 -0
- package/dist/production/src/resolvers/responseHelpers/ProjectResponseFactory.cjs.map +1 -0
- package/dist/production/src/resolvers/responseHelpers/ProjectResponseFactory.js +23 -0
- package/dist/production/src/resolvers/responseHelpers/ProjectResponseFactory.js.map +1 -0
- package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.cjs +8 -6
- package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.js +8 -6
- package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.js.map +1 -1
- package/dist/production/src/resolvers/types/IdentityTypeResolver.cjs +50 -18
- package/dist/production/src/resolvers/types/IdentityTypeResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/types/IdentityTypeResolver.js +50 -18
- package/dist/production/src/resolvers/types/IdentityTypeResolver.js.map +1 -1
- package/dist/production/src/resolvers/types/PersonTypeResolver.cjs +38 -8
- package/dist/production/src/resolvers/types/PersonTypeResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/types/PersonTypeResolver.js +38 -8
- package/dist/production/src/resolvers/types/PersonTypeResolver.js.map +1 -1
- package/dist/production/src/resolvers/types/ProjectTypeResolver.cjs +31 -6
- package/dist/production/src/resolvers/types/ProjectTypeResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/types/ProjectTypeResolver.js +31 -6
- package/dist/production/src/resolvers/types/ProjectTypeResolver.js.map +1 -1
- package/dist/production/src/schema/tenant.graphql.cjs +275 -15
- package/dist/production/src/schema/tenant.graphql.cjs.map +1 -1
- package/dist/production/src/schema/tenant.graphql.js +275 -15
- package/dist/production/src/schema/tenant.graphql.js.map +1 -1
- package/dist/tests/cases/integration/database/dbClock.test.d.ts +2 -0
- package/dist/tests/cases/integration/database/dbClock.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/configurationPanel.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/configurationPanel.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/customRoleCrud.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/customRoleCrud.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/disablePersonMutation.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/disablePersonMutation.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/enablePersonMutation.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/enablePersonMutation.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/gql/addProjectMember.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/changeMyPassword.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/changeMyProfile.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/changePassword.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/changeProfile.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/confirmOtp.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/createApiKey.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/createResetPasswordRequest.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/createSessionToken.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/emailOtp.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/emailVerification.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/invite.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/myIdentityProviders.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/passwordless.d.ts +4 -1
- package/dist/tests/cases/integration/mocked/gql/passwordless.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/prepareOtp.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/resetPassword.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/signIn.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/signInIdp.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/signUp.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/unmanagedInvite.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/gql/updateProjectMember.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/idpClaimMappingConfig.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/idpClaimMappingConfig.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/localAuthenticationDisabled.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/localAuthenticationDisabled.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/mailTemplateScope.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/mailTemplateScope.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/permissionsQuery.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/permissionsQuery.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/signInIdpClaimMapping.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/signInIdpClaimMapping.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/signInIdpClaimMappingFixes.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/signInIdpClaimMappingFixes.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/signInIdpClaimMappingSafety.test.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/signInIdpClaimMappingSafety.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/sql/authLogSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/authPolicySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/consumeBackupCodeSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/createApiKeySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/createIdentitySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/createMembershipSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/createMembershipVariableSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/createPersonSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/createPersonTokenSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/createSessionKeySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/disableApiKeySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/disableOneOffKeySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/emailOtpSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/generateBackupCodesSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getApiKeySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getConfigSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getCustomRolesSql.d.ts +18 -0
- package/dist/tests/cases/integration/mocked/sql/getCustomRolesSql.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/sql/getIdentityByIdSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getIdentityProjectMembershipPresenceSql.d.ts +3 -0
- package/dist/tests/cases/integration/mocked/sql/getIdentityProjectMembershipPresenceSql.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/sql/getIdentityProjectsSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getIdpBySlugSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getIdpSessionByApiKeySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getMailTemplateSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getNextLoginAttemptSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getNextMailAttemptSql.d.ts +1 -1
- package/dist/tests/cases/integration/mocked/sql/getNextMailAttemptSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getPersonByEmailSql.d.ts +1 -0
- package/dist/tests/cases/integration/mocked/sql/getPersonByEmailSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getPersonByIdSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getPersonByIdentity.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getPersonByIdpSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getPersonsByIdentitySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getProjectBySlugSql.d.ts +1 -1
- package/dist/tests/cases/integration/mocked/sql/getProjectBySlugSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/getProjectMembershipSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/listApiKeysSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/listPersonsSql.d.ts +2 -0
- package/dist/tests/cases/integration/mocked/sql/listPersonsSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/listProjectSecretsSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/listSessionsSql.d.ts +1 -1
- package/dist/tests/cases/integration/mocked/sql/listSessionsSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/localAuthDisablingIdpsSql.d.ts +10 -0
- package/dist/tests/cases/integration/mocked/sql/localAuthDisablingIdpsSql.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/sql/loginHistorySql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/patchVariablesSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/personIdentityProvidersSql.d.ts +1 -0
- package/dist/tests/cases/integration/mocked/sql/personIdentityProvidersSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/removeMembershipSql.d.ts +8 -0
- package/dist/tests/cases/integration/mocked/sql/removeMembershipSql.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/sql/selectMembershipsSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/setEmailOtpEnabledSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/sqlTransaction.d.ts +6 -0
- package/dist/tests/cases/integration/mocked/sql/sqlTransaction.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/updatePesonNameSql.d.ts.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/updatePesonPasswordSql.d.ts.map +1 -1
- package/dist/tests/cases/unit/apiKey/verifyAndProlongReplica.test.d.ts +2 -0
- package/dist/tests/cases/unit/apiKey/verifyAndProlongReplica.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/customRoleAuthorizator.test.d.ts +2 -0
- package/dist/tests/cases/unit/customRoleAuthorizator.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/customRolePermissions.test.d.ts +2 -0
- package/dist/tests/cases/unit/customRolePermissions.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/databaseContextRetry.test.d.ts +2 -0
- package/dist/tests/cases/unit/databaseContextRetry.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/idp/claimIdpRevalidation.test.d.ts +2 -0
- package/dist/tests/cases/unit/idp/claimIdpRevalidation.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/idp/claimMappingEvaluator.test.d.ts +2 -0
- package/dist/tests/cases/unit/idp/claimMappingEvaluator.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/idp/claimMappingValidation.test.d.ts +2 -0
- package/dist/tests/cases/unit/idp/claimMappingValidation.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/idp/idpManagerConfigMerge.test.d.ts +2 -0
- package/dist/tests/cases/unit/idp/idpManagerConfigMerge.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/idp/idpManagerUnknownConfigKeys.test.d.ts +2 -0
- package/dist/tests/cases/unit/idp/idpManagerUnknownConfigKeys.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/idp/oidcClaims.test.d.ts +2 -0
- package/dist/tests/cases/unit/idp/oidcClaims.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/panelAccessResolver.test.d.ts +2 -0
- package/dist/tests/cases/unit/panelAccessResolver.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/savePersonTokenCommand.test.d.ts +2 -0
- package/dist/tests/cases/unit/savePersonTokenCommand.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/updateConfigurationCommand.test.d.ts +2 -0
- package/dist/tests/cases/unit/updateConfigurationCommand.test.d.ts.map +1 -0
- package/dist/tests/src/IdPMock.d.ts.map +1 -1
- package/dist/tests/src/dbUtils.d.ts.map +1 -1
- package/dist/tests/src/tags.d.ts.map +1 -1
- package/dist/tests/src/testGraphql.d.ts.map +1 -1
- package/dist/tests/src/testTenant.d.ts +16 -4
- package/dist/tests/src/testTenant.d.ts.map +1 -1
- package/dist/tests/src/testUuid.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/TenantContainer.d.ts +36 -13
- package/dist/types/TenantContainer.d.ts.map +1 -1
- package/dist/types/bridges/system/IdentityFetcher.d.ts +2 -2
- package/dist/types/bridges/system/IdentityFetcher.d.ts.map +1 -1
- package/dist/types/exceptions.d.ts.map +1 -1
- package/dist/types/migrations/2026-06-18-120000-idp-claim-mapping.d.ts +3 -0
- package/dist/types/migrations/2026-06-18-120000-idp-claim-mapping.d.ts.map +1 -0
- package/dist/types/migrations/2026-08-03-120000-person-enable-auth-log.d.ts +3 -0
- package/dist/types/migrations/2026-08-03-120000-person-enable-auth-log.d.ts.map +1 -0
- package/dist/types/migrations/2026-08-04-120000-config-panel.d.ts +3 -0
- package/dist/types/migrations/2026-08-04-120000-config-panel.d.ts.map +1 -0
- package/dist/types/migrations/2026-09-04-120000-idp-disable-local-authentication.d.ts +3 -0
- package/dist/types/migrations/2026-09-04-120000-idp-disable-local-authentication.d.ts.map +1 -0
- package/dist/types/migrations/2026-09-11-120000-custom-role.d.ts +3 -0
- package/dist/types/migrations/2026-09-11-120000-custom-role.d.ts.map +1 -0
- package/dist/types/migrations/runner.d.ts.map +1 -1
- package/dist/types/migrations/snapshot-factory.d.ts.map +1 -1
- package/dist/types/migrations/snapshot.d.ts.map +1 -1
- package/dist/types/migrations/tenantCredentials.d.ts.map +1 -1
- package/dist/types/model/authorization/AclSchemaAccessNodeFactory.d.ts.map +1 -1
- package/dist/types/model/authorization/CustomRoleAuthorizator.d.ts +29 -0
- package/dist/types/model/authorization/CustomRoleAuthorizator.d.ts.map +1 -0
- package/dist/types/model/authorization/CustomRolePermissions.d.ts +45 -0
- package/dist/types/model/authorization/CustomRolePermissions.d.ts.map +1 -0
- package/dist/types/model/authorization/DirectPermissionsAccessNode.d.ts.map +1 -1
- package/dist/types/model/authorization/Identity.d.ts.map +1 -1
- package/dist/types/model/authorization/IdentityFactory.d.ts.map +1 -1
- package/dist/types/model/authorization/IdentityScope.d.ts.map +1 -1
- package/dist/types/model/authorization/MembershipMatcher.d.ts.map +1 -1
- package/dist/types/model/authorization/PermissionActions.d.ts +104 -37
- package/dist/types/model/authorization/PermissionActions.d.ts.map +1 -1
- package/dist/types/model/authorization/PermissionContext.d.ts.map +1 -1
- package/dist/types/model/authorization/PermissionContextFactory.d.ts +13 -2
- package/dist/types/model/authorization/PermissionContextFactory.d.ts.map +1 -1
- package/dist/types/model/authorization/PermissionsFactory.d.ts.map +1 -1
- package/dist/types/model/authorization/ProjectScope.d.ts.map +1 -1
- package/dist/types/model/authorization/ProjectScopeFactory.d.ts.map +1 -1
- package/dist/types/model/authorization/Roles.d.ts +8 -0
- package/dist/types/model/authorization/Roles.d.ts.map +1 -1
- package/dist/types/model/authorization/TargetIdentityPermission.d.ts +15 -0
- package/dist/types/model/authorization/TargetIdentityPermission.d.ts.map +1 -0
- package/dist/types/model/authorization/index.d.ts +3 -0
- package/dist/types/model/authorization/index.d.ts.map +1 -1
- package/dist/types/model/commands/CommandBus.d.ts.map +1 -1
- package/dist/types/model/commands/apiKey/ApiKeyHelper.d.ts +15 -0
- package/dist/types/model/commands/apiKey/ApiKeyHelper.d.ts.map +1 -1
- package/dist/types/model/commands/apiKey/CreateApiKeyCommand.d.ts +5 -1
- package/dist/types/model/commands/apiKey/CreateApiKeyCommand.d.ts.map +1 -1
- package/dist/types/model/commands/apiKey/DisableApiKeyCommand.d.ts.map +1 -1
- package/dist/types/model/commands/apiKey/DisableIdentityApiKeysCommand.d.ts.map +1 -1
- package/dist/types/model/commands/apiKey/DisableOneOffApiKeyCommand.d.ts.map +1 -1
- package/dist/types/model/commands/apiKey/ProlongApiKeyCommand.d.ts +6 -4
- package/dist/types/model/commands/apiKey/ProlongApiKeyCommand.d.ts.map +1 -1
- package/dist/types/model/commands/authLog/CreateAuthLogEntryCommand.d.ts +1 -0
- package/dist/types/model/commands/authLog/CreateAuthLogEntryCommand.d.ts.map +1 -1
- package/dist/types/model/commands/authPolicy/CreateAuthPolicyCommand.d.ts.map +1 -1
- package/dist/types/model/commands/authPolicy/DeleteAuthPolicyCommand.d.ts.map +1 -1
- package/dist/types/model/commands/authPolicy/UpdateAuthPolicyCommand.d.ts.map +1 -1
- package/dist/types/model/commands/backupCode/ConsumeBackupCodeCommand.d.ts.map +1 -1
- package/dist/types/model/commands/backupCode/CreateBackupCodeCommand.d.ts.map +1 -1
- package/dist/types/model/commands/backupCode/DeleteBackupCodesCommand.d.ts.map +1 -1
- package/dist/types/model/commands/configuration/UpdateConfigurationCommand.d.ts.map +1 -1
- package/dist/types/model/commands/customRole/CreateCustomRoleCommand.d.ts +12 -0
- package/dist/types/model/commands/customRole/CreateCustomRoleCommand.d.ts.map +1 -0
- package/dist/types/model/commands/customRole/DeleteCustomRoleCommand.d.ts +13 -0
- package/dist/types/model/commands/customRole/DeleteCustomRoleCommand.d.ts.map +1 -0
- package/dist/types/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.d.ts +8 -0
- package/dist/types/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.d.ts.map +1 -0
- package/dist/types/model/commands/customRole/UpdateCustomRoleCommand.d.ts +16 -0
- package/dist/types/model/commands/customRole/UpdateCustomRoleCommand.d.ts.map +1 -0
- package/dist/types/model/commands/customRole/index.d.ts +5 -0
- package/dist/types/model/commands/customRole/index.d.ts.map +1 -0
- package/dist/types/model/commands/identity/CreateIdentityCommand.d.ts.map +1 -1
- package/dist/types/model/commands/identity/PatchIdentityGlobalRoles.d.ts.map +1 -1
- package/dist/types/model/commands/idp/ClaimIdpRevalidationCommand.d.ts.map +1 -1
- package/dist/types/model/commands/idp/CreateIdpCommand.d.ts.map +1 -1
- package/dist/types/model/commands/idp/CreateIdpSessionCommand.d.ts.map +1 -1
- package/dist/types/model/commands/idp/DisableIdpCommand.d.ts.map +1 -1
- package/dist/types/model/commands/idp/DisconnectPersonIdentityProviderCommand.d.ts.map +1 -1
- package/dist/types/model/commands/idp/EnableIdpCommand.d.ts.map +1 -1
- package/dist/types/model/commands/idp/UpdateIdpCommand.d.ts.map +1 -1
- package/dist/types/model/commands/idp/UpdateIdpSessionCommand.d.ts.map +1 -1
- package/dist/types/model/commands/index.d.ts +1 -0
- package/dist/types/model/commands/index.d.ts.map +1 -1
- package/dist/types/model/commands/mailTemplate/AddMailTemplateCommand.d.ts.map +1 -1
- package/dist/types/model/commands/mailTemplate/RemoveMailTemplateCommand.d.ts.map +1 -1
- package/dist/types/model/commands/membership/AddProjectMemberCommand.d.ts.map +1 -1
- package/dist/types/model/commands/membership/CreateOrUpdateProjectMembershipCommand.d.ts.map +1 -1
- package/dist/types/model/commands/membership/RemoveProjectMemberCommand.d.ts.map +1 -1
- package/dist/types/model/commands/membership/{RemoveProjectMembershipsCommand.d.ts → RemoveProjectMembershipCommand.d.ts} +1 -1
- package/dist/types/model/commands/membership/RemoveProjectMembershipCommand.d.ts.map +1 -0
- package/dist/types/model/commands/membership/UpdateProjectMemberCommand.d.ts.map +1 -1
- package/dist/types/model/commands/membership/index.d.ts +2 -1
- package/dist/types/model/commands/membership/index.d.ts.map +1 -1
- package/dist/types/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.d.ts.map +1 -1
- package/dist/types/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.d.ts.map +1 -1
- package/dist/types/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.d.ts.map +1 -1
- package/dist/types/model/commands/membership/variables/index.d.ts +1 -0
- package/dist/types/model/commands/membership/variables/index.d.ts.map +1 -1
- package/dist/types/model/commands/otp/ConfirmOtpCommand.d.ts.map +1 -1
- package/dist/types/model/commands/otp/DisableOtpCommand.d.ts.map +1 -1
- package/dist/types/model/commands/otp/PrepareOtpCommand.d.ts.map +1 -1
- package/dist/types/model/commands/otp/ReEncryptOtpSecretCommand.d.ts.map +1 -1
- package/dist/types/model/commands/otp/SetEmailOtpEnabledCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/ChangePasswordCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/ChangeProfileCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/CreatePersonCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/DisablePersonCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/EnablePersonCommand.d.ts +7 -0
- package/dist/types/model/commands/person/EnablePersonCommand.d.ts.map +1 -0
- package/dist/types/model/commands/person/MarkEmailVerifiedCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/ResetPersonMfaCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/SetMfaGraceUntilCommand.d.ts +8 -3
- package/dist/types/model/commands/person/SetMfaGraceUntilCommand.d.ts.map +1 -1
- package/dist/types/model/commands/person/TogglePersonPasswordlessCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/ActivateOtpCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/ClaimOtpAttemptCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/CreatePersonTokenCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/IncreaseOtpAttemptCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/InvalidateEmailOtpTokensCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/InvalidateTokenCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/ResetPasswordCommand.d.ts +1 -1
- package/dist/types/model/commands/personToken/ResetPasswordCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/SaveEmailOtpTokenCommand.d.ts.map +1 -1
- package/dist/types/model/commands/personToken/SavePersonTokenCommand.d.ts.map +1 -1
- package/dist/types/model/commands/project/CreateProjectCommand.d.ts.map +1 -1
- package/dist/types/model/commands/project/SetProjectSecretCommand.d.ts.map +1 -1
- package/dist/types/model/commands/project/UpdateProjectCommand.d.ts.map +1 -1
- package/dist/types/model/commands/rateLimit/RecordRateLimitEventCommand.d.ts.map +1 -1
- package/dist/types/model/dtos/Password.d.ts.map +1 -1
- package/dist/types/model/mailing/UserMailer.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/BackupCodesExhausted.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/EmailChangeNotify.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/EmailChangeVerify.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/EmailOtp.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/EmailVerification.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/ExistingUserInvited.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/ForcedSignOut.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/Layout.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/NewUserInvited.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/PasswordReset.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/PasswordlessSignIn.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/templates/UnusualLogin.mustache.d.ts.map +1 -1
- package/dist/types/model/mailing/type.d.ts.map +1 -1
- package/dist/types/model/queries/apiKey/ApiKeyListQuery.d.ts.map +1 -1
- package/dist/types/model/queries/apiKey/ApiKeyQuery.d.ts +4 -0
- package/dist/types/model/queries/apiKey/ApiKeyQuery.d.ts.map +1 -1
- package/dist/types/model/queries/apiKey/ApiKeySessionsQuery.d.ts +1 -4
- package/dist/types/model/queries/apiKey/ApiKeySessionsQuery.d.ts.map +1 -1
- package/dist/types/model/queries/authLog/AuthLogQuery.d.ts.map +1 -1
- package/dist/types/model/queries/authLog/NextLoginAttemptQuery.d.ts +2 -2
- package/dist/types/model/queries/authLog/NextLoginAttemptQuery.d.ts.map +1 -1
- package/dist/types/model/queries/authLog/NextMailAttemptQuery.d.ts +2 -2
- package/dist/types/model/queries/authLog/NextMailAttemptQuery.d.ts.map +1 -1
- package/dist/types/model/queries/authPolicy/AuthPoliciesQuery.d.ts.map +1 -1
- package/dist/types/model/queries/configuration/ConfigurationQuery.d.ts.map +1 -1
- package/dist/types/model/queries/customRole/CustomRolesQuery.d.ts +12 -0
- package/dist/types/model/queries/customRole/CustomRolesQuery.d.ts.map +1 -0
- package/dist/types/model/queries/customRole/index.d.ts +2 -0
- package/dist/types/model/queries/customRole/index.d.ts.map +1 -0
- package/dist/types/model/queries/identity/IdentitiesHoldingRoleCountQuery.d.ts +8 -0
- package/dist/types/model/queries/identity/IdentitiesHoldingRoleCountQuery.d.ts.map +1 -0
- package/dist/types/model/queries/identity/IdentityQuery.d.ts +3 -2
- package/dist/types/model/queries/identity/IdentityQuery.d.ts.map +1 -1
- package/dist/types/model/queries/identity/index.d.ts +1 -0
- package/dist/types/model/queries/identity/index.d.ts.map +1 -1
- package/dist/types/model/queries/idp/IdentityProviderBySlugQuery.d.ts.map +1 -1
- package/dist/types/model/queries/idp/IdentityProvidersQuery.d.ts.map +1 -1
- package/dist/types/model/queries/idp/IdpSessionByApiKeyQuery.d.ts.map +1 -1
- package/dist/types/model/queries/idp/IdpSessionsBySidQuery.d.ts.map +1 -1
- package/dist/types/model/queries/idp/IdpSessionsBySubQuery.d.ts.map +1 -1
- package/dist/types/model/queries/idp/LocalAuthDisablingIdpsQuery.d.ts +18 -0
- package/dist/types/model/queries/idp/LocalAuthDisablingIdpsQuery.d.ts.map +1 -0
- package/dist/types/model/queries/idp/PersonIdentityProvidersQuery.d.ts +1 -0
- package/dist/types/model/queries/idp/PersonIdentityProvidersQuery.d.ts.map +1 -1
- package/dist/types/model/queries/idp/helpers.d.ts +1 -1
- package/dist/types/model/queries/idp/helpers.d.ts.map +1 -1
- package/dist/types/model/queries/idp/index.d.ts +1 -0
- package/dist/types/model/queries/idp/index.d.ts.map +1 -1
- package/dist/types/model/queries/idp/types.d.ts +1 -0
- package/dist/types/model/queries/idp/types.d.ts.map +1 -1
- package/dist/types/model/queries/index.d.ts +1 -0
- package/dist/types/model/queries/index.d.ts.map +1 -1
- package/dist/types/model/queries/mailTemplate/MailTemplateListQuery.d.ts.map +1 -1
- package/dist/types/model/queries/mailTemplate/MailTemplateQuery.d.ts.map +1 -1
- package/dist/types/model/queries/membership/AllProjectRolesByIdentityQuery.d.ts.map +1 -1
- package/dist/types/model/queries/membership/IdentityHasProjectMembershipsQuery.d.ts +7 -0
- package/dist/types/model/queries/membership/IdentityHasProjectMembershipsQuery.d.ts.map +1 -0
- package/dist/types/model/queries/membership/ProjectMembersQuery.d.ts.map +1 -1
- package/dist/types/model/queries/membership/ProjectMembershipByIdentityQuery.d.ts.map +1 -1
- package/dist/types/model/queries/membership/ProjectRolesByIdentityQuery.d.ts.map +1 -1
- package/dist/types/model/queries/membership/ProjectSlugSpecification.d.ts.map +1 -1
- package/dist/types/model/queries/membership/index.d.ts +1 -0
- package/dist/types/model/queries/membership/index.d.ts.map +1 -1
- package/dist/types/model/queries/person/PersonByIdPQuery.d.ts.map +1 -1
- package/dist/types/model/queries/person/PersonByIdentityBatchQuery.d.ts.map +1 -1
- package/dist/types/model/queries/person/PersonQuery.d.ts.map +1 -1
- package/dist/types/model/queries/person/PersonQueryBuilderFactory.d.ts.map +1 -1
- package/dist/types/model/queries/person/PersonsQuery.d.ts.map +1 -1
- package/dist/types/model/queries/person/types.d.ts +3 -0
- package/dist/types/model/queries/person/types.d.ts.map +1 -1
- package/dist/types/model/queries/personToken/PersonTokenQuery.d.ts.map +1 -1
- package/dist/types/model/queries/project/ProjectBySlugQuery.d.ts.map +1 -1
- package/dist/types/model/queries/project/ProjectSecretKeysQuery.d.ts.map +1 -1
- package/dist/types/model/queries/project/ProjectSecretsQuery.d.ts.map +1 -1
- package/dist/types/model/queries/project/ProjectUpdateTimestampQuery.d.ts.map +1 -1
- package/dist/types/model/queries/project/ProjectsByIdentityQuery.d.ts.map +1 -1
- package/dist/types/model/queries/project/ProjectsQuery.d.ts.map +1 -1
- package/dist/types/model/queries/rateLimit/RateLimitCountQuery.d.ts +2 -2
- package/dist/types/model/queries/rateLimit/RateLimitCountQuery.d.ts.map +1 -1
- package/dist/types/model/service/AuthLogService.d.ts.map +1 -1
- package/dist/types/model/service/AuthPolicyManager.d.ts.map +1 -1
- package/dist/types/model/service/AuthPolicyResolver.d.ts.map +1 -1
- package/dist/types/model/service/BackupCodeManager.d.ts.map +1 -1
- package/dist/types/model/service/ConfigurationManager.d.ts.map +1 -1
- package/dist/types/model/service/CustomRoleManager.d.ts +46 -0
- package/dist/types/model/service/CustomRoleManager.d.ts.map +1 -0
- package/dist/types/model/service/EmailChangeManager.d.ts.map +1 -1
- package/dist/types/model/service/EmailOtpManager.d.ts.map +1 -1
- package/dist/types/model/service/EmailValidator.d.ts.map +1 -1
- package/dist/types/model/service/EmailVerificationManager.d.ts.map +1 -1
- package/dist/types/model/service/GlobalRoleValidator.d.ts +5 -0
- package/dist/types/model/service/GlobalRoleValidator.d.ts.map +1 -0
- package/dist/types/model/service/HibpChecker.d.ts.map +1 -1
- package/dist/types/model/service/IDPSignInManager.d.ts +13 -1
- package/dist/types/model/service/IDPSignInManager.d.ts.map +1 -1
- package/dist/types/model/service/InviteManager.d.ts.map +1 -1
- package/dist/types/model/service/LoginRiskAnalyzer.d.ts +1 -1
- package/dist/types/model/service/LoginRiskAnalyzer.d.ts.map +1 -1
- package/dist/types/model/service/MailTemplateManager.d.ts.map +1 -1
- package/dist/types/model/service/MembershipValidator.d.ts.map +1 -1
- package/dist/types/model/service/OtpAuthenticator.d.ts.map +1 -1
- package/dist/types/model/service/OtpManager.d.ts.map +1 -1
- package/dist/types/model/service/PanelAccessResolver.d.ts +19 -0
- package/dist/types/model/service/PanelAccessResolver.d.ts.map +1 -0
- package/dist/types/model/service/PasswordChangeManager.d.ts.map +1 -1
- package/dist/types/model/service/PasswordResetManager.d.ts.map +1 -1
- package/dist/types/model/service/PasswordStrengthValidator.d.ts.map +1 -1
- package/dist/types/model/service/PasswordlessSignInManager.d.ts.map +1 -1
- package/dist/types/model/service/PersonAccessManager.d.ts +5 -2
- package/dist/types/model/service/PersonAccessManager.d.ts.map +1 -1
- package/dist/types/model/service/PersonManager.d.ts.map +1 -1
- package/dist/types/model/service/ProjectManager.d.ts.map +1 -1
- package/dist/types/model/service/ProjectMemberManager.d.ts.map +1 -1
- package/dist/types/model/service/RateLimiter.d.ts +1 -1
- package/dist/types/model/service/RateLimiter.d.ts.map +1 -1
- package/dist/types/model/service/RolesManager.d.ts +6 -1
- package/dist/types/model/service/RolesManager.d.ts.map +1 -1
- package/dist/types/model/service/SecretsManager.d.ts.map +1 -1
- package/dist/types/model/service/SignInManager.d.ts.map +1 -1
- package/dist/types/model/service/SignOutManager.d.ts.map +1 -1
- package/dist/types/model/service/SignUpManager.d.ts +3 -1
- package/dist/types/model/service/SignUpManager.d.ts.map +1 -1
- package/dist/types/model/service/apiKey/ApiKeyManager.d.ts +4 -1
- package/dist/types/model/service/apiKey/ApiKeyManager.d.ts.map +1 -1
- package/dist/types/model/service/apiKey/ApiKeyService.d.ts +2 -2
- package/dist/types/model/service/apiKey/ApiKeyService.d.ts.map +1 -1
- package/dist/types/model/service/apiKey/UnpersistedApiKeyManager.d.ts +18 -0
- package/dist/types/model/service/apiKey/UnpersistedApiKeyManager.d.ts.map +1 -1
- package/dist/types/model/service/captcha/CaptchaValidator.d.ts.map +1 -1
- package/dist/types/model/service/captcha/HCaptchaProvider.d.ts.map +1 -1
- package/dist/types/model/service/captcha/RecaptchaV3Provider.d.ts.map +1 -1
- package/dist/types/model/service/captcha/TurnstileProvider.d.ts.map +1 -1
- package/dist/types/model/service/helpers/getPreferredProject.d.ts.map +1 -1
- package/dist/types/model/service/helpers/isPasswordlessEnabled.d.ts.map +1 -1
- package/dist/types/model/service/idp/BackchannelLogoutManager.d.ts.map +1 -1
- package/dist/types/model/service/idp/ClaimMapping.d.ts +330 -0
- package/dist/types/model/service/idp/ClaimMapping.d.ts.map +1 -0
- package/dist/types/model/service/idp/ClaimMappingEvaluator.d.ts +30 -0
- package/dist/types/model/service/idp/ClaimMappingEvaluator.d.ts.map +1 -0
- package/dist/types/model/service/idp/ClaimMappingValidation.d.ts +55 -0
- package/dist/types/model/service/idp/ClaimMappingValidation.d.ts.map +1 -0
- package/dist/types/model/service/idp/IDPClaimSyncService.d.ts +113 -0
- package/dist/types/model/service/idp/IDPClaimSyncService.d.ts.map +1 -0
- package/dist/types/model/service/idp/IDPHandlerRegistry.d.ts.map +1 -1
- package/dist/types/model/service/idp/IDPManager.d.ts +31 -1
- package/dist/types/model/service/idp/IDPManager.d.ts.map +1 -1
- package/dist/types/model/service/idp/IdentityProviderHandler.d.ts +7 -0
- package/dist/types/model/service/idp/IdentityProviderHandler.d.ts.map +1 -1
- package/dist/types/model/service/idp/IdpSessionRevalidator.d.ts +15 -1
- package/dist/types/model/service/idp/IdpSessionRevalidator.d.ts.map +1 -1
- package/dist/types/model/service/idp/PersonIdentityProviderManager.d.ts.map +1 -1
- package/dist/types/model/service/idp/index.d.ts +4 -0
- package/dist/types/model/service/idp/index.d.ts.map +1 -1
- package/dist/types/model/service/idp/providers/AppleProvider.d.ts +2 -2
- package/dist/types/model/service/idp/providers/AppleProvider.d.ts.map +1 -1
- package/dist/types/model/service/idp/providers/FacebookProvider.d.ts +2 -2
- package/dist/types/model/service/idp/providers/FacebookProvider.d.ts.map +1 -1
- package/dist/types/model/service/idp/providers/OIDCHelpers.d.ts +13 -1
- package/dist/types/model/service/idp/providers/OIDCHelpers.d.ts.map +1 -1
- package/dist/types/model/service/idp/providers/OIDCProvider.d.ts +1 -1
- package/dist/types/model/service/idp/providers/OIDCProvider.d.ts.map +1 -1
- package/dist/types/model/service/idp/providers/OIDCTypes.d.ts +5 -5
- package/dist/types/model/service/idp/providers/helpers.d.ts.map +1 -1
- package/dist/types/model/service/index.d.ts +3 -0
- package/dist/types/model/service/index.d.ts.map +1 -1
- package/dist/types/model/service/membershipUtils.d.ts.map +1 -1
- package/dist/types/model/type/AuthLog.d.ts +1 -1
- package/dist/types/model/type/AuthLog.d.ts.map +1 -1
- package/dist/types/model/type/Config.d.ts +2 -0
- package/dist/types/model/type/Config.d.ts.map +1 -1
- package/dist/types/model/type/CustomRole.d.ts +9 -0
- package/dist/types/model/type/CustomRole.d.ts.map +1 -0
- package/dist/types/model/type/IdentityProvider.d.ts +2 -0
- package/dist/types/model/type/IdentityProvider.d.ts.map +1 -1
- package/dist/types/model/type/PersonToken.d.ts +2 -0
- package/dist/types/model/type/PersonToken.d.ts.map +1 -1
- package/dist/types/model/type/RateLimit.d.ts +6 -6
- package/dist/types/model/type/RateLimit.d.ts.map +1 -1
- package/dist/types/model/type/index.d.ts +1 -0
- package/dist/types/model/type/index.d.ts.map +1 -1
- package/dist/types/model/utils/DatabaseContext.d.ts +15 -1
- package/dist/types/model/utils/DatabaseContext.d.ts.map +1 -1
- package/dist/types/model/utils/Response.d.ts.map +1 -1
- package/dist/types/model/utils/email.d.ts.map +1 -1
- package/dist/types/model/utils/hex.d.ts.map +1 -1
- package/dist/types/model/utils/interval.d.ts.map +1 -1
- package/dist/types/model/utils/time.d.ts.map +1 -1
- package/dist/types/model/utils/token.d.ts +1 -2
- package/dist/types/model/utils/token.d.ts.map +1 -1
- package/dist/types/resolvers/ResolverFactory.d.ts +6 -0
- package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
- package/dist/types/resolvers/TenantResolverContext.d.ts +1 -1
- package/dist/types/resolvers/TenantResolverContext.d.ts.map +1 -1
- package/dist/types/resolvers/TenantResolverContextFactory.d.ts +1 -1
- package/dist/types/resolvers/TenantResolverContextFactory.d.ts.map +1 -1
- package/dist/types/resolvers/errorUtils.d.ts.map +1 -1
- package/dist/types/resolvers/membershipUtils.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/configuration/AuthPolicyMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/configuration/ConfigurationMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/customRole/CustomRoleMutationResolver.d.ts +16 -0
- package/dist/types/resolvers/mutation/customRole/CustomRoleMutationResolver.d.ts.map +1 -0
- package/dist/types/resolvers/mutation/identity/GlobalRolesMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/idp/AddIDPMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/idp/DisableIDPMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/idp/DisconnectMyIdentityProviderMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/idp/EnableIDPMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/idp/UpdateIDPMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/idp/audit.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.d.ts +2 -0
- package/dist/types/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/ChangePasswordMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/ChangeProfileMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/DisablePersonMutationResolver.d.ts +1 -1
- package/dist/types/resolvers/mutation/person/DisablePersonMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/EmailOtpMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/EmailVerificationMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/EnablePersonMutationResolver.d.ts +11 -0
- package/dist/types/resolvers/mutation/person/EnablePersonMutationResolver.d.ts.map +1 -0
- package/dist/types/resolvers/mutation/person/ForceSignOutMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/IDPMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/InviteMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/OtpMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/PasswordlessMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/RegenerateBackupCodesMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/ResetPasswordMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/ResetPersonMfaMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/RevokeSessionMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/SignInMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/SignOutMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/SignUpMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/TogglePasswordlessMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/project/CreateProjectMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/project/SetProjectSecretMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/project/UpdateProjectMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/projectMember/audit.d.ts +1 -1
- package/dist/types/resolvers/mutation/projectMember/audit.d.ts.map +1 -1
- package/dist/types/resolvers/query/ApiKeyQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/AuthLogQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/AuthPolicyQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/ConfigurationQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/CustomRoleQueryResolver.d.ts +11 -0
- package/dist/types/resolvers/query/CustomRoleQueryResolver.d.ts.map +1 -0
- package/dist/types/resolvers/query/IDPQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/MailTemplateQueryResolver.d.ts +1 -0
- package/dist/types/resolvers/query/MailTemplateQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/MeQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/PersonQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/ProjectMembersQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/query/ProjectQueryResolver.d.ts.map +1 -1
- package/dist/types/resolvers/responseHelpers/ApiKeyResponseFactory.d.ts.map +1 -1
- package/dist/types/resolvers/responseHelpers/PersonResponseFactory.d.ts.map +1 -1
- package/dist/types/resolvers/responseHelpers/ProjectResponseFactory.d.ts +10 -0
- package/dist/types/resolvers/responseHelpers/ProjectResponseFactory.d.ts.map +1 -0
- package/dist/types/resolvers/responseHelpers/SignInResponseFactory.d.ts.map +1 -1
- package/dist/types/resolvers/types/IdentityTypeResolver.d.ts.map +1 -1
- package/dist/types/resolvers/types/PersonTypeResolver.d.ts +15 -1
- package/dist/types/resolvers/types/PersonTypeResolver.d.ts.map +1 -1
- package/dist/types/resolvers/types/ProjectTypeResolver.d.ts +15 -6
- package/dist/types/resolvers/types/ProjectTypeResolver.d.ts.map +1 -1
- package/dist/types/schema/index.d.ts +381 -21
- package/dist/types/schema/index.d.ts.map +1 -1
- package/dist/types/schema/tenant.graphql.d.ts.map +1 -1
- package/dist/types/schema/types.d.ts +2 -2
- package/dist/types/schema/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils/Mailer.d.ts.map +1 -1
- package/dist/types/utils/TemplateRenderer.d.ts.map +1 -1
- package/dist/types/utils/array.d.ts.map +1 -1
- package/dist/types/utils/batchQuery.d.ts.map +1 -1
- package/package.json +12 -12
- package/readme.md +56 -0
- package/src/TenantContainer.ts +46 -8
- package/src/migrations/2026-06-18-120000-idp-claim-mapping.ts +15 -0
- package/src/migrations/2026-08-03-120000-person-enable-auth-log.ts +12 -0
- package/src/migrations/2026-08-04-120000-config-panel.ts +13 -0
- package/src/migrations/2026-09-04-120000-idp-disable-local-authentication.ts +18 -0
- package/src/migrations/2026-09-11-120000-custom-role.ts +19 -0
- package/src/migrations/runner.ts +10 -0
- package/src/migrations/snapshot.ts +22 -2
- package/src/model/authorization/CustomRoleAuthorizator.ts +72 -0
- package/src/model/authorization/CustomRolePermissions.ts +558 -0
- package/src/model/authorization/PermissionActions.ts +74 -17
- package/src/model/authorization/PermissionContextFactory.ts +39 -3
- package/src/model/authorization/PermissionsFactory.ts +65 -31
- package/src/model/authorization/Roles.ts +13 -0
- package/src/model/authorization/TargetIdentityPermission.ts +37 -0
- package/src/model/authorization/index.ts +3 -0
- package/src/model/commands/apiKey/ApiKeyHelper.ts +23 -0
- package/src/model/commands/apiKey/CreateApiKeyCommand.ts +12 -5
- package/src/model/commands/apiKey/ProlongApiKeyCommand.ts +22 -14
- package/src/model/commands/authLog/CreateAuthLogEntryCommand.ts +1 -0
- package/src/model/commands/configuration/UpdateConfigurationCommand.ts +5 -4
- package/src/model/commands/customRole/CreateCustomRoleCommand.ts +30 -0
- package/src/model/commands/customRole/DeleteCustomRoleCommand.ts +20 -0
- package/src/model/commands/customRole/RemoveCustomRoleAssignmentsCommand.ts +20 -0
- package/src/model/commands/customRole/UpdateCustomRoleCommand.ts +30 -0
- package/src/model/commands/customRole/index.ts +4 -0
- package/src/model/commands/identity/PatchIdentityGlobalRoles.ts +1 -1
- package/src/model/commands/idp/ClaimIdpRevalidationCommand.ts +8 -7
- package/src/model/commands/idp/CreateIdpCommand.ts +7 -1
- package/src/model/commands/idp/CreateIdpSessionCommand.ts +5 -2
- package/src/model/commands/idp/UpdateIdpCommand.ts +5 -1
- package/src/model/commands/idp/UpdateIdpSessionCommand.ts +3 -2
- package/src/model/commands/index.ts +1 -0
- package/src/model/commands/membership/UpdateProjectMemberCommand.ts +1 -1
- package/src/model/commands/membership/index.ts +2 -1
- package/src/model/commands/membership/variables/index.ts +1 -0
- package/src/model/commands/person/CreatePersonCommand.ts +1 -0
- package/src/model/commands/person/EnablePersonCommand.ts +18 -0
- package/src/model/commands/person/SetMfaGraceUntilCommand.ts +9 -4
- package/src/model/commands/personToken/ResetPasswordCommand.ts +2 -3
- package/src/model/commands/personToken/SaveEmailOtpTokenCommand.ts +5 -4
- package/src/model/commands/personToken/SavePersonTokenCommand.ts +13 -7
- package/src/model/commands/rateLimit/RecordRateLimitEventCommand.ts +3 -1
- package/src/model/queries/apiKey/ApiKeyQuery.ts +17 -1
- package/src/model/queries/apiKey/ApiKeySessionsQuery.ts +2 -2
- package/src/model/queries/authLog/NextLoginAttemptQuery.ts +14 -12
- package/src/model/queries/authLog/NextMailAttemptQuery.ts +12 -10
- package/src/model/queries/configuration/ConfigurationQuery.ts +4 -0
- package/src/model/queries/customRole/CustomRolesQuery.ts +30 -0
- package/src/model/queries/customRole/index.ts +1 -0
- package/src/model/queries/identity/IdentitiesHoldingRoleCountQuery.ts +17 -0
- package/src/model/queries/identity/IdentityQuery.ts +10 -4
- package/src/model/queries/identity/index.ts +1 -0
- package/src/model/queries/idp/LocalAuthDisablingIdpsQuery.ts +41 -0
- package/src/model/queries/idp/PersonIdentityProvidersQuery.ts +2 -0
- package/src/model/queries/idp/helpers.ts +3 -2
- package/src/model/queries/idp/index.ts +1 -0
- package/src/model/queries/idp/types.ts +1 -0
- package/src/model/queries/index.ts +1 -0
- package/src/model/queries/membership/IdentityHasProjectMembershipsQuery.ts +17 -0
- package/src/model/queries/membership/ProjectMembersQuery.ts +1 -0
- package/src/model/queries/membership/index.ts +1 -0
- package/src/model/queries/person/PersonQueryBuilderFactory.ts +4 -0
- package/src/model/queries/person/types.ts +3 -0
- package/src/model/queries/personToken/PersonTokenQuery.ts +4 -0
- package/src/model/queries/rateLimit/RateLimitCountQuery.ts +5 -2
- package/src/model/service/AuthLogService.ts +18 -2
- package/src/model/service/CustomRoleManager.ts +221 -0
- package/src/model/service/EmailChangeManager.ts +3 -3
- package/src/model/service/EmailOtpManager.ts +0 -1
- package/src/model/service/EmailVerificationManager.ts +3 -3
- package/src/model/service/GlobalRoleValidator.ts +30 -0
- package/src/model/service/IDPSignInManager.ts +74 -14
- package/src/model/service/PanelAccessResolver.ts +32 -0
- package/src/model/service/PasswordResetManager.ts +11 -3
- package/src/model/service/PasswordlessSignInManager.ts +26 -6
- package/src/model/service/PersonAccessManager.ts +19 -3
- package/src/model/service/RateLimiter.ts +2 -3
- package/src/model/service/RolesManager.ts +28 -14
- package/src/model/service/SignInManager.ts +16 -8
- package/src/model/service/SignUpManager.ts +12 -4
- package/src/model/service/apiKey/ApiKeyManager.ts +75 -53
- package/src/model/service/apiKey/ApiKeyService.ts +2 -2
- package/src/model/service/apiKey/UnpersistedApiKeyManager.ts +24 -0
- package/src/model/service/idp/ClaimMapping.ts +283 -0
- package/src/model/service/idp/ClaimMappingEvaluator.ts +226 -0
- package/src/model/service/idp/ClaimMappingValidation.ts +158 -0
- package/src/model/service/idp/IDPClaimSyncService.ts +401 -0
- package/src/model/service/idp/IDPManager.ts +126 -21
- package/src/model/service/idp/IdentityProviderHandler.ts +7 -0
- package/src/model/service/idp/IdpSessionRevalidator.ts +130 -25
- package/src/model/service/idp/PersonIdentityProviderManager.ts +8 -0
- package/src/model/service/idp/index.ts +4 -0
- package/src/model/service/idp/providers/OIDCHelpers.ts +161 -53
- package/src/model/service/idp/providers/OIDCProvider.ts +4 -1
- package/src/model/service/index.ts +3 -0
- package/src/model/type/AuthLog.ts +4 -0
- package/src/model/type/Config.ts +3 -0
- package/src/model/type/CustomRole.ts +8 -0
- package/src/model/type/IdentityProvider.ts +2 -0
- package/src/model/type/PersonToken.ts +2 -0
- package/src/model/type/index.ts +1 -0
- package/src/model/utils/DatabaseContext.ts +30 -6
- package/src/model/utils/token.ts +2 -3
- package/src/resolvers/ResolverFactory.ts +17 -0
- package/src/resolvers/TenantResolverContext.ts +1 -1
- package/src/resolvers/TenantResolverContextFactory.ts +5 -5
- package/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.ts +13 -5
- package/src/resolvers/mutation/customRole/CustomRoleMutationResolver.ts +125 -0
- package/src/resolvers/mutation/identity/GlobalRolesMutationResolver.ts +30 -7
- package/src/resolvers/mutation/idp/AddIDPMutationResolver.ts +1 -0
- package/src/resolvers/mutation/idp/UpdateIDPMutationResolver.ts +1 -0
- package/src/resolvers/mutation/idp/audit.ts +1 -0
- package/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.ts +48 -14
- package/src/resolvers/mutation/person/ChangePasswordMutationResolver.ts +2 -2
- package/src/resolvers/mutation/person/ChangeProfileMutationResolver.ts +9 -3
- package/src/resolvers/mutation/person/DisablePersonMutationResolver.ts +5 -5
- package/src/resolvers/mutation/person/EmailVerificationMutationResolver.ts +1 -1
- package/src/resolvers/mutation/person/EnablePersonMutationResolver.ts +50 -0
- package/src/resolvers/mutation/person/ForceSignOutMutationResolver.ts +2 -2
- package/src/resolvers/mutation/person/IDPMutationResolver.ts +31 -0
- package/src/resolvers/mutation/person/PasswordlessMutationResolver.ts +7 -0
- package/src/resolvers/mutation/person/ResetPasswordMutationResolver.ts +1 -1
- package/src/resolvers/mutation/person/ResetPersonMfaMutationResolver.ts +2 -2
- package/src/resolvers/mutation/person/SignInMutationResolver.ts +22 -9
- package/src/resolvers/mutation/person/SignUpMutationResolver.ts +1 -1
- package/src/resolvers/query/CustomRoleQueryResolver.ts +41 -0
- package/src/resolvers/query/MailTemplateQueryResolver.ts +13 -8
- package/src/resolvers/query/PersonQueryResolver.ts +3 -1
- package/src/resolvers/query/ProjectQueryResolver.ts +3 -2
- package/src/resolvers/responseHelpers/PersonResponseFactory.ts +5 -0
- package/src/resolvers/responseHelpers/ProjectResponseFactory.ts +24 -0
- package/src/resolvers/responseHelpers/SignInResponseFactory.ts +1 -1
- package/src/resolvers/types/IdentityTypeResolver.ts +50 -14
- package/src/resolvers/types/PersonTypeResolver.ts +45 -4
- package/src/resolvers/types/ProjectTypeResolver.ts +33 -1
- package/src/schema/index.ts +483 -15
- package/src/schema/tenant.graphql.ts +275 -15
- package/tests/cases/integration/database/dbClock.test.ts +171 -0
- package/tests/cases/integration/mocked/antiAbuseSignUp.test.ts +2 -2
- package/tests/cases/integration/mocked/changeMyProfileEmailVerificationMutation.test.ts +10 -11
- package/tests/cases/integration/mocked/changePasswordMutation.test.ts +43 -0
- package/tests/cases/integration/mocked/changeProfileMutation.test.ts +2 -0
- package/tests/cases/integration/mocked/configurationPanel.test.ts +105 -0
- package/tests/cases/integration/mocked/confirmEmailChangeMutation.test.ts +4 -2
- package/tests/cases/integration/mocked/createSessionKeyMutation.test.ts +33 -0
- package/tests/cases/integration/mocked/customRoleCrud.test.ts +442 -0
- package/tests/cases/integration/mocked/disablePersonMutation.test.ts +92 -0
- package/tests/cases/integration/mocked/enablePersonMutation.test.ts +137 -0
- package/tests/cases/integration/mocked/forceSignOutPersonMutation.test.ts +3 -1
- package/tests/cases/integration/mocked/globalIdentityRolesMutation.test.ts +169 -3
- package/tests/cases/integration/mocked/gql/passwordless.ts +10 -0
- package/tests/cases/integration/mocked/idpClaimMappingConfig.test.ts +332 -0
- package/tests/cases/integration/mocked/listProjectMembersQuery.test.ts +8 -3
- package/tests/cases/integration/mocked/localAuthenticationDisabled.test.ts +182 -0
- package/tests/cases/integration/mocked/mailTemplateScope.test.ts +95 -0
- package/tests/cases/integration/mocked/permissionsQuery.test.ts +153 -0
- package/tests/cases/integration/mocked/personByIdQuery.test.ts +59 -1
- package/tests/cases/integration/mocked/personIdentityProviders.test.ts +67 -0
- package/tests/cases/integration/mocked/personsQuery.test.ts +38 -5
- package/tests/cases/integration/mocked/requestEmailVerificationMutation.test.ts +15 -6
- package/tests/cases/integration/mocked/resetPersonMfaMutation.test.ts +5 -3
- package/tests/cases/integration/mocked/signInAnomalyDetection.test.ts +13 -2
- package/tests/cases/integration/mocked/signInIdpClaimMapping.test.ts +1258 -0
- package/tests/cases/integration/mocked/signInIdpClaimMappingFixes.test.ts +344 -0
- package/tests/cases/integration/mocked/signInIdpClaimMappingSafety.test.ts +531 -0
- package/tests/cases/integration/mocked/signInIdpMutation.test.ts +105 -1
- package/tests/cases/integration/mocked/signInMfaEnforcement.test.ts +20 -5
- package/tests/cases/integration/mocked/signInMutation.test.ts +14 -0
- package/tests/cases/integration/mocked/signInPasswordlessMutation.test.ts +38 -1
- package/tests/cases/integration/mocked/signUpMutation.test.ts +62 -3
- package/tests/cases/integration/mocked/sql/createPersonTokenSql.ts +4 -3
- package/tests/cases/integration/mocked/sql/createSessionKeySql.ts +2 -2
- package/tests/cases/integration/mocked/sql/emailOtpSql.ts +10 -8
- package/tests/cases/integration/mocked/sql/getApiKeySql.ts +2 -2
- package/tests/cases/integration/mocked/sql/getConfigSql.ts +3 -0
- package/tests/cases/integration/mocked/sql/getCustomRolesSql.ts +25 -0
- package/tests/cases/integration/mocked/sql/getIdentityProjectMembershipPresenceSql.ts +11 -0
- package/tests/cases/integration/mocked/sql/getIdpBySlugSql.ts +1 -1
- package/tests/cases/integration/mocked/sql/getNextLoginAttemptSql.ts +15 -11
- package/tests/cases/integration/mocked/sql/getNextMailAttemptSql.ts +12 -13
- package/tests/cases/integration/mocked/sql/getPersonByEmailSql.ts +5 -2
- package/tests/cases/integration/mocked/sql/getPersonByIdSql.ts +1 -1
- package/tests/cases/integration/mocked/sql/getPersonByIdentity.ts +1 -1
- package/tests/cases/integration/mocked/sql/getPersonByIdpSql.ts +1 -1
- package/tests/cases/integration/mocked/sql/getPersonsByIdentitySql.ts +1 -1
- package/tests/cases/integration/mocked/sql/getProjectBySlugSql.ts +1 -1
- package/tests/cases/integration/mocked/sql/listPersonsSql.ts +5 -2
- package/tests/cases/integration/mocked/sql/listSessionsSql.ts +3 -3
- package/tests/cases/integration/mocked/sql/localAuthDisablingIdpsSql.ts +21 -0
- package/tests/cases/integration/mocked/sql/personIdentityProvidersSql.ts +4 -2
- package/tests/cases/integration/mocked/sql/removeMembershipSql.ts +14 -0
- package/tests/cases/integration/mocked/sql/sqlTransaction.ts +28 -0
- package/tests/cases/integration/mocked/trustForwardedClientInfo.test.ts +60 -3
- package/tests/cases/integration/mocked/verifyEmailMutation.test.ts +9 -5
- package/tests/cases/unit/apiKey/createSessionApiKeyPolicy.test.ts +9 -6
- package/tests/cases/unit/apiKey/prolongApiKeyCommand.test.ts +29 -19
- package/tests/cases/unit/apiKey/unpersistedApiKeyManager.test.ts +4 -5
- package/tests/cases/unit/apiKey/verifyAndProlongIdle.test.ts +16 -6
- package/tests/cases/unit/apiKey/verifyAndProlongReplica.test.ts +173 -0
- package/tests/cases/unit/authLogBaselineWrite.test.ts +26 -3
- package/tests/cases/unit/backupCodeManager.test.ts +1 -0
- package/tests/cases/unit/customRoleAuthorizator.test.ts +149 -0
- package/tests/cases/unit/customRolePermissions.test.ts +583 -0
- package/tests/cases/unit/databaseContextRetry.test.ts +81 -0
- package/tests/cases/unit/emailOtpManager.test.ts +10 -8
- package/tests/cases/unit/idp/claimIdpRevalidation.test.ts +50 -0
- package/tests/cases/unit/idp/claimMappingEvaluator.test.ts +554 -0
- package/tests/cases/unit/idp/claimMappingValidation.test.ts +134 -0
- package/tests/cases/unit/idp/idpManagerConfigMerge.test.ts +97 -0
- package/tests/cases/unit/idp/idpManagerUnknownConfigKeys.test.ts +108 -0
- package/tests/cases/unit/idp/idpSessionRevalidator.test.ts +261 -26
- package/tests/cases/unit/idp/oidcClaims.test.ts +29 -0
- package/tests/cases/unit/idp/oidcResponse.test.ts +54 -0
- package/tests/cases/unit/idp/oidcRevalidate.test.ts +94 -2
- package/tests/cases/unit/otpManager.test.ts +1 -0
- package/tests/cases/unit/panelAccessResolver.test.ts +57 -0
- package/tests/cases/unit/rateLimiter.test.ts +7 -7
- package/tests/cases/unit/savePersonTokenCommand.test.ts +40 -0
- package/tests/cases/unit/updateConfigurationCommand.test.ts +63 -0
- package/tests/src/IdPMock.ts +6 -0
- package/tests/src/testTenant.ts +60 -12
- package/dist/development/src/model/commands/membership/RemoveProjectMembershipsCommand.cjs.map +0 -1
- package/dist/development/src/model/commands/membership/RemoveProjectMembershipsCommand.js.map +0 -1
- package/dist/production/src/model/commands/membership/RemoveProjectMembershipsCommand.cjs.map +0 -1
- package/dist/production/src/model/commands/membership/RemoveProjectMembershipsCommand.js.map +0 -1
- package/dist/types/model/commands/membership/RemoveProjectMembershipsCommand.d.ts.map +0 -1
- /package/src/model/commands/membership/{RemoveProjectMembershipsCommand.ts → RemoveProjectMembershipCommand.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OIDCHelpers.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCHelpers.ts"],"sourcesContent":["import { Client, custom, errors, generators, Issuer, TokenSet } from 'openid-client'\nimport { createRemoteJWKSet, jwtVerify } from 'jose'\nimport { OIDCClaimMapping, OIDCResponseData } from './OIDCTypes.js'\nimport { IDPValidationError } from '../IDPValidationError.js'\nimport { IDPResponseError } from '../IDPResponseError.js'\nimport {\n\tIDPResponse,\n\tIDPSessionState,\n\tInitIDPAuthResult,\n\tLogoutTokenClaims,\n\tLogoutUrlRequest,\n\tRevalidationResult,\n} from '../IdentityProviderHandler.js'\n\n/**\n * Build the persisted session state from an OIDC token set. Stores the tokens needed for\n * later re-validation (refresh/access) and SLO (id_token); the whole `tokens` blob is\n * encrypted at rest by the command layer.\n *\n * `prevTokens` carries the previously stored tokens forward: a refresh-grant response MAY omit\n * the refresh token (RFC 6749 §6 — IdPs that don't rotate just don't re-send it), in which case\n * the client must keep using the old one. Without this fallback a non-rotating IdP would persist\n * a session with no refresh token and be revoked (`no_refresh_token`) on the very next tick.\n */\nexport const tokenSetToSessionState = (tokenSet: TokenSet, sessionId?: string, prevTokens?: Record<string, unknown>): IDPSessionState => {\n\tconst refreshToken = tokenSet.refresh_token ?? (typeof prevTokens?.refresh_token === 'string' ? prevTokens.refresh_token : undefined)\n\tconst idToken = tokenSet.id_token ?? (typeof prevTokens?.id_token === 'string' ? prevTokens.id_token : undefined)\n\treturn {\n\t\tsessionId,\n\t\ttokens: {\n\t\t\t...(refreshToken ? { refresh_token: refreshToken } : {}),\n\t\t\t...(tokenSet.access_token ? { access_token: tokenSet.access_token } : {}),\n\t\t\t...(idToken ? { id_token: idToken } : {}),\n\t\t},\n\t\texpiresAt: tokenSet.expires_at ? new Date(tokenSet.expires_at * 1000) : undefined,\n\t}\n}\n\nexport const initOIDCAuth = async (\n\tclient: Client,\n\t{ redirectUrl, scope, responseMode }: { redirectUrl: string; scope?: string; responseMode?: string },\n): Promise<InitIDPAuthResult> => {\n\tconst nonce = generators.nonce()\n\tconst state = generators.state()\n\tconst url = client.authorizationUrl({\n\t\tredirect_uri: redirectUrl,\n\t\tresponse_mode: responseMode,\n\t\tscope: scope ?? 'openid email',\n\t\tnonce,\n\t\tstate,\n\t})\n\n\treturn {\n\t\tauthUrl: url,\n\t\tsessionData: { nonce, state },\n\t}\n}\n\nexport type HandleOIDCResponseOptions = {\n\tfetchUserInfo?: boolean\n\treturnOIDCResult?: boolean\n\tcaptureSession?: boolean\n\tclaimMapping?: OIDCClaimMapping\n}\n\n/** Read a claim by name, supporting dot-paths into nested objects (`a.b.c`). */\nconst getClaim = (source: Record<string, unknown>, path: string): unknown =>\n\tpath.split('.').reduce<unknown>(\n\t\t(acc, key) => (acc != null && typeof acc === 'object' ? (acc as Record<string, unknown>)[key] : undefined),\n\t\tsource,\n\t)\n\nexport const handleOIDCResponse = async (\n\tclient: Client,\n\t{ sessionData, redirectUrl, ...otherData }: OIDCResponseData,\n\t{ fetchUserInfo, returnOIDCResult, captureSession, claimMapping }: HandleOIDCResponseOptions = {},\n): Promise<IDPResponse> => {\n\tconst params = 'parameters' in otherData ? otherData.parameters : client.callbackParams(otherData.url)\n\tif (params.state && !sessionData?.state) {\n\t\tthrow new IDPValidationError(`state is present in parameters, but missing in session data`)\n\t}\n\ttry {\n\t\tconst result = await client.callback(redirectUrl, params, sessionData)\n\t\tconst claims = result.claims()\n\t\tconst { at_hash, c_hash, nonce, ...claimsWithoutHashes } = claims\n\t\tconst userInfo = result.access_token && fetchUserInfo ? await client.userinfo(result) : {}\n\t\tconst oidcResult = returnOIDCResult ? result : {}\n\t\tconst idpSession = captureSession ? tokenSetToSessionState(result, typeof claims.sid === 'string' ? claims.sid : undefined) : undefined\n\n\t\t// Merge ID-token claims with userInfo (userInfo wins, per spec). Then optionally lift a\n\t\t// nested attributes object to the top level so providers that nest their claims (notably\n\t\t// Apereo CAS userinfo, which returns them under `attributes`) map without a code change.\n\t\t// The nested attributes are UNSIGNED, so they must not override a claim already present in\n\t\t// the (signature-verified) ID-token / userInfo merge — spread them UNDER `source`, not over\n\t\t// it, so a signed `sub` / `email_verified` keeps precedence over an attributes-level value.\n\t\tlet source: Record<string, unknown> = { ...claimsWithoutHashes, ...userInfo }\n\t\tconst attributesKey = claimMapping?.attributesKey\n\t\tif (attributesKey) {\n\t\t\tconst nested = source[attributesKey]\n\t\t\tif (nested && typeof nested === 'object' && !Array.isArray(nested)) {\n\t\t\t\tsource = { ...(nested as Record<string, unknown>), ...source }\n\t\t\t}\n\t\t}\n\n\t\t// The OIDC `email_verified` claim is a boolean per spec, but some providers send the\n\t\t// string \"true\". userInfo (and any unwrapped attributes) take precedence over the ID token.\n\t\tconst rawEmailVerified = source.email_verified\n\t\tconst emailVerified = rawEmailVerified === true || rawEmailVerified === 'true'\n\n\t\t// `externalIdentifier` is the federation key persisted in `person_identity_provider` and\n\t\t// matched on the next sign-in, so it must be a stable scalar. A `claimMapping` that pointed\n\t\t// it at an object/array would otherwise be coerced by `String(...)` to `'[object Object]'` /\n\t\t// a comma-join — collapsing every user of the provider onto one key (account takeover). Fail\n\t\t// closed instead. The default `sub` path is safe (openid-client guarantees `sub` is a string).\n\t\tconst mappedSubject = getClaim(source, claimMapping?.externalIdentifier ?? 'sub')\n\t\tlet externalIdentifier: string\n\t\tif (mappedSubject === undefined || mappedSubject === null) {\n\t\t\texternalIdentifier = claims.sub\n\t\t} else if (typeof mappedSubject === 'string' || typeof mappedSubject === 'number') {\n\t\t\texternalIdentifier = String(mappedSubject)\n\t\t} else {\n\t\t\tthrow new IDPValidationError(`The mapped externalIdentifier claim is not a scalar value`)\n\t\t}\n\t\tif (externalIdentifier === '') {\n\t\t\tthrow new IDPValidationError(`The mapped externalIdentifier claim resolved to an empty value`)\n\t\t}\n\n\t\t// `email` / `name` are typed `string | undefined` on IDPResponse and feed the by-e-mail\n\t\t// account lookup (which crashes on a non-string). `...source` already placed the raw claim\n\t\t// of whatever type, so OVERWRITE (don't conditionally add) with the mapped value when it is\n\t\t// a string, otherwise `undefined` — a non-string claim must not leak through `...source`.\n\t\tconst email = getClaim(source, claimMapping?.email ?? 'email')\n\t\tconst name = getClaim(source, claimMapping?.name ?? 'name')\n\n\t\treturn {\n\t\t\t...oidcResult,\n\t\t\t...source,\n\t\t\texternalIdentifier,\n\t\t\temail: typeof email === 'string' ? email : undefined,\n\t\t\tname: typeof name === 'string' ? name : undefined,\n\t\t\temailVerified,\n\t\t\t...(idpSession ? { idpSession } : {}),\n\t\t}\n\t} catch (e: any) {\n\t\tif (e instanceof errors.RPError) {\n\t\t\tthrow new IDPValidationError(e.message)\n\t\t}\n\t\tif (e instanceof errors.OPError) {\n\t\t\tconst body = e.response?.body as any\n\t\t\tif (typeof body === 'object' && typeof body?.error === 'object' && typeof body.error?.message === 'string') {\n\t\t\t\tthrow new IDPResponseError(body.error.message)\n\t\t\t}\n\t\t\tthrow new IDPResponseError(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n\n/** OIDC errors that definitively mean \"this session is no longer valid at the IdP\". */\nconst REVOKED_OIDC_ERRORS = new Set(['invalid_grant', 'invalid_token', 'expired_token'])\n\n/**\n * Re-validate a stored OIDC session against the IdP. Returns `revoked` only for definitive\n * IdP responses (invalid/expired grant or inactive introspection). Transient failures\n * (network, IdP down) re-throw so the caller can fail-open and keep the session — IdP\n * downtime must not log everyone out.\n */\nexport const revalidateOIDC = async (\n\tclient: Client,\n\tmethod: 'refresh' | 'userinfo' | 'introspection',\n\tsession: IDPSessionState,\n): Promise<RevalidationResult> => {\n\tconst tokens = session.tokens ?? {}\n\tconst refreshToken = typeof tokens.refresh_token === 'string' ? tokens.refresh_token : undefined\n\tconst accessToken = typeof tokens.access_token === 'string' ? tokens.access_token : undefined\n\ttry {\n\t\tif (method === 'refresh') {\n\t\t\tif (!refreshToken) {\n\t\t\t\treturn { status: 'revoked', reason: 'no_refresh_token' }\n\t\t\t}\n\t\t\tconst tokenSet = await client.refresh(refreshToken)\n\t\t\tlet claims: Record<string, unknown> | undefined\n\t\t\ttry {\n\t\t\t\tclaims = tokenSet.id_token ? tokenSet.claims() : undefined\n\t\t\t} catch {\n\t\t\t\tclaims = undefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tstatus: 'valid',\n\t\t\t\tclaims,\n\t\t\t\t// carry the stored tokens forward: a non-rotating IdP omits the refresh token here\n\t\t\t\tidpSession: tokenSetToSessionState(tokenSet, session.sessionId, tokens),\n\t\t\t}\n\t\t}\n\t\tif (method === 'userinfo') {\n\t\t\tif (!accessToken) {\n\t\t\t\treturn { status: 'revoked', reason: 'no_access_token' }\n\t\t\t}\n\t\t\tconst userInfo = await client.userinfo(accessToken)\n\t\t\treturn { status: 'valid', claims: userInfo }\n\t\t}\n\t\t// introspection\n\t\tconst token = accessToken ?? refreshToken\n\t\tif (!token) {\n\t\t\treturn { status: 'revoked', reason: 'no_token' }\n\t\t}\n\t\tconst result = await client.introspect(token, accessToken ? 'access_token' : 'refresh_token')\n\t\tif (!result.active) {\n\t\t\treturn { status: 'revoked', reason: 'inactive' }\n\t\t}\n\t\treturn { status: 'valid' }\n\t} catch (e: any) {\n\t\tif (e instanceof errors.OPError) {\n\t\t\tif (typeof e.error === 'string' && REVOKED_OIDC_ERRORS.has(e.error)) {\n\t\t\t\treturn { status: 'revoked', reason: e.error }\n\t\t\t}\n\t\t\t// The userinfo endpoint signals a rejected access token with a bare HTTP 401 — per\n\t\t\t// RFC 6750 the `WWW-Authenticate` error code is optional, so openid-client may not\n\t\t\t// surface a parseable `error` here. A 401 is still definitive: the token is no\n\t\t\t// longer accepted → revoked. (Introspection is NOT treated this way: it returns 200\n\t\t\t// `{active:false}` for revoked tokens, so a 401/400 there means client-auth/config\n\t\t\t// failure — transient, must not log users out.)\n\t\t\tif (method === 'userinfo' && e.response?.statusCode === 401) {\n\t\t\t\treturn { status: 'revoked', reason: 'userinfo_unauthorized' }\n\t\t\t}\n\t\t}\n\t\t// transient (network / IdP unavailable) — propagate, do not revoke\n\t\tthrow e\n\t}\n}\n\n/**\n * Build an RP-initiated (front-channel) logout URL (OIDC RP-Initiated Logout 1.0). Returns null\n * when the IdP advertises no `end_session_endpoint` — the caller then degrades to a local-only\n * logout (legacy-IdP graceful fallback). The `id_token_hint` lets the IdP identify and confirm the\n * session to terminate; `post_logout_redirect_uri` is where the IdP returns the browser afterwards.\n */\nexport const buildOIDCLogoutUrl = (client: Client, { idToken, postLogoutRedirectUri }: LogoutUrlRequest): string | null => {\n\tif (!client.issuer.metadata.end_session_endpoint) {\n\t\treturn null\n\t}\n\treturn client.endSessionUrl({\n\t\t...(idToken ? { id_token_hint: idToken } : {}),\n\t\t...(postLogoutRedirectUri ? { post_logout_redirect_uri: postLogoutRedirectUri } : {}),\n\t})\n}\n\n/**\n * The OIDC Back-Channel Logout 1.0 event member that MUST be present in a logout token's `events`\n * claim. Its presence (and the absence of a `nonce`) is what distinguishes a logout token from an\n * ID token — both are signed by the same IdP, so without this check an ID token could be replayed\n * to forcibly log a user out.\n */\nconst BACKCHANNEL_LOGOUT_EVENT = 'http://schemas.openid.net/event/backchannel-logout'\n\n/**\n * Max accepted age of a back-channel logout token, derived from its `iat`. OIDC Back-Channel Logout\n * tokens are single-use and short-lived; bounding the age (together with requiring `exp`) limits the\n * window in which a captured token could be replayed to force a logout.\n */\nconst LOGOUT_TOKEN_MAX_AGE_SECONDS = 120\nconst LOGOUT_TOKEN_CLOCK_TOLERANCE_SECONDS = 5\n\n/**\n * Remote JWKS sets keyed by `jwks_uri`. `createRemoteJWKSet` returns a function with its own internal\n * key cache + fetch cooldown, so it MUST be reused across requests — re-creating it per call (as the\n * unauthenticated back-channel endpoint would otherwise do) defeats the cache and turns every request\n * into a potential outbound JWKS fetch. Keyed by URL, so two providers sharing an IdP share the set.\n */\nconst remoteJwksCache = new Map<string, ReturnType<typeof createRemoteJWKSet>>()\n\nconst getRemoteJwks = (jwksUri: string): ReturnType<typeof createRemoteJWKSet> => {\n\tlet jwks = remoteJwksCache.get(jwksUri)\n\tif (!jwks) {\n\t\tjwks = createRemoteJWKSet(new URL(jwksUri))\n\t\tremoteJwksCache.set(jwksUri, jwks)\n\t}\n\treturn jwks\n}\n\n/**\n * Validate an OIDC back-channel logout token (OIDC Back-Channel Logout 1.0 §2.4–2.6) and extract\n * the targeted `sid` / `sub`. The token is a JWT signed by the IdP; we verify the signature against\n * the issuer's JWKS and enforce the issuer + audience (client_id) the same way ID tokens are\n * verified, pinning the signing algorithm to the provider's configured one, then assert the\n * back-channel-specific claims:\n * - `iat` is present and recent and `exp` is present (§2.4 requires both) — bounds the replay window;\n * - `events` contains the back-channel-logout member (it really is a logout token);\n * - it carries a `sid` and/or `sub` (otherwise there is nothing to act on);\n * - it does NOT carry a `nonce` (a `nonce` means it is an ID token being replayed).\n * Throws {@link IDPValidationError} on any failure so the caller can answer 400.\n */\nexport const validateOIDCLogoutToken = async (client: Client, issuer: Issuer<Client>, logoutToken: string): Promise<LogoutTokenClaims> => {\n\tconst jwksUri = issuer.metadata.jwks_uri\n\tif (!jwksUri) {\n\t\tthrow new IDPValidationError('IdP has no jwks_uri; cannot verify logout token')\n\t}\n\tconst clientId = client.metadata.client_id\n\tif (typeof clientId !== 'string' || clientId === '') {\n\t\t// The `aud` check is a core anti-token-substitution defence on this unauthenticated endpoint.\n\t\t// jose treats `audience: undefined` as \"skip the aud check entirely\", so a missing client_id\n\t\t// must fail closed (reject the token) rather than fall through and accept any audience.\n\t\tthrow new IDPValidationError('cannot verify logout token audience: client_id is missing')\n\t}\n\tconst expectedAlg = typeof client.metadata.id_token_signed_response_alg === 'string'\n\t\t? client.metadata.id_token_signed_response_alg\n\t\t: 'RS256'\n\tconst jwks = getRemoteJwks(jwksUri)\n\tlet payload: Record<string, unknown>\n\ttry {\n\t\tconst verified = await jwtVerify(logoutToken, jwks, {\n\t\t\tissuer: issuer.metadata.issuer,\n\t\t\taudience: clientId,\n\t\t\t// pin to the provider's configured signing alg so a JWKS containing a symmetric/none key\n\t\t\t// can never be selected (defence-in-depth on top of jose's own key-type check).\n\t\t\talgorithms: [expectedAlg],\n\t\t\t// §2.4: `iat` and `exp` are REQUIRED. `maxTokenAge` makes `iat` required + bounds freshness;\n\t\t\t// `requiredClaims` makes `exp` required (jose only checks `exp` when present).\n\t\t\tmaxTokenAge: LOGOUT_TOKEN_MAX_AGE_SECONDS,\n\t\t\trequiredClaims: ['exp'],\n\t\t\tclockTolerance: LOGOUT_TOKEN_CLOCK_TOLERANCE_SECONDS,\n\t\t})\n\t\tpayload = verified.payload as Record<string, unknown>\n\t} catch (e: any) {\n\t\tthrow new IDPValidationError(`Invalid logout token: ${e?.message ?? 'verification failed'}`)\n\t}\n\n\t// A logout token MUST NOT contain a nonce; its presence means an ID token is being replayed.\n\tif ('nonce' in payload) {\n\t\tthrow new IDPValidationError('Logout token must not contain a nonce')\n\t}\n\n\tconst events = payload.events\n\tconst hasLogoutEvent = typeof events === 'object' && events !== null && BACKCHANNEL_LOGOUT_EVENT in (events as Record<string, unknown>)\n\tif (!hasLogoutEvent) {\n\t\tthrow new IDPValidationError('Logout token is missing the back-channel-logout event')\n\t}\n\n\tconst sid = typeof payload.sid === 'string' ? payload.sid : undefined\n\tconst sub = typeof payload.sub === 'string' ? payload.sub : undefined\n\tif (!sid && !sub) {\n\t\tthrow new IDPValidationError('Logout token must contain a sid or sub claim')\n\t}\n\n\treturn { sid, sub }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OIDCHelpers.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCHelpers.ts"],"sourcesContent":["import { Client, custom, errors, generators, Issuer, TokenSet } from 'openid-client'\nimport { createRemoteJWKSet, jwtVerify } from 'jose'\nimport { OIDCClaimMapping, OIDCResponseData } from './OIDCTypes.js'\nimport { IDPValidationError } from '../IDPValidationError.js'\nimport { IDPResponseError } from '../IDPResponseError.js'\nimport {\n\tIDPResponse,\n\tIDPSessionState,\n\tInitIDPAuthResult,\n\tLogoutTokenClaims,\n\tLogoutUrlRequest,\n\tRevalidationResult,\n} from '../IdentityProviderHandler.js'\n\n/**\n * Build the persisted session state from an OIDC token set. Stores the tokens needed for\n * later re-validation (refresh/access) and SLO (id_token); the whole `tokens` blob is\n * encrypted at rest by the command layer.\n *\n * `prevTokens` carries the previously stored tokens forward: a refresh-grant response MAY omit\n * the refresh token (RFC 6749 §6 — IdPs that don't rotate just don't re-send it), in which case\n * the client must keep using the old one. Without this fallback a non-rotating IdP would persist\n * a session with no refresh token and be revoked (`no_refresh_token`) on the very next tick.\n */\nexport const tokenSetToSessionState = (tokenSet: TokenSet, sessionId?: string, prevTokens?: Record<string, unknown>): IDPSessionState => {\n\tconst refreshToken = tokenSet.refresh_token ?? (typeof prevTokens?.refresh_token === 'string' ? prevTokens.refresh_token : undefined)\n\tconst idToken = tokenSet.id_token ?? (typeof prevTokens?.id_token === 'string' ? prevTokens.id_token : undefined)\n\treturn {\n\t\tsessionId,\n\t\ttokens: {\n\t\t\t...(refreshToken ? { refresh_token: refreshToken } : {}),\n\t\t\t...(tokenSet.access_token ? { access_token: tokenSet.access_token } : {}),\n\t\t\t...(idToken ? { id_token: idToken } : {}),\n\t\t},\n\t\texpiresAt: tokenSet.expires_at ? new Date(tokenSet.expires_at * 1000) : undefined,\n\t}\n}\n\nexport const initOIDCAuth = async (\n\tclient: Client,\n\t{ redirectUrl, scope, responseMode }: { redirectUrl: string; scope?: string; responseMode?: string },\n): Promise<InitIDPAuthResult> => {\n\tconst nonce = generators.nonce()\n\tconst state = generators.state()\n\tconst url = client.authorizationUrl({\n\t\tredirect_uri: redirectUrl,\n\t\tresponse_mode: responseMode,\n\t\tscope: scope ?? 'openid email',\n\t\tnonce,\n\t\tstate,\n\t})\n\n\treturn {\n\t\tauthUrl: url,\n\t\tsessionData: { nonce, state },\n\t}\n}\n\nexport type HandleOIDCResponseOptions = {\n\tfetchUserInfo?: boolean\n\treturnOIDCResult?: boolean\n\tcaptureSession?: boolean\n\tclaimMapping?: OIDCClaimMapping\n}\n\n/**\n * Read a claim by name, supporting dot-paths into nested objects (`a.b.c`). Own-property only at every\n * segment (mirrors `ClaimMappingEvaluator.resolvePath`): a configured path must never descend into an\n * inherited member, so a `__proto__` / `constructor` segment cannot surface an `Object.prototype` value\n * as the externalIdentifier / email / name.\n */\nconst getClaim = (source: Record<string, unknown>, path: string): unknown =>\n\tpath.split('.').reduce<unknown>(\n\t\t(\n\t\t\tacc,\n\t\t\tkey,\n\t\t) => (acc != null && typeof acc === 'object' && Object.prototype.hasOwnProperty.call(acc, key) ? (acc as Record<string, unknown>)[key] : undefined),\n\t\tsource,\n\t)\n\n/**\n * Lift a configured nested attributes object (`attributesKey`, notably Apereo CAS's `attributes`) to the\n * top level so providers that nest their claims map without a code change. The nested attributes are\n * UNSIGNED, so they are spread UNDER `source` — a signed top-level claim keeps precedence over an\n * attributes-level value. Shared by the sign-in response handler ({@link handleOIDCResponse}) and the\n * session-refresh path ({@link revalidateOIDC}) so BOTH see the same claim surface; without this, an\n * `attributesKey` provider's A09 claim mapping would resolve at sign-in but silently not on refresh.\n */\nexport const liftNestedClaims = (source: Record<string, unknown>, attributesKey: string | undefined): Record<string, unknown> => {\n\tif (!attributesKey) {\n\t\treturn source\n\t}\n\tconst nested = Object.prototype.hasOwnProperty.call(source, attributesKey) ? source[attributesKey] : undefined\n\tif (nested !== null && typeof nested === 'object' && !Array.isArray(nested)) {\n\t\treturn { ...nested, ...source }\n\t}\n\treturn source\n}\n\ntype NormalizedClaims = Record<string, unknown> & {\n\texternalIdentifier: string\n\temail: string | undefined\n\tname: string | undefined\n\temailVerified: boolean\n}\n\n/**\n * Build the normalized claim surface shared by sign-in ({@link handleOIDCResponse}) and session refresh\n * ({@link revalidateOIDC}): lift any configured nested attributes object to the top level, then layer the\n * mapped identity fields (`externalIdentifier` / `email` / `name` / `emailVerified`) over the raw claims.\n * BOTH paths run this SAME normalization so an A09 claim-mapping rule resolves identically whether it\n * targets a raw provider claim or one of the normalized identity fields — without it the two surfaces\n * diverged (refresh saw the raw claim, sign-in the mapped value).\n *\n * `subFallback` is the signature-verified ID-token `sub`, used when a custom `externalIdentifier` mapping\n * resolves to nothing: at sign-in it is guaranteed present; on refresh it is the refreshed id-token's `sub`\n * (or, for the userinfo method, the userinfo `sub`). Throws (account-takeover guard) when the mapped\n * subject is a non-scalar or resolves empty — the refresh caller catches this and skips the sync.\n */\nconst normalizeClaims = (\n\trawSource: Record<string, unknown>,\n\tclaimMapping: OIDCClaimMapping | undefined,\n\tsubFallback: string | undefined,\n): NormalizedClaims => {\n\tconst source = liftNestedClaims(rawSource, claimMapping?.attributesKey)\n\n\t// The OIDC `email_verified` claim is a boolean per spec, but some providers send the\n\t// string \"true\". userInfo (and any unwrapped attributes) take precedence over the ID token.\n\tconst rawEmailVerified = source.email_verified\n\tconst emailVerified = rawEmailVerified === true || rawEmailVerified === 'true'\n\n\t// `externalIdentifier` is the federation key persisted in `person_identity_provider` and\n\t// matched on the next sign-in, so it must be a stable scalar. A `claimMapping` that pointed\n\t// it at an object/array would otherwise be coerced by `String(...)` to `'[object Object]'` /\n\t// a comma-join — collapsing every user of the provider onto one key (account takeover). Fail\n\t// closed instead. The default `sub` path is safe (openid-client guarantees `sub` is a string).\n\tconst mappedSubject = getClaim(source, claimMapping?.externalIdentifier ?? 'sub')\n\tlet externalIdentifier: string\n\tif (mappedSubject === undefined || mappedSubject === null) {\n\t\texternalIdentifier = subFallback ?? ''\n\t} else if (typeof mappedSubject === 'string' || typeof mappedSubject === 'number') {\n\t\texternalIdentifier = String(mappedSubject)\n\t} else {\n\t\tthrow new IDPValidationError(`The mapped externalIdentifier claim is not a scalar value`)\n\t}\n\tif (externalIdentifier === '') {\n\t\tthrow new IDPValidationError(`The mapped externalIdentifier claim resolved to an empty value`)\n\t}\n\n\t// `email` / `name` are typed `string | undefined` on IDPResponse and feed the by-e-mail\n\t// account lookup (which crashes on a non-string). `...source` already placed the raw claim\n\t// of whatever type, so OVERWRITE (don't conditionally add) with the mapped value when it is\n\t// a string, otherwise `undefined` — a non-string claim must not leak through `...source`.\n\tconst email = getClaim(source, claimMapping?.email ?? 'email')\n\tconst name = resolveName(source, claimMapping)\n\n\treturn {\n\t\t...source,\n\t\texternalIdentifier,\n\t\temail: typeof email === 'string' ? email : undefined,\n\t\tname,\n\t\temailVerified,\n\t}\n}\n\n/**\n * Resolve the display name, falling back to `given_name` + `family_name` when there is no usable\n * `name` claim.\n *\n * `name` is optional in OIDC core and plenty of providers omit it while sending the parts — Apereo\n * CAS and Entra ID do, and so does Keycloak under its default mappers. Without the fallback,\n * `CreatePersonCommand` lands on its own last-resort default and a federated person ends up named\n * after the local part of their e-mail (`jan.novak`) despite the IdP having reported \"Jan Novák\".\n * A single-path `claimMapping.name` cannot express this: the value has to be composed from two\n * claims, not selected from one.\n *\n * An explicitly configured `claimMapping.name` is honoured as-is, fallback included — mapping a\n * claim is a statement about where the name lives, and quietly substituting a different source\n * would defeat it. A blank claim counts as absent: an empty string is not a display name, and\n * treating it as one would keep the fallback (and `CreatePersonCommand`'s) from ever running.\n */\nconst resolveName = (source: Record<string, unknown>, claimMapping: OIDCClaimMapping | undefined): string | undefined => {\n\tconst mapped = getClaim(source, claimMapping?.name ?? 'name')\n\tif (typeof mapped === 'string' && mapped.trim() !== '') {\n\t\treturn mapped\n\t}\n\tif (claimMapping?.name !== undefined) {\n\t\treturn undefined\n\t}\n\tconst parts = [getClaim(source, 'given_name'), getClaim(source, 'family_name')]\n\t\t.filter((part): part is string => typeof part === 'string' && part.trim() !== '')\n\t\t.map(part => part.trim())\n\treturn parts.length > 0 ? parts.join(' ') : undefined\n}\n\nexport const handleOIDCResponse = async (\n\tclient: Client,\n\t{ sessionData, redirectUrl, ...otherData }: OIDCResponseData,\n\t{ fetchUserInfo, returnOIDCResult, captureSession, claimMapping }: HandleOIDCResponseOptions = {},\n): Promise<IDPResponse> => {\n\tconst params = 'parameters' in otherData ? otherData.parameters : client.callbackParams(otherData.url)\n\tif (params.state && !sessionData?.state) {\n\t\tthrow new IDPValidationError(`state is present in parameters, but missing in session data`)\n\t}\n\ttry {\n\t\tconst result = await client.callback(redirectUrl, params, sessionData)\n\t\tconst claims = result.claims()\n\t\tconst { at_hash, c_hash, nonce, ...claimsWithoutHashes } = claims\n\t\tconst userInfo = result.access_token && fetchUserInfo ? await client.userinfo(result) : {}\n\t\tconst oidcResult = returnOIDCResult ? result : {}\n\t\tconst idpSession = captureSession ? tokenSetToSessionState(result, typeof claims.sid === 'string' ? claims.sid : undefined) : undefined\n\n\t\t// Merge ID-token claims with userInfo (userInfo wins, per spec), then normalize the surface (lift\n\t\t// nested attributes + map the identity fields). The refresh path runs the SAME normalization, so a\n\t\t// claim mapping resolves identically at sign-in and on refresh. The default `sub` fallback is safe —\n\t\t// openid-client guarantees `sub` is a string.\n\t\tconst normalized = normalizeClaims({ ...claimsWithoutHashes, ...userInfo }, claimMapping, claims.sub)\n\n\t\treturn {\n\t\t\t...oidcResult,\n\t\t\t...normalized,\n\t\t\t...(idpSession ? { idpSession } : {}),\n\t\t}\n\t} catch (e: any) {\n\t\tif (e instanceof errors.RPError) {\n\t\t\tthrow new IDPValidationError(e.message)\n\t\t}\n\t\tif (e instanceof errors.OPError) {\n\t\t\tconst body = e.response?.body as any\n\t\t\tif (typeof body === 'object' && typeof body?.error === 'object' && typeof body.error?.message === 'string') {\n\t\t\t\tthrow new IDPResponseError(body.error.message)\n\t\t\t}\n\t\t\tthrow new IDPResponseError(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n\n/** OIDC errors that definitively mean \"this session is no longer valid at the IdP\". */\nconst REVOKED_OIDC_ERRORS = new Set(['invalid_grant', 'invalid_token', 'expired_token'])\n\n/**\n * Re-validate a stored OIDC session against the IdP. Returns `revoked` only for definitive\n * IdP responses (invalid/expired grant or inactive introspection). Transient failures\n * (network, IdP down) re-throw so the caller can fail-open and keep the session — IdP\n * downtime must not log everyone out.\n */\nexport const revalidateOIDC = async (\n\tclient: Client,\n\tmethod: 'refresh' | 'userinfo' | 'introspection',\n\tsession: IDPSessionState,\n\toptions: { claimMapping?: OIDCClaimMapping; fetchUserInfo?: boolean } = {},\n): Promise<RevalidationResult> => {\n\tconst { claimMapping, fetchUserInfo } = options\n\tconst tokens = session.tokens ?? {}\n\tconst refreshToken = typeof tokens.refresh_token === 'string' ? tokens.refresh_token : undefined\n\tconst accessToken = typeof tokens.access_token === 'string' ? tokens.access_token : undefined\n\ttry {\n\t\tif (method === 'refresh') {\n\t\t\tif (!refreshToken) {\n\t\t\t\treturn { status: 'revoked', reason: 'no_refresh_token' }\n\t\t\t}\n\t\t\tconst tokenSet = await client.refresh(refreshToken)\n\t\t\tlet claims: Record<string, unknown> | undefined\n\t\t\tlet claimsComplete = false\n\t\t\ttry {\n\t\t\t\t// Reconstruct the SAME claim surface sign-in builds (handleOIDCResponse): the refreshed id-token\n\t\t\t\t// claims merged with userInfo when `fetchUserInfo` is set — exactly as at sign-in — then the shared\n\t\t\t\t// normalization (lift nested attributes + map identity fields). An `always` mapping therefore\n\t\t\t\t// reconciles against an identical surface on refresh, so `claimsComplete` lets the caller enable\n\t\t\t\t// `unmatched: \"remove\"` reconciliation here too (see IdpSessionRevalidator).\n\t\t\t\tif (tokenSet.id_token) {\n\t\t\t\t\tconst idClaims = tokenSet.claims()\n\t\t\t\t\tconst userInfo = tokenSet.access_token && fetchUserInfo ? await client.userinfo(tokenSet) : {}\n\t\t\t\t\tclaims = normalizeClaims({ ...idClaims, ...userInfo }, claimMapping, typeof idClaims.sub === 'string' ? idClaims.sub : undefined)\n\t\t\t\t\tclaimsComplete = true\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Building the surface failed (userinfo unreachable, a non-scalar `externalIdentifier`, …). The IdP\n\t\t\t\t// already vouched for the session via the successful refresh, so KEEP it — just skip the claim sync\n\t\t\t\t// this tick (no claims → no grant, no removal) and retry on a later refresh. Leaving claimsComplete\n\t\t\t\t// false also guarantees a half-built surface can never drive a removal.\n\t\t\t\tclaims = undefined\n\t\t\t\tclaimsComplete = false\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tstatus: 'valid',\n\t\t\t\tclaims,\n\t\t\t\tclaimsComplete,\n\t\t\t\t// carry the stored tokens forward: a non-rotating IdP omits the refresh token here\n\t\t\t\tidpSession: tokenSetToSessionState(tokenSet, session.sessionId, tokens),\n\t\t\t}\n\t\t}\n\t\tif (method === 'userinfo') {\n\t\t\tif (!accessToken) {\n\t\t\t\treturn { status: 'revoked', reason: 'no_access_token' }\n\t\t\t}\n\t\t\tconst userInfo = await client.userinfo(accessToken)\n\t\t\tlet claims: Record<string, unknown> | undefined\n\t\t\ttry {\n\t\t\t\tclaims = normalizeClaims(userInfo, claimMapping, typeof userInfo.sub === 'string' ? userInfo.sub : undefined)\n\t\t\t} catch {\n\t\t\t\tclaims = undefined\n\t\t\t}\n\t\t\t// A userinfo probe carries no id-token claims, so its surface is NARROWER than sign-in's (id-token +\n\t\t\t// userinfo): a rule keyed on an id-token-only claim would miss here. Keep refresh-time sync additive-only\n\t\t\t// (`claimsComplete: false`) so `unmatched: \"remove\"` never strips a membership off this partial surface.\n\t\t\treturn { status: 'valid', claims, claimsComplete: false }\n\t\t}\n\t\t// introspection\n\t\tconst token = accessToken ?? refreshToken\n\t\tif (!token) {\n\t\t\treturn { status: 'revoked', reason: 'no_token' }\n\t\t}\n\t\tconst result = await client.introspect(token, accessToken ? 'access_token' : 'refresh_token')\n\t\tif (!result.active) {\n\t\t\treturn { status: 'revoked', reason: 'inactive' }\n\t\t}\n\t\treturn { status: 'valid' }\n\t} catch (e: any) {\n\t\tif (e instanceof errors.OPError) {\n\t\t\tif (typeof e.error === 'string' && REVOKED_OIDC_ERRORS.has(e.error)) {\n\t\t\t\treturn { status: 'revoked', reason: e.error }\n\t\t\t}\n\t\t\t// The userinfo endpoint signals a rejected access token with a bare HTTP 401 — per\n\t\t\t// RFC 6750 the `WWW-Authenticate` error code is optional, so openid-client may not\n\t\t\t// surface a parseable `error` here. A 401 is still definitive: the token is no\n\t\t\t// longer accepted → revoked. (Introspection is NOT treated this way: it returns 200\n\t\t\t// `{active:false}` for revoked tokens, so a 401/400 there means client-auth/config\n\t\t\t// failure — transient, must not log users out.)\n\t\t\tif (method === 'userinfo' && e.response?.statusCode === 401) {\n\t\t\t\treturn { status: 'revoked', reason: 'userinfo_unauthorized' }\n\t\t\t}\n\t\t}\n\t\t// transient (network / IdP unavailable) — propagate, do not revoke\n\t\tthrow e\n\t}\n}\n\n/**\n * Build an RP-initiated (front-channel) logout URL (OIDC RP-Initiated Logout 1.0). Returns null\n * when the IdP advertises no `end_session_endpoint` — the caller then degrades to a local-only\n * logout (legacy-IdP graceful fallback). The `id_token_hint` lets the IdP identify and confirm the\n * session to terminate; `post_logout_redirect_uri` is where the IdP returns the browser afterwards.\n */\nexport const buildOIDCLogoutUrl = (client: Client, { idToken, postLogoutRedirectUri }: LogoutUrlRequest): string | null => {\n\tif (!client.issuer.metadata.end_session_endpoint) {\n\t\treturn null\n\t}\n\treturn client.endSessionUrl({\n\t\t...(idToken ? { id_token_hint: idToken } : {}),\n\t\t...(postLogoutRedirectUri ? { post_logout_redirect_uri: postLogoutRedirectUri } : {}),\n\t})\n}\n\n/**\n * The OIDC Back-Channel Logout 1.0 event member that MUST be present in a logout token's `events`\n * claim. Its presence (and the absence of a `nonce`) is what distinguishes a logout token from an\n * ID token — both are signed by the same IdP, so without this check an ID token could be replayed\n * to forcibly log a user out.\n */\nconst BACKCHANNEL_LOGOUT_EVENT = 'http://schemas.openid.net/event/backchannel-logout'\n\n/**\n * Max accepted age of a back-channel logout token, derived from its `iat`. OIDC Back-Channel Logout\n * tokens are single-use and short-lived; bounding the age (together with requiring `exp`) limits the\n * window in which a captured token could be replayed to force a logout.\n */\nconst LOGOUT_TOKEN_MAX_AGE_SECONDS = 120\nconst LOGOUT_TOKEN_CLOCK_TOLERANCE_SECONDS = 5\n\n/**\n * Remote JWKS sets keyed by `jwks_uri`. `createRemoteJWKSet` returns a function with its own internal\n * key cache + fetch cooldown, so it MUST be reused across requests — re-creating it per call (as the\n * unauthenticated back-channel endpoint would otherwise do) defeats the cache and turns every request\n * into a potential outbound JWKS fetch. Keyed by URL, so two providers sharing an IdP share the set.\n */\nconst remoteJwksCache = new Map<string, ReturnType<typeof createRemoteJWKSet>>()\n\nconst getRemoteJwks = (jwksUri: string): ReturnType<typeof createRemoteJWKSet> => {\n\tlet jwks = remoteJwksCache.get(jwksUri)\n\tif (!jwks) {\n\t\tjwks = createRemoteJWKSet(new URL(jwksUri))\n\t\tremoteJwksCache.set(jwksUri, jwks)\n\t}\n\treturn jwks\n}\n\n/**\n * Validate an OIDC back-channel logout token (OIDC Back-Channel Logout 1.0 §2.4–2.6) and extract\n * the targeted `sid` / `sub`. The token is a JWT signed by the IdP; we verify the signature against\n * the issuer's JWKS and enforce the issuer + audience (client_id) the same way ID tokens are\n * verified, pinning the signing algorithm to the provider's configured one, then assert the\n * back-channel-specific claims:\n * - `iat` is present and recent and `exp` is present (§2.4 requires both) — bounds the replay window;\n * - `events` contains the back-channel-logout member (it really is a logout token);\n * - it carries a `sid` and/or `sub` (otherwise there is nothing to act on);\n * - it does NOT carry a `nonce` (a `nonce` means it is an ID token being replayed).\n * Throws {@link IDPValidationError} on any failure so the caller can answer 400.\n */\nexport const validateOIDCLogoutToken = async (client: Client, issuer: Issuer<Client>, logoutToken: string): Promise<LogoutTokenClaims> => {\n\tconst jwksUri = issuer.metadata.jwks_uri\n\tif (!jwksUri) {\n\t\tthrow new IDPValidationError('IdP has no jwks_uri; cannot verify logout token')\n\t}\n\tconst clientId = client.metadata.client_id\n\tif (typeof clientId !== 'string' || clientId === '') {\n\t\t// The `aud` check is a core anti-token-substitution defence on this unauthenticated endpoint.\n\t\t// jose treats `audience: undefined` as \"skip the aud check entirely\", so a missing client_id\n\t\t// must fail closed (reject the token) rather than fall through and accept any audience.\n\t\tthrow new IDPValidationError('cannot verify logout token audience: client_id is missing')\n\t}\n\tconst expectedAlg = typeof client.metadata.id_token_signed_response_alg === 'string'\n\t\t? client.metadata.id_token_signed_response_alg\n\t\t: 'RS256'\n\tconst jwks = getRemoteJwks(jwksUri)\n\tlet payload: Record<string, unknown>\n\ttry {\n\t\tconst verified = await jwtVerify(logoutToken, jwks, {\n\t\t\tissuer: issuer.metadata.issuer,\n\t\t\taudience: clientId,\n\t\t\t// pin to the provider's configured signing alg so a JWKS containing a symmetric/none key\n\t\t\t// can never be selected (defence-in-depth on top of jose's own key-type check).\n\t\t\talgorithms: [expectedAlg],\n\t\t\t// §2.4: `iat` and `exp` are REQUIRED. `maxTokenAge` makes `iat` required + bounds freshness;\n\t\t\t// `requiredClaims` makes `exp` required (jose only checks `exp` when present).\n\t\t\tmaxTokenAge: LOGOUT_TOKEN_MAX_AGE_SECONDS,\n\t\t\trequiredClaims: ['exp'],\n\t\t\tclockTolerance: LOGOUT_TOKEN_CLOCK_TOLERANCE_SECONDS,\n\t\t})\n\t\tpayload = verified.payload as Record<string, unknown>\n\t} catch (e: any) {\n\t\tthrow new IDPValidationError(`Invalid logout token: ${e?.message ?? 'verification failed'}`)\n\t}\n\n\t// A logout token MUST NOT contain a nonce; its presence means an ID token is being replayed.\n\tif ('nonce' in payload) {\n\t\tthrow new IDPValidationError('Logout token must not contain a nonce')\n\t}\n\n\tconst events = payload.events\n\tconst hasLogoutEvent = typeof events === 'object' && events !== null && BACKCHANNEL_LOGOUT_EVENT in (events as Record<string, unknown>)\n\tif (!hasLogoutEvent) {\n\t\tthrow new IDPValidationError('Logout token is missing the back-channel-logout event')\n\t}\n\n\tconst sid = typeof payload.sid === 'string' ? payload.sid : undefined\n\tconst sub = typeof payload.sub === 'string' ? payload.sub : undefined\n\tif (!sid && !sub) {\n\t\tthrow new IDPValidationError('Logout token must contain a sid or sub claim')\n\t}\n\n\treturn { sid, sub }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,10 @@ class OIDCProvider {
|
|
|
40
40
|
}
|
|
41
41
|
async revalidate(configuration, session) {
|
|
42
42
|
const client = await this.createOIDCClient(configuration);
|
|
43
|
-
return await OIDCHelpers.revalidateOIDC(client, configuration.revalidation?.method ?? "refresh", session
|
|
43
|
+
return await OIDCHelpers.revalidateOIDC(client, configuration.revalidation?.method ?? "refresh", session, {
|
|
44
|
+
claimMapping: configuration.claimMapping,
|
|
45
|
+
fetchUserInfo: configuration.fetchUserInfo
|
|
46
|
+
});
|
|
44
47
|
}
|
|
45
48
|
async buildLogoutUrl(configuration, request) {
|
|
46
49
|
const client = await this.createOIDCClient(configuration);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OIDCProvider.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCProvider.ts"],"sourcesContent":["import { Client, custom, Issuer } from 'openid-client'\nimport {\n\tIdentityProviderHandler,\n\tIDPResponse,\n\tIDPSessionState,\n\tInitIDPAuthResult,\n\tLogoutTokenClaims,\n\tLogoutUrlRequest,\n\tRevalidationResult,\n} from '../IdentityProviderHandler.js'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError.js'\nimport { catchTypesafe } from './helpers.js'\nimport { OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes.js'\nimport { buildOIDCLogoutUrl, handleOIDCResponse, initOIDCAuth, revalidateOIDC, validateOIDCLogoutToken } from './OIDCHelpers.js'\nimport { IDPValidationError } from '../IDPValidationError.js'\n\nconst DEFAULT_OIDC_TIMEOUT = 5000\nconst OFFLINE_ACCESS_SCOPE = 'offline_access'\n\nexport class OIDCProvider implements IdentityProviderHandler<OIDCConfiguration> {\n\tprivate issuerCache: Record<string, Issuer<Client>> = {}\n\n\tvalidateConfiguration = catchTypesafe(OIDCConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: OIDCConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: this.resolveScope(configuration),\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: OIDCConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(\n\t\t\tclient,\n\t\t\tresponseData,\n\t\t\t{\n\t\t\t\tfetchUserInfo: configuration.fetchUserInfo,\n\t\t\t\treturnOIDCResult: configuration.returnOIDCResult,\n\t\t\t\tcaptureSession: configuration.revalidation?.enabled === true,\n\t\t\t\tclaimMapping: configuration.claimMapping,\n\t\t\t},\n\t\t)\n\t}\n\n\tpublic async revalidate(configuration: OIDCConfiguration, session: IDPSessionState): Promise<RevalidationResult> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await revalidateOIDC(client, configuration.revalidation?.method ?? 'refresh', session)\n\t}\n\n\tpublic async buildLogoutUrl(configuration: OIDCConfiguration, request: LogoutUrlRequest): Promise<string | null> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn buildOIDCLogoutUrl(client, request)\n\t}\n\n\tpublic async validateLogoutToken(configuration: OIDCConfiguration, logoutToken: string): Promise<LogoutTokenClaims> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await validateOIDCLogoutToken(client, client.issuer, logoutToken)\n\t}\n\n\t/**\n\t * Resolve the requested scope, appending `offline_access` when refresh-token\n\t * re-validation is enabled (so the IdP issues a refresh token to revalidate against).\n\t */\n\tprivate resolveScope(configuration: OIDCConfiguration): string {\n\t\tconst baseScope = configuration.scope ?? configuration.claims ?? 'openid email'\n\t\tconst needsOfflineAccess = configuration.revalidation?.enabled === true\n\t\t\t&& (configuration.revalidation.method ?? 'refresh') === 'refresh'\n\t\tif (needsOfflineAccess && !baseScope.split(/\\s+/).includes(OFFLINE_ACCESS_SCOPE)) {\n\t\t\treturn `${baseScope} ${OFFLINE_ACCESS_SCOPE}`\n\t\t}\n\t\treturn baseScope\n\t}\n\n\tgetPublicConfiguration({ clientSecret, ...config }: OIDCConfiguration): Partial<OIDCConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: OIDCConfiguration): Promise<Client> {\n\t\tthis.issuerCache[configuration.url] ??= await Issuer.discover(configuration.url)\n\n\t\tconst client = new this.issuerCache[configuration.url].Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t\tid_token_signed_response_alg: configuration.idTokenSignedResponseAlg ?? 'RS256',\n\t\t\t\t...(configuration.tokenEndpointAuthMethod ? { token_endpoint_auth_method: configuration.tokenEndpointAuthMethod } : {}),\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\n\t\tclient[custom.http_options] = () => ({ timeout: configuration.timeout ?? DEFAULT_OIDC_TIMEOUT })\n\n\t\treturn client\n\t}\n}\n"],"names":["catchTypesafe","OIDCConfiguration","InvalidIDPConfigurationError","OIDCInitData","IDPValidationError","initOIDCAuth","OIDCResponseData","handleOIDCResponse","revalidateOIDC","buildOIDCLogoutUrl","validateOIDCLogoutToken","Issuer","custom"],"mappings":";;;;;;;;;;;AAgBA,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAEtB,MAAM,aAAmE;AAAA,EAAzE,cAAA;AACN,kBAAA,MAAQ,eAA8C,EAAC;AAEvD,kBAAA,MAAA,yBAAwBA,QAAAA,cAAcC,UAAAA,mBAAmBC,6BAAAA,4BAA4B,CAAA;AAAA,EAAA;AAAA,EAErF,MAAa,SAAS,eAAkC,MAA2C;AAClG,UAAM,WAAWF,QAAAA,cAAcG,UAAAA,cAAcC,mBAAAA,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMC,YAAAA,aAAa,QAAQ;AAAA,MACjC,OAAO,KAAK,aAAa,aAAa;AAAA,MACtC,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,eAAkC,MAAqC;AACnG,UAAM,eAAeL,QAAAA,cAAcM,UAAAA,kBAAkBF,mBAAAA,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMG,YAAAA;AAAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,QACC,eAAe,cAAc;AAAA,QAC7B,kBAAkB,cAAc;AAAA,QAChC,gBAAgB,cAAc,cAAc,YAAY;AAAA,QACxD,cAAc,cAAc;AAAA,MAAA;AAAA,IAC7B;AAAA,EAEF;AAAA,EAEA,MAAa,WAAW,eAAkC,SAAuD;AAChH,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMC,YAAAA,eAAe,QAAQ,cAAc,cAAc,UAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"OIDCProvider.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCProvider.ts"],"sourcesContent":["import { Client, custom, Issuer } from 'openid-client'\nimport {\n\tIdentityProviderHandler,\n\tIDPResponse,\n\tIDPSessionState,\n\tInitIDPAuthResult,\n\tLogoutTokenClaims,\n\tLogoutUrlRequest,\n\tRevalidationResult,\n} from '../IdentityProviderHandler.js'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError.js'\nimport { catchTypesafe } from './helpers.js'\nimport { OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes.js'\nimport { buildOIDCLogoutUrl, handleOIDCResponse, initOIDCAuth, revalidateOIDC, validateOIDCLogoutToken } from './OIDCHelpers.js'\nimport { IDPValidationError } from '../IDPValidationError.js'\n\nconst DEFAULT_OIDC_TIMEOUT = 5000\nconst OFFLINE_ACCESS_SCOPE = 'offline_access'\n\nexport class OIDCProvider implements IdentityProviderHandler<OIDCConfiguration> {\n\tprivate issuerCache: Record<string, Issuer<Client>> = {}\n\n\tvalidateConfiguration = catchTypesafe(OIDCConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: OIDCConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: this.resolveScope(configuration),\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: OIDCConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(\n\t\t\tclient,\n\t\t\tresponseData,\n\t\t\t{\n\t\t\t\tfetchUserInfo: configuration.fetchUserInfo,\n\t\t\t\treturnOIDCResult: configuration.returnOIDCResult,\n\t\t\t\tcaptureSession: configuration.revalidation?.enabled === true,\n\t\t\t\tclaimMapping: configuration.claimMapping,\n\t\t\t},\n\t\t)\n\t}\n\n\tpublic async revalidate(configuration: OIDCConfiguration, session: IDPSessionState): Promise<RevalidationResult> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await revalidateOIDC(client, configuration.revalidation?.method ?? 'refresh', session, {\n\t\t\tclaimMapping: configuration.claimMapping,\n\t\t\tfetchUserInfo: configuration.fetchUserInfo,\n\t\t})\n\t}\n\n\tpublic async buildLogoutUrl(configuration: OIDCConfiguration, request: LogoutUrlRequest): Promise<string | null> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn buildOIDCLogoutUrl(client, request)\n\t}\n\n\tpublic async validateLogoutToken(configuration: OIDCConfiguration, logoutToken: string): Promise<LogoutTokenClaims> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await validateOIDCLogoutToken(client, client.issuer, logoutToken)\n\t}\n\n\t/**\n\t * Resolve the requested scope, appending `offline_access` when refresh-token\n\t * re-validation is enabled (so the IdP issues a refresh token to revalidate against).\n\t */\n\tprivate resolveScope(configuration: OIDCConfiguration): string {\n\t\tconst baseScope = configuration.scope ?? configuration.claims ?? 'openid email'\n\t\tconst needsOfflineAccess = configuration.revalidation?.enabled === true\n\t\t\t&& (configuration.revalidation.method ?? 'refresh') === 'refresh'\n\t\tif (needsOfflineAccess && !baseScope.split(/\\s+/).includes(OFFLINE_ACCESS_SCOPE)) {\n\t\t\treturn `${baseScope} ${OFFLINE_ACCESS_SCOPE}`\n\t\t}\n\t\treturn baseScope\n\t}\n\n\tgetPublicConfiguration({ clientSecret, ...config }: OIDCConfiguration): Partial<OIDCConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: OIDCConfiguration): Promise<Client> {\n\t\tthis.issuerCache[configuration.url] ??= await Issuer.discover(configuration.url)\n\n\t\tconst client = new this.issuerCache[configuration.url].Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t\tid_token_signed_response_alg: configuration.idTokenSignedResponseAlg ?? 'RS256',\n\t\t\t\t...(configuration.tokenEndpointAuthMethod ? { token_endpoint_auth_method: configuration.tokenEndpointAuthMethod } : {}),\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\n\t\tclient[custom.http_options] = () => ({ timeout: configuration.timeout ?? DEFAULT_OIDC_TIMEOUT })\n\n\t\treturn client\n\t}\n}\n"],"names":["catchTypesafe","OIDCConfiguration","InvalidIDPConfigurationError","OIDCInitData","IDPValidationError","initOIDCAuth","OIDCResponseData","handleOIDCResponse","revalidateOIDC","buildOIDCLogoutUrl","validateOIDCLogoutToken","Issuer","custom"],"mappings":";;;;;;;;;;;AAgBA,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAEtB,MAAM,aAAmE;AAAA,EAAzE,cAAA;AACN,kBAAA,MAAQ,eAA8C,EAAC;AAEvD,kBAAA,MAAA,yBAAwBA,QAAAA,cAAcC,UAAAA,mBAAmBC,6BAAAA,4BAA4B,CAAA;AAAA,EAAA;AAAA,EAErF,MAAa,SAAS,eAAkC,MAA2C;AAClG,UAAM,WAAWF,QAAAA,cAAcG,UAAAA,cAAcC,mBAAAA,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMC,YAAAA,aAAa,QAAQ;AAAA,MACjC,OAAO,KAAK,aAAa,aAAa;AAAA,MACtC,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,eAAkC,MAAqC;AACnG,UAAM,eAAeL,QAAAA,cAAcM,UAAAA,kBAAkBF,mBAAAA,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMG,YAAAA;AAAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,QACC,eAAe,cAAc;AAAA,QAC7B,kBAAkB,cAAc;AAAA,QAChC,gBAAgB,cAAc,cAAc,YAAY;AAAA,QACxD,cAAc,cAAc;AAAA,MAAA;AAAA,IAC7B;AAAA,EAEF;AAAA,EAEA,MAAa,WAAW,eAAkC,SAAuD;AAChH,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMC,YAAAA,eAAe,QAAQ,cAAc,cAAc,UAAU,WAAW,SAAS;AAAA,MAC7F,cAAc,cAAc;AAAA,MAC5B,eAAe,cAAc;AAAA,IAAA,CAC7B;AAAA,EACF;AAAA,EAEA,MAAa,eAAe,eAAkC,SAAmD;AAChH,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAOC,YAAAA,mBAAmB,QAAQ,OAAO;AAAA,EAC1C;AAAA,EAEA,MAAa,oBAAoB,eAAkC,aAAiD;AACnH,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMC,YAAAA,wBAAwB,QAAQ,OAAO,QAAQ,WAAW;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,aAAa,eAA0C;AAC9D,UAAM,YAAY,cAAc,SAAS,cAAc,UAAU;AACjE,UAAM,qBAAqB,cAAc,cAAc,YAAY,SAC9D,cAAc,aAAa,UAAU,eAAe;AACzD,QAAI,sBAAsB,CAAC,UAAU,MAAM,KAAK,EAAE,SAAS,oBAAoB,GAAG;AACjF,aAAO,GAAG,SAAS,IAAI,oBAAoB;AAAA,IAC5C;AACA,WAAO;AAAA,EACR;AAAA,EAEA,uBAAuB,EAAE,cAAc,GAAG,UAAyD;AAClG,WAAO;AAAA,EACR;AAAA,EAEA,MAAc,iBAAiB,eAAmD;AApFnF,QAAA,IAAA;AAqFE,KAAA,KAAA,KAAK,aAAL,KAAiB,cAAc,GAAA,MAA/B,SAAwC,MAAMC,aAAAA,OAAO,SAAS,cAAc,GAAG;AAE/E,UAAM,SAAS,IAAI,KAAK,YAAY,cAAc,GAAG,EAAE;AAAA,MACtD;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe,cAAc;AAAA,QAC7B,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,QACrD,8BAA8B,cAAc,4BAA4B;AAAA,QACxE,GAAI,cAAc,0BAA0B,EAAE,4BAA4B,cAAc,wBAAA,IAA4B,CAAA;AAAA,MAAC;AAAA,MAEtH;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAA,CAAG;AAAA,MAAA;AAAA,IACnF;AAGD,WAAOC,aAAAA,OAAO,YAAY,IAAI,OAAO,EAAE,SAAS,cAAc,WAAW;AAEzE,WAAO;AAAA,EACR;AACD;;"}
|
|
@@ -38,7 +38,10 @@ class OIDCProvider {
|
|
|
38
38
|
}
|
|
39
39
|
async revalidate(configuration, session) {
|
|
40
40
|
const client = await this.createOIDCClient(configuration);
|
|
41
|
-
return await revalidateOIDC(client, configuration.revalidation?.method ?? "refresh", session
|
|
41
|
+
return await revalidateOIDC(client, configuration.revalidation?.method ?? "refresh", session, {
|
|
42
|
+
claimMapping: configuration.claimMapping,
|
|
43
|
+
fetchUserInfo: configuration.fetchUserInfo
|
|
44
|
+
});
|
|
42
45
|
}
|
|
43
46
|
async buildLogoutUrl(configuration, request) {
|
|
44
47
|
const client = await this.createOIDCClient(configuration);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OIDCProvider.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCProvider.ts"],"sourcesContent":["import { Client, custom, Issuer } from 'openid-client'\nimport {\n\tIdentityProviderHandler,\n\tIDPResponse,\n\tIDPSessionState,\n\tInitIDPAuthResult,\n\tLogoutTokenClaims,\n\tLogoutUrlRequest,\n\tRevalidationResult,\n} from '../IdentityProviderHandler.js'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError.js'\nimport { catchTypesafe } from './helpers.js'\nimport { OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes.js'\nimport { buildOIDCLogoutUrl, handleOIDCResponse, initOIDCAuth, revalidateOIDC, validateOIDCLogoutToken } from './OIDCHelpers.js'\nimport { IDPValidationError } from '../IDPValidationError.js'\n\nconst DEFAULT_OIDC_TIMEOUT = 5000\nconst OFFLINE_ACCESS_SCOPE = 'offline_access'\n\nexport class OIDCProvider implements IdentityProviderHandler<OIDCConfiguration> {\n\tprivate issuerCache: Record<string, Issuer<Client>> = {}\n\n\tvalidateConfiguration = catchTypesafe(OIDCConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: OIDCConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: this.resolveScope(configuration),\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: OIDCConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(\n\t\t\tclient,\n\t\t\tresponseData,\n\t\t\t{\n\t\t\t\tfetchUserInfo: configuration.fetchUserInfo,\n\t\t\t\treturnOIDCResult: configuration.returnOIDCResult,\n\t\t\t\tcaptureSession: configuration.revalidation?.enabled === true,\n\t\t\t\tclaimMapping: configuration.claimMapping,\n\t\t\t},\n\t\t)\n\t}\n\n\tpublic async revalidate(configuration: OIDCConfiguration, session: IDPSessionState): Promise<RevalidationResult> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await revalidateOIDC(client, configuration.revalidation?.method ?? 'refresh', session)\n\t}\n\n\tpublic async buildLogoutUrl(configuration: OIDCConfiguration, request: LogoutUrlRequest): Promise<string | null> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn buildOIDCLogoutUrl(client, request)\n\t}\n\n\tpublic async validateLogoutToken(configuration: OIDCConfiguration, logoutToken: string): Promise<LogoutTokenClaims> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await validateOIDCLogoutToken(client, client.issuer, logoutToken)\n\t}\n\n\t/**\n\t * Resolve the requested scope, appending `offline_access` when refresh-token\n\t * re-validation is enabled (so the IdP issues a refresh token to revalidate against).\n\t */\n\tprivate resolveScope(configuration: OIDCConfiguration): string {\n\t\tconst baseScope = configuration.scope ?? configuration.claims ?? 'openid email'\n\t\tconst needsOfflineAccess = configuration.revalidation?.enabled === true\n\t\t\t&& (configuration.revalidation.method ?? 'refresh') === 'refresh'\n\t\tif (needsOfflineAccess && !baseScope.split(/\\s+/).includes(OFFLINE_ACCESS_SCOPE)) {\n\t\t\treturn `${baseScope} ${OFFLINE_ACCESS_SCOPE}`\n\t\t}\n\t\treturn baseScope\n\t}\n\n\tgetPublicConfiguration({ clientSecret, ...config }: OIDCConfiguration): Partial<OIDCConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: OIDCConfiguration): Promise<Client> {\n\t\tthis.issuerCache[configuration.url] ??= await Issuer.discover(configuration.url)\n\n\t\tconst client = new this.issuerCache[configuration.url].Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t\tid_token_signed_response_alg: configuration.idTokenSignedResponseAlg ?? 'RS256',\n\t\t\t\t...(configuration.tokenEndpointAuthMethod ? { token_endpoint_auth_method: configuration.tokenEndpointAuthMethod } : {}),\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\n\t\tclient[custom.http_options] = () => ({ timeout: configuration.timeout ?? DEFAULT_OIDC_TIMEOUT })\n\n\t\treturn client\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;AAgBA,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAEtB,MAAM,aAAmE;AAAA,EAAzE,cAAA;AACN,kBAAA,MAAQ,eAA8C,EAAC;AAEvD,kBAAA,MAAA,yBAAwB,cAAc,mBAAmB,4BAA4B,CAAA;AAAA,EAAA;AAAA,EAErF,MAAa,SAAS,eAAkC,MAA2C;AAClG,UAAM,WAAW,cAAc,cAAc,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM,aAAa,QAAQ;AAAA,MACjC,OAAO,KAAK,aAAa,aAAa;AAAA,MACtC,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,eAAkC,MAAqC;AACnG,UAAM,eAAe,cAAc,kBAAkB,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,QACC,eAAe,cAAc;AAAA,QAC7B,kBAAkB,cAAc;AAAA,QAChC,gBAAgB,cAAc,cAAc,YAAY;AAAA,QACxD,cAAc,cAAc;AAAA,MAAA;AAAA,IAC7B;AAAA,EAEF;AAAA,EAEA,MAAa,WAAW,eAAkC,SAAuD;AAChH,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM,eAAe,QAAQ,cAAc,cAAc,UAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"OIDCProvider.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCProvider.ts"],"sourcesContent":["import { Client, custom, Issuer } from 'openid-client'\nimport {\n\tIdentityProviderHandler,\n\tIDPResponse,\n\tIDPSessionState,\n\tInitIDPAuthResult,\n\tLogoutTokenClaims,\n\tLogoutUrlRequest,\n\tRevalidationResult,\n} from '../IdentityProviderHandler.js'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError.js'\nimport { catchTypesafe } from './helpers.js'\nimport { OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes.js'\nimport { buildOIDCLogoutUrl, handleOIDCResponse, initOIDCAuth, revalidateOIDC, validateOIDCLogoutToken } from './OIDCHelpers.js'\nimport { IDPValidationError } from '../IDPValidationError.js'\n\nconst DEFAULT_OIDC_TIMEOUT = 5000\nconst OFFLINE_ACCESS_SCOPE = 'offline_access'\n\nexport class OIDCProvider implements IdentityProviderHandler<OIDCConfiguration> {\n\tprivate issuerCache: Record<string, Issuer<Client>> = {}\n\n\tvalidateConfiguration = catchTypesafe(OIDCConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: OIDCConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: this.resolveScope(configuration),\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: OIDCConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(\n\t\t\tclient,\n\t\t\tresponseData,\n\t\t\t{\n\t\t\t\tfetchUserInfo: configuration.fetchUserInfo,\n\t\t\t\treturnOIDCResult: configuration.returnOIDCResult,\n\t\t\t\tcaptureSession: configuration.revalidation?.enabled === true,\n\t\t\t\tclaimMapping: configuration.claimMapping,\n\t\t\t},\n\t\t)\n\t}\n\n\tpublic async revalidate(configuration: OIDCConfiguration, session: IDPSessionState): Promise<RevalidationResult> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await revalidateOIDC(client, configuration.revalidation?.method ?? 'refresh', session, {\n\t\t\tclaimMapping: configuration.claimMapping,\n\t\t\tfetchUserInfo: configuration.fetchUserInfo,\n\t\t})\n\t}\n\n\tpublic async buildLogoutUrl(configuration: OIDCConfiguration, request: LogoutUrlRequest): Promise<string | null> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn buildOIDCLogoutUrl(client, request)\n\t}\n\n\tpublic async validateLogoutToken(configuration: OIDCConfiguration, logoutToken: string): Promise<LogoutTokenClaims> {\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await validateOIDCLogoutToken(client, client.issuer, logoutToken)\n\t}\n\n\t/**\n\t * Resolve the requested scope, appending `offline_access` when refresh-token\n\t * re-validation is enabled (so the IdP issues a refresh token to revalidate against).\n\t */\n\tprivate resolveScope(configuration: OIDCConfiguration): string {\n\t\tconst baseScope = configuration.scope ?? configuration.claims ?? 'openid email'\n\t\tconst needsOfflineAccess = configuration.revalidation?.enabled === true\n\t\t\t&& (configuration.revalidation.method ?? 'refresh') === 'refresh'\n\t\tif (needsOfflineAccess && !baseScope.split(/\\s+/).includes(OFFLINE_ACCESS_SCOPE)) {\n\t\t\treturn `${baseScope} ${OFFLINE_ACCESS_SCOPE}`\n\t\t}\n\t\treturn baseScope\n\t}\n\n\tgetPublicConfiguration({ clientSecret, ...config }: OIDCConfiguration): Partial<OIDCConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: OIDCConfiguration): Promise<Client> {\n\t\tthis.issuerCache[configuration.url] ??= await Issuer.discover(configuration.url)\n\n\t\tconst client = new this.issuerCache[configuration.url].Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t\tid_token_signed_response_alg: configuration.idTokenSignedResponseAlg ?? 'RS256',\n\t\t\t\t...(configuration.tokenEndpointAuthMethod ? { token_endpoint_auth_method: configuration.tokenEndpointAuthMethod } : {}),\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\n\t\tclient[custom.http_options] = () => ({ timeout: configuration.timeout ?? DEFAULT_OIDC_TIMEOUT })\n\n\t\treturn client\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;AAgBA,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAEtB,MAAM,aAAmE;AAAA,EAAzE,cAAA;AACN,kBAAA,MAAQ,eAA8C,EAAC;AAEvD,kBAAA,MAAA,yBAAwB,cAAc,mBAAmB,4BAA4B,CAAA;AAAA,EAAA;AAAA,EAErF,MAAa,SAAS,eAAkC,MAA2C;AAClG,UAAM,WAAW,cAAc,cAAc,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM,aAAa,QAAQ;AAAA,MACjC,OAAO,KAAK,aAAa,aAAa;AAAA,MACtC,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,eAAkC,MAAqC;AACnG,UAAM,eAAe,cAAc,kBAAkB,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,QACC,eAAe,cAAc;AAAA,QAC7B,kBAAkB,cAAc;AAAA,QAChC,gBAAgB,cAAc,cAAc,YAAY;AAAA,QACxD,cAAc,cAAc;AAAA,MAAA;AAAA,IAC7B;AAAA,EAEF;AAAA,EAEA,MAAa,WAAW,eAAkC,SAAuD;AAChH,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM,eAAe,QAAQ,cAAc,cAAc,UAAU,WAAW,SAAS;AAAA,MAC7F,cAAc,cAAc;AAAA,MAC5B,eAAe,cAAc;AAAA,IAAA,CAC7B;AAAA,EACF;AAAA,EAEA,MAAa,eAAe,eAAkC,SAAmD;AAChH,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,mBAAmB,QAAQ,OAAO;AAAA,EAC1C;AAAA,EAEA,MAAa,oBAAoB,eAAkC,aAAiD;AACnH,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM,wBAAwB,QAAQ,OAAO,QAAQ,WAAW;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,aAAa,eAA0C;AAC9D,UAAM,YAAY,cAAc,SAAS,cAAc,UAAU;AACjE,UAAM,qBAAqB,cAAc,cAAc,YAAY,SAC9D,cAAc,aAAa,UAAU,eAAe;AACzD,QAAI,sBAAsB,CAAC,UAAU,MAAM,KAAK,EAAE,SAAS,oBAAoB,GAAG;AACjF,aAAO,GAAG,SAAS,IAAI,oBAAoB;AAAA,IAC5C;AACA,WAAO;AAAA,EACR;AAAA,EAEA,uBAAuB,EAAE,cAAc,GAAG,UAAyD;AAClG,WAAO;AAAA,EACR;AAAA,EAEA,MAAc,iBAAiB,eAAmD;AApFnF,QAAA,IAAA;AAqFE,KAAA,KAAA,KAAK,aAAL,KAAiB,cAAc,GAAA,MAA/B,SAAwC,MAAM,OAAO,SAAS,cAAc,GAAG;AAE/E,UAAM,SAAS,IAAI,KAAK,YAAY,cAAc,GAAG,EAAE;AAAA,MACtD;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe,cAAc;AAAA,QAC7B,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,QACrD,8BAA8B,cAAc,4BAA4B;AAAA,QACxE,GAAI,cAAc,0BAA0B,EAAE,4BAA4B,cAAc,wBAAA,IAA4B,CAAA;AAAA,MAAC;AAAA,MAEtH;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAA,CAAG;AAAA,MAAA;AAAA,IACnF;AAGD,WAAO,OAAO,YAAY,IAAI,OAAO,EAAE,SAAS,cAAc,WAAW;AAEzE,WAAO;AAAA,EACR;AACD;"}
|
|
@@ -20,11 +20,18 @@ class DatabaseContext {
|
|
|
20
20
|
get queryHandler() {
|
|
21
21
|
return this.client.createQueryHandler();
|
|
22
22
|
}
|
|
23
|
-
async transaction(cb) {
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
async transaction(cb, options = {}) {
|
|
24
|
+
const run = async () => await this.client.transaction(async (db) => {
|
|
25
|
+
if (options.isolation !== "readCommitted") {
|
|
26
|
+
await db.query(Database.Connection.REPEATABLE_READ);
|
|
27
|
+
}
|
|
26
28
|
return await cb(new DatabaseContext(db, this.providers));
|
|
27
29
|
});
|
|
30
|
+
const retry = options.retry;
|
|
31
|
+
if (!retry) {
|
|
32
|
+
return await run();
|
|
33
|
+
}
|
|
34
|
+
return await Database.retryTransaction(run, (message) => retry.logger.warn(message));
|
|
28
35
|
}
|
|
29
36
|
async scope(cb) {
|
|
30
37
|
return await this.client.scope(async (db) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseContext.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/DatabaseContext.ts"],"sourcesContent":["import { Client, Connection } from '@contember/database'\nimport { Providers } from '../providers.js'\nimport { CommandBus } from '../commands/index.js'\nimport { BatchLoaderArgs, initBatchLoader, ItemLoader } from '../../utils/batchQuery.js'\n\nexport class DatabaseContext<Conn extends Connection.ConnectionLike = Connection.ConnectionLike> {\n\tprivate loaders = new Map<BatchLoaderArgs<any, any, any>, ItemLoader<any, any>>()\n\n\tconstructor(\n\t\tpublic readonly client: Client<Conn>,\n\t\tpublic readonly providers: Providers,\n\t) {\n\t}\n\n\tpublic get commandBus() {\n\t\treturn new CommandBus(this.client, this.providers)\n\t}\n\n\tpublic get queryHandler() {\n\t\treturn this.client.createQueryHandler()\n\t}\n\n\tpublic async transaction<T>(
|
|
1
|
+
{"version":3,"file":"DatabaseContext.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/DatabaseContext.ts"],"sourcesContent":["import { Client, Connection, retryTransaction } from '@contember/database'\nimport { Logger } from '@contember/logger'\nimport { Providers } from '../providers.js'\nimport { CommandBus } from '../commands/index.js'\nimport { BatchLoaderArgs, initBatchLoader, ItemLoader } from '../../utils/batchQuery.js'\n\nexport interface TransactionOptions {\n\t/**\n\t * Repeat the transaction when postgres aborts it with a serialization failure (40001) — the standing cost of the\n\t * repeatable-read level every transaction here runs at.\n\t *\n\t * Opt in only when the callback has no effect outside the transaction: several managers send a mail from inside\n\t * one (InviteManager, EmailChangeManager, PasswordlessSignInManager) and a retry would send it twice.\n\t */\n\tretry?: { logger: Logger }\n\treadonly isolation?: 'repeatableRead' | 'readCommitted'\n}\n\nexport class DatabaseContext<Conn extends Connection.ConnectionLike = Connection.ConnectionLike> {\n\tprivate loaders = new Map<BatchLoaderArgs<any, any, any>, ItemLoader<any, any>>()\n\n\tconstructor(\n\t\tpublic readonly client: Client<Conn>,\n\t\tpublic readonly providers: Providers,\n\t) {\n\t}\n\n\tpublic get commandBus() {\n\t\treturn new CommandBus(this.client, this.providers)\n\t}\n\n\tpublic get queryHandler() {\n\t\treturn this.client.createQueryHandler()\n\t}\n\n\tpublic async transaction<T>(\n\t\tcb: (dbContext: DatabaseContext<Connection.TransactionLike>) => Promise<T>,\n\t\toptions: TransactionOptions = {},\n\t): Promise<T> {\n\t\tconst run = async () =>\n\t\t\tawait this.client.transaction(async db => {\n\t\t\t\tif (options.isolation !== 'readCommitted') {\n\t\t\t\t\tawait db.query(Connection.REPEATABLE_READ)\n\t\t\t\t}\n\t\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t\t})\n\t\tconst retry = options.retry\n\t\tif (!retry) {\n\t\t\treturn await run()\n\t\t}\n\t\treturn await retryTransaction(run, message => retry.logger.warn(message))\n\t}\n\n\tpublic async scope<T>(cb: (dbContext: DatabaseContext<Connection.AcquiredConnectionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.scope(async db => {\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic batchLoad<Arg, Result, Item>(loaderArgs: BatchLoaderArgs<Arg, Result, Item>, arg: Arg): Promise<Item> {\n\t\tconst existing = this.loaders.get(loaderArgs)\n\t\tif (existing) {\n\t\t\treturn existing(arg)\n\t\t}\n\t\tconst newLoader = initBatchLoader(loaderArgs, this)\n\t\tthis.loaders.set(loaderArgs, newLoader)\n\t\treturn newLoader(arg)\n\t}\n}\n"],"names":["CommandBus","Connection","retryTransaction","initBatchLoader"],"mappings":";;;;;;;;;;AAkBO,MAAM,gBAAoF;AAAA,EAGhG,YACiB,QACA,WACf;AAFe,SAAA,SAAA;AACA,SAAA,YAAA;AAJjB,kBAAA,MAAQ,+BAAc,IAAA,CAA0D;AAAA,EAMhF;AAAA,EAEA,IAAW,aAAa;AACvB,WAAO,IAAIA,WAAAA,WAAW,KAAK,QAAQ,KAAK,SAAS;AAAA,EAClD;AAAA,EAEA,IAAW,eAAe;AACzB,WAAO,KAAK,OAAO,mBAAA;AAAA,EACpB;AAAA,EAEA,MAAa,YACZ,IACA,UAA8B,IACjB;AACb,UAAM,MAAM,YACX,MAAM,KAAK,OAAO,YAAY,OAAM,OAAM;AACzC,UAAI,QAAQ,cAAc,iBAAiB;AAC1C,cAAM,GAAG,MAAMC,SAAAA,WAAW,eAAe;AAAA,MAC1C;AACA,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IACxD,CAAC;AACF,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAC,OAAO;AACX,aAAO,MAAM,IAAA;AAAA,IACd;AACA,WAAO,MAAMC,SAAAA,iBAAiB,KAAK,CAAA,YAAW,MAAM,OAAO,KAAK,OAAO,CAAC;AAAA,EACzE;AAAA,EAEA,MAAa,MAAS,IAA+F;AACpH,WAAO,MAAM,KAAK,OAAO,MAAM,OAAM,OAAM;AAC1C,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IACxD,CAAC;AAAA,EACF;AAAA,EAEO,UAA6B,YAAgD,KAAyB;AAC5G,UAAM,WAAW,KAAK,QAAQ,IAAI,UAAU;AAC5C,QAAI,UAAU;AACb,aAAO,SAAS,GAAG;AAAA,IACpB;AACA,UAAM,YAAYC,WAAAA,gBAAgB,YAAY,IAAI;AAClD,SAAK,QAAQ,IAAI,YAAY,SAAS;AACtC,WAAO,UAAU,GAAG;AAAA,EACrB;AACD;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Connection } from "@contember/database";
|
|
1
|
+
import { retryTransaction, Connection } from "@contember/database";
|
|
2
2
|
import "../type/ApiKey.js";
|
|
3
3
|
import { initBatchLoader } from "../../utils/batchQuery.js";
|
|
4
4
|
import "node:crypto";
|
|
@@ -18,11 +18,18 @@ class DatabaseContext {
|
|
|
18
18
|
get queryHandler() {
|
|
19
19
|
return this.client.createQueryHandler();
|
|
20
20
|
}
|
|
21
|
-
async transaction(cb) {
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
async transaction(cb, options = {}) {
|
|
22
|
+
const run = async () => await this.client.transaction(async (db) => {
|
|
23
|
+
if (options.isolation !== "readCommitted") {
|
|
24
|
+
await db.query(Connection.REPEATABLE_READ);
|
|
25
|
+
}
|
|
24
26
|
return await cb(new DatabaseContext(db, this.providers));
|
|
25
27
|
});
|
|
28
|
+
const retry = options.retry;
|
|
29
|
+
if (!retry) {
|
|
30
|
+
return await run();
|
|
31
|
+
}
|
|
32
|
+
return await retryTransaction(run, (message) => retry.logger.warn(message));
|
|
26
33
|
}
|
|
27
34
|
async scope(cb) {
|
|
28
35
|
return await this.client.scope(async (db) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseContext.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/DatabaseContext.ts"],"sourcesContent":["import { Client, Connection } from '@contember/database'\nimport { Providers } from '../providers.js'\nimport { CommandBus } from '../commands/index.js'\nimport { BatchLoaderArgs, initBatchLoader, ItemLoader } from '../../utils/batchQuery.js'\n\nexport class DatabaseContext<Conn extends Connection.ConnectionLike = Connection.ConnectionLike> {\n\tprivate loaders = new Map<BatchLoaderArgs<any, any, any>, ItemLoader<any, any>>()\n\n\tconstructor(\n\t\tpublic readonly client: Client<Conn>,\n\t\tpublic readonly providers: Providers,\n\t) {\n\t}\n\n\tpublic get commandBus() {\n\t\treturn new CommandBus(this.client, this.providers)\n\t}\n\n\tpublic get queryHandler() {\n\t\treturn this.client.createQueryHandler()\n\t}\n\n\tpublic async transaction<T>(
|
|
1
|
+
{"version":3,"file":"DatabaseContext.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/DatabaseContext.ts"],"sourcesContent":["import { Client, Connection, retryTransaction } from '@contember/database'\nimport { Logger } from '@contember/logger'\nimport { Providers } from '../providers.js'\nimport { CommandBus } from '../commands/index.js'\nimport { BatchLoaderArgs, initBatchLoader, ItemLoader } from '../../utils/batchQuery.js'\n\nexport interface TransactionOptions {\n\t/**\n\t * Repeat the transaction when postgres aborts it with a serialization failure (40001) — the standing cost of the\n\t * repeatable-read level every transaction here runs at.\n\t *\n\t * Opt in only when the callback has no effect outside the transaction: several managers send a mail from inside\n\t * one (InviteManager, EmailChangeManager, PasswordlessSignInManager) and a retry would send it twice.\n\t */\n\tretry?: { logger: Logger }\n\treadonly isolation?: 'repeatableRead' | 'readCommitted'\n}\n\nexport class DatabaseContext<Conn extends Connection.ConnectionLike = Connection.ConnectionLike> {\n\tprivate loaders = new Map<BatchLoaderArgs<any, any, any>, ItemLoader<any, any>>()\n\n\tconstructor(\n\t\tpublic readonly client: Client<Conn>,\n\t\tpublic readonly providers: Providers,\n\t) {\n\t}\n\n\tpublic get commandBus() {\n\t\treturn new CommandBus(this.client, this.providers)\n\t}\n\n\tpublic get queryHandler() {\n\t\treturn this.client.createQueryHandler()\n\t}\n\n\tpublic async transaction<T>(\n\t\tcb: (dbContext: DatabaseContext<Connection.TransactionLike>) => Promise<T>,\n\t\toptions: TransactionOptions = {},\n\t): Promise<T> {\n\t\tconst run = async () =>\n\t\t\tawait this.client.transaction(async db => {\n\t\t\t\tif (options.isolation !== 'readCommitted') {\n\t\t\t\t\tawait db.query(Connection.REPEATABLE_READ)\n\t\t\t\t}\n\t\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t\t})\n\t\tconst retry = options.retry\n\t\tif (!retry) {\n\t\t\treturn await run()\n\t\t}\n\t\treturn await retryTransaction(run, message => retry.logger.warn(message))\n\t}\n\n\tpublic async scope<T>(cb: (dbContext: DatabaseContext<Connection.AcquiredConnectionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.scope(async db => {\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic batchLoad<Arg, Result, Item>(loaderArgs: BatchLoaderArgs<Arg, Result, Item>, arg: Arg): Promise<Item> {\n\t\tconst existing = this.loaders.get(loaderArgs)\n\t\tif (existing) {\n\t\t\treturn existing(arg)\n\t\t}\n\t\tconst newLoader = initBatchLoader(loaderArgs, this)\n\t\tthis.loaders.set(loaderArgs, newLoader)\n\t\treturn newLoader(arg)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;AAkBO,MAAM,gBAAoF;AAAA,EAGhG,YACiB,QACA,WACf;AAFe,SAAA,SAAA;AACA,SAAA,YAAA;AAJjB,kBAAA,MAAQ,+BAAc,IAAA,CAA0D;AAAA,EAMhF;AAAA,EAEA,IAAW,aAAa;AACvB,WAAO,IAAI,WAAW,KAAK,QAAQ,KAAK,SAAS;AAAA,EAClD;AAAA,EAEA,IAAW,eAAe;AACzB,WAAO,KAAK,OAAO,mBAAA;AAAA,EACpB;AAAA,EAEA,MAAa,YACZ,IACA,UAA8B,IACjB;AACb,UAAM,MAAM,YACX,MAAM,KAAK,OAAO,YAAY,OAAM,OAAM;AACzC,UAAI,QAAQ,cAAc,iBAAiB;AAC1C,cAAM,GAAG,MAAM,WAAW,eAAe;AAAA,MAC1C;AACA,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IACxD,CAAC;AACF,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAC,OAAO;AACX,aAAO,MAAM,IAAA;AAAA,IACd;AACA,WAAO,MAAM,iBAAiB,KAAK,CAAA,YAAW,MAAM,OAAO,KAAK,OAAO,CAAC;AAAA,EACzE;AAAA,EAEA,MAAa,MAAS,IAA+F;AACpH,WAAO,MAAM,KAAK,OAAO,MAAM,OAAM,OAAM;AAC1C,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IACxD,CAAC;AAAA,EACF;AAAA,EAEO,UAA6B,YAAgD,KAAyB;AAC5G,UAAM,WAAW,KAAK,QAAQ,IAAI,UAAU;AAC5C,QAAI,UAAU;AACb,aAAO,SAAS,GAAG;AAAA,IACpB;AACA,UAAM,YAAY,gBAAgB,YAAY,IAAI;AAClD,SAAK,QAAQ,IAAI,YAAY,SAAS;AACtC,WAAO,UAAU,GAAG;AAAA,EACrB;AACD;"}
|
|
@@ -20,7 +20,7 @@ const timingSafeCompareHash = (a, b) => {
|
|
|
20
20
|
}
|
|
21
21
|
return crypto.timingSafeEqual(bufferA, bufferB);
|
|
22
22
|
};
|
|
23
|
-
const validateToken = ({ entry, validationType, token
|
|
23
|
+
const validateToken = ({ entry, validationType, token }) => {
|
|
24
24
|
if (!entry) {
|
|
25
25
|
return new Response.ResponseError("TOKEN_NOT_FOUND", "Token not found");
|
|
26
26
|
}
|
|
@@ -50,7 +50,7 @@ const validateToken = ({ entry, validationType, token, now }) => {
|
|
|
50
50
|
if (entry.used_at) {
|
|
51
51
|
return new Response.ResponseError("TOKEN_USED", "Token used at " + entry.used_at.toISOString());
|
|
52
52
|
}
|
|
53
|
-
if (entry.
|
|
53
|
+
if (entry.is_expired) {
|
|
54
54
|
return new Response.ResponseError("TOKEN_EXPIRED", "Token expired at " + entry.expires_at.toISOString());
|
|
55
55
|
}
|
|
56
56
|
return new Response.ResponseOk(entry);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/token.ts"],"sourcesContent":["import crypto from 'node:crypto'\nimport { FixedLengthHexString, isFixedLengthHexString } from './hex.js'\nimport { PersonToken } from '../type/index.js'\nimport { ImplementationException } from '../../exceptions.js'\nimport { Response, ResponseError, ResponseOk } from './Response.js'\n\nexport const generateToken = async (generator: {\n\trandomBytes: (bytes: number) => Promise<Buffer>\n}): Promise<string> => {\n\treturn (await generator.randomBytes(20)).toString('hex')\n}\n\nexport type TokenHash = FixedLengthHexString<64>\n\nexport const computeTokenHash = (token: string): TokenHash => {\n\treturn crypto //\n\t\t.createHash('sha256')\n\t\t.update(token, 'ascii')\n\t\t.digest('hex') as TokenHash\n}\n\nexport const isTokenHash = (token: string): token is TokenHash => isFixedLengthHexString(token, 64)\n\nexport const MAX_OTP_ATTEMPTS = 3\n\n/**\n * Constant-time comparison of two token hashes. Both inputs are expected to be\n * 64-character hex strings (sha256). Returns false on any length mismatch\n * without leaking timing information about the matching prefix.\n */\nexport const timingSafeCompareHash = (a: TokenHash, b: TokenHash): boolean => {\n\tconst bufferA = Buffer.from(a, 'hex')\n\tconst bufferB = Buffer.from(b, 'hex')\n\tif (bufferA.length !== bufferB.length) {\n\t\treturn false\n\t}\n\treturn crypto.timingSafeEqual(bufferA, bufferB)\n}\n\nexport const validateToken = ({ entry, validationType, token
|
|
1
|
+
{"version":3,"file":"token.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/token.ts"],"sourcesContent":["import crypto from 'node:crypto'\nimport { FixedLengthHexString, isFixedLengthHexString } from './hex.js'\nimport { PersonToken } from '../type/index.js'\nimport { ImplementationException } from '../../exceptions.js'\nimport { Response, ResponseError, ResponseOk } from './Response.js'\n\nexport const generateToken = async (generator: {\n\trandomBytes: (bytes: number) => Promise<Buffer>\n}): Promise<string> => {\n\treturn (await generator.randomBytes(20)).toString('hex')\n}\n\nexport type TokenHash = FixedLengthHexString<64>\n\nexport const computeTokenHash = (token: string): TokenHash => {\n\treturn crypto //\n\t\t.createHash('sha256')\n\t\t.update(token, 'ascii')\n\t\t.digest('hex') as TokenHash\n}\n\nexport const isTokenHash = (token: string): token is TokenHash => isFixedLengthHexString(token, 64)\n\nexport const MAX_OTP_ATTEMPTS = 3\n\n/**\n * Constant-time comparison of two token hashes. Both inputs are expected to be\n * 64-character hex strings (sha256). Returns false on any length mismatch\n * without leaking timing information about the matching prefix.\n */\nexport const timingSafeCompareHash = (a: TokenHash, b: TokenHash): boolean => {\n\tconst bufferA = Buffer.from(a, 'hex')\n\tconst bufferB = Buffer.from(b, 'hex')\n\tif (bufferA.length !== bufferB.length) {\n\t\treturn false\n\t}\n\treturn crypto.timingSafeEqual(bufferA, bufferB)\n}\n\nexport const validateToken = ({ entry, validationType, token }: {\n\tentry: PersonToken.Row | null\n\tvalidationType: PersonToken.ValidationType\n\ttoken: string\n}): Response<PersonToken.Row, PersonToken.TokenValidationError> => {\n\tif (!entry) {\n\t\treturn new ResponseError('TOKEN_NOT_FOUND', 'Token not found')\n\t}\n\tif (validationType === 'otp' && entry.otp_attempts >= MAX_OTP_ATTEMPTS) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'OTP attempts exceeded')\n\t}\n\tswitch (validationType) {\n\t\tcase 'token':\n\t\t\tif (entry.otp_hash !== null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'The token was exchanged for OTP')\n\t\t\t}\n\t\t\tif (entry.token_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'Token invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'otp':\n\t\t\tif (entry.otp_hash === null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP not set')\n\t\t\t}\n\t\t\tif (entry.otp_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tthrow new ImplementationException()\n\t}\n\tif (entry.used_at) {\n\t\treturn new ResponseError('TOKEN_USED', 'Token used at ' + entry.used_at.toISOString())\n\t}\n\tif (entry.is_expired) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'Token expired at ' + entry.expires_at.toISOString())\n\t}\n\treturn new ResponseOk(entry)\n}\n"],"names":["isFixedLengthHexString","ResponseError","ImplementationException","ResponseOk"],"mappings":";;;;;;AAMO,MAAM,gBAAgB,OAAO,cAEb;AACtB,UAAQ,MAAM,UAAU,YAAY,EAAE,GAAG,SAAS,KAAK;AACxD;AAIO,MAAM,mBAAmB,CAAC,UAA6B;AAC7D,SAAO,OACL,WAAW,QAAQ,EACnB,OAAO,OAAO,OAAO,EACrB,OAAO,KAAK;AACf;AAEO,MAAM,cAAc,CAAC,UAAsCA,IAAAA,uBAAuB,OAAO,EAAE;AAE3F,MAAM,mBAAmB;AAOzB,MAAM,wBAAwB,CAAC,GAAc,MAA0B;AAC7E,QAAM,UAAU,OAAO,KAAK,GAAG,KAAK;AACpC,QAAM,UAAU,OAAO,KAAK,GAAG,KAAK;AACpC,MAAI,QAAQ,WAAW,QAAQ,QAAQ;AACtC,WAAO;AAAA,EACR;AACA,SAAO,OAAO,gBAAgB,SAAS,OAAO;AAC/C;AAEO,MAAM,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,YAIY;AAClE,MAAI,CAAC,OAAO;AACX,WAAO,IAAIC,SAAAA,cAAc,mBAAmB,iBAAiB;AAAA,EAC9D;AACA,MAAI,mBAAmB,SAAS,MAAM,gBAAgB,kBAAkB;AACvE,WAAO,IAAIA,SAAAA,cAAc,iBAAiB,uBAAuB;AAAA,EAClE;AACA,UAAQ,gBAAA;AAAA,IACP,KAAK;AACJ,UAAI,MAAM,aAAa,MAAM;AAC5B,eAAO,IAAIA,SAAAA,cAAc,iBAAiB,iCAAiC;AAAA,MAC5E;AACA,UAAI,MAAM,eAAe,iBAAiB,KAAK,GAAG;AACjD,eAAO,IAAIA,SAAAA,cAAc,iBAAiB,eAAe;AAAA,MAC1D;AACA;AAAA,IACD,KAAK;AACJ,UAAI,MAAM,aAAa,MAAM;AAC5B,eAAO,IAAIA,SAAAA,cAAc,iBAAiB,aAAa;AAAA,MACxD;AACA,UAAI,MAAM,aAAa,iBAAiB,KAAK,GAAG;AAC/C,eAAO,IAAIA,SAAAA,cAAc,iBAAiB,aAAa;AAAA,MACxD;AACA;AAAA,IACD;AACC,YAAM,IAAIC,WAAAA,wBAAA;AAAA,EAAwB;AAEpC,MAAI,MAAM,SAAS;AAClB,WAAO,IAAID,SAAAA,cAAc,cAAc,mBAAmB,MAAM,QAAQ,aAAa;AAAA,EACtF;AACA,MAAI,MAAM,YAAY;AACrB,WAAO,IAAIA,SAAAA,cAAc,iBAAiB,sBAAsB,MAAM,WAAW,aAAa;AAAA,EAC/F;AACA,SAAO,IAAIE,SAAAA,WAAW,KAAK;AAC5B;;;;;;;"}
|
|
@@ -18,7 +18,7 @@ const timingSafeCompareHash = (a, b) => {
|
|
|
18
18
|
}
|
|
19
19
|
return crypto__default.timingSafeEqual(bufferA, bufferB);
|
|
20
20
|
};
|
|
21
|
-
const validateToken = ({ entry, validationType, token
|
|
21
|
+
const validateToken = ({ entry, validationType, token }) => {
|
|
22
22
|
if (!entry) {
|
|
23
23
|
return new ResponseError("TOKEN_NOT_FOUND", "Token not found");
|
|
24
24
|
}
|
|
@@ -48,7 +48,7 @@ const validateToken = ({ entry, validationType, token, now }) => {
|
|
|
48
48
|
if (entry.used_at) {
|
|
49
49
|
return new ResponseError("TOKEN_USED", "Token used at " + entry.used_at.toISOString());
|
|
50
50
|
}
|
|
51
|
-
if (entry.
|
|
51
|
+
if (entry.is_expired) {
|
|
52
52
|
return new ResponseError("TOKEN_EXPIRED", "Token expired at " + entry.expires_at.toISOString());
|
|
53
53
|
}
|
|
54
54
|
return new ResponseOk(entry);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/token.ts"],"sourcesContent":["import crypto from 'node:crypto'\nimport { FixedLengthHexString, isFixedLengthHexString } from './hex.js'\nimport { PersonToken } from '../type/index.js'\nimport { ImplementationException } from '../../exceptions.js'\nimport { Response, ResponseError, ResponseOk } from './Response.js'\n\nexport const generateToken = async (generator: {\n\trandomBytes: (bytes: number) => Promise<Buffer>\n}): Promise<string> => {\n\treturn (await generator.randomBytes(20)).toString('hex')\n}\n\nexport type TokenHash = FixedLengthHexString<64>\n\nexport const computeTokenHash = (token: string): TokenHash => {\n\treturn crypto //\n\t\t.createHash('sha256')\n\t\t.update(token, 'ascii')\n\t\t.digest('hex') as TokenHash\n}\n\nexport const isTokenHash = (token: string): token is TokenHash => isFixedLengthHexString(token, 64)\n\nexport const MAX_OTP_ATTEMPTS = 3\n\n/**\n * Constant-time comparison of two token hashes. Both inputs are expected to be\n * 64-character hex strings (sha256). Returns false on any length mismatch\n * without leaking timing information about the matching prefix.\n */\nexport const timingSafeCompareHash = (a: TokenHash, b: TokenHash): boolean => {\n\tconst bufferA = Buffer.from(a, 'hex')\n\tconst bufferB = Buffer.from(b, 'hex')\n\tif (bufferA.length !== bufferB.length) {\n\t\treturn false\n\t}\n\treturn crypto.timingSafeEqual(bufferA, bufferB)\n}\n\nexport const validateToken = ({ entry, validationType, token
|
|
1
|
+
{"version":3,"file":"token.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/token.ts"],"sourcesContent":["import crypto from 'node:crypto'\nimport { FixedLengthHexString, isFixedLengthHexString } from './hex.js'\nimport { PersonToken } from '../type/index.js'\nimport { ImplementationException } from '../../exceptions.js'\nimport { Response, ResponseError, ResponseOk } from './Response.js'\n\nexport const generateToken = async (generator: {\n\trandomBytes: (bytes: number) => Promise<Buffer>\n}): Promise<string> => {\n\treturn (await generator.randomBytes(20)).toString('hex')\n}\n\nexport type TokenHash = FixedLengthHexString<64>\n\nexport const computeTokenHash = (token: string): TokenHash => {\n\treturn crypto //\n\t\t.createHash('sha256')\n\t\t.update(token, 'ascii')\n\t\t.digest('hex') as TokenHash\n}\n\nexport const isTokenHash = (token: string): token is TokenHash => isFixedLengthHexString(token, 64)\n\nexport const MAX_OTP_ATTEMPTS = 3\n\n/**\n * Constant-time comparison of two token hashes. Both inputs are expected to be\n * 64-character hex strings (sha256). Returns false on any length mismatch\n * without leaking timing information about the matching prefix.\n */\nexport const timingSafeCompareHash = (a: TokenHash, b: TokenHash): boolean => {\n\tconst bufferA = Buffer.from(a, 'hex')\n\tconst bufferB = Buffer.from(b, 'hex')\n\tif (bufferA.length !== bufferB.length) {\n\t\treturn false\n\t}\n\treturn crypto.timingSafeEqual(bufferA, bufferB)\n}\n\nexport const validateToken = ({ entry, validationType, token }: {\n\tentry: PersonToken.Row | null\n\tvalidationType: PersonToken.ValidationType\n\ttoken: string\n}): Response<PersonToken.Row, PersonToken.TokenValidationError> => {\n\tif (!entry) {\n\t\treturn new ResponseError('TOKEN_NOT_FOUND', 'Token not found')\n\t}\n\tif (validationType === 'otp' && entry.otp_attempts >= MAX_OTP_ATTEMPTS) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'OTP attempts exceeded')\n\t}\n\tswitch (validationType) {\n\t\tcase 'token':\n\t\t\tif (entry.otp_hash !== null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'The token was exchanged for OTP')\n\t\t\t}\n\t\t\tif (entry.token_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'Token invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'otp':\n\t\t\tif (entry.otp_hash === null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP not set')\n\t\t\t}\n\t\t\tif (entry.otp_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tthrow new ImplementationException()\n\t}\n\tif (entry.used_at) {\n\t\treturn new ResponseError('TOKEN_USED', 'Token used at ' + entry.used_at.toISOString())\n\t}\n\tif (entry.is_expired) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'Token expired at ' + entry.expires_at.toISOString())\n\t}\n\treturn new ResponseOk(entry)\n}\n"],"names":["crypto"],"mappings":";;;;AAMO,MAAM,gBAAgB,OAAO,cAEb;AACtB,UAAQ,MAAM,UAAU,YAAY,EAAE,GAAG,SAAS,KAAK;AACxD;AAIO,MAAM,mBAAmB,CAAC,UAA6B;AAC7D,SAAOA,gBACL,WAAW,QAAQ,EACnB,OAAO,OAAO,OAAO,EACrB,OAAO,KAAK;AACf;AAEO,MAAM,cAAc,CAAC,UAAsC,uBAAuB,OAAO,EAAE;AAE3F,MAAM,mBAAmB;AAOzB,MAAM,wBAAwB,CAAC,GAAc,MAA0B;AAC7E,QAAM,UAAU,OAAO,KAAK,GAAG,KAAK;AACpC,QAAM,UAAU,OAAO,KAAK,GAAG,KAAK;AACpC,MAAI,QAAQ,WAAW,QAAQ,QAAQ;AACtC,WAAO;AAAA,EACR;AACA,SAAOA,gBAAO,gBAAgB,SAAS,OAAO;AAC/C;AAEO,MAAM,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,YAIY;AAClE,MAAI,CAAC,OAAO;AACX,WAAO,IAAI,cAAc,mBAAmB,iBAAiB;AAAA,EAC9D;AACA,MAAI,mBAAmB,SAAS,MAAM,gBAAgB,kBAAkB;AACvE,WAAO,IAAI,cAAc,iBAAiB,uBAAuB;AAAA,EAClE;AACA,UAAQ,gBAAA;AAAA,IACP,KAAK;AACJ,UAAI,MAAM,aAAa,MAAM;AAC5B,eAAO,IAAI,cAAc,iBAAiB,iCAAiC;AAAA,MAC5E;AACA,UAAI,MAAM,eAAe,iBAAiB,KAAK,GAAG;AACjD,eAAO,IAAI,cAAc,iBAAiB,eAAe;AAAA,MAC1D;AACA;AAAA,IACD,KAAK;AACJ,UAAI,MAAM,aAAa,MAAM;AAC5B,eAAO,IAAI,cAAc,iBAAiB,aAAa;AAAA,MACxD;AACA,UAAI,MAAM,aAAa,iBAAiB,KAAK,GAAG;AAC/C,eAAO,IAAI,cAAc,iBAAiB,aAAa;AAAA,MACxD;AACA;AAAA,IACD;AACC,YAAM,IAAI,wBAAA;AAAA,EAAwB;AAEpC,MAAI,MAAM,SAAS;AAClB,WAAO,IAAI,cAAc,cAAc,mBAAmB,MAAM,QAAQ,aAAa;AAAA,EACtF;AACA,MAAI,MAAM,YAAY;AACrB,WAAO,IAAI,cAAc,iBAAiB,sBAAsB,MAAM,WAAW,aAAa;AAAA,EAC/F;AACA,SAAO,IAAI,WAAW,KAAK;AAC5B;"}
|
|
@@ -18,13 +18,16 @@ class ResolverFactory {
|
|
|
18
18
|
sessions: this.resolvers.identityTypeResolver.sessions.bind(this.resolvers.identityTypeResolver)
|
|
19
19
|
},
|
|
20
20
|
Person: {
|
|
21
|
-
identityProviders: this.resolvers.personTypeResolver.identityProviders.bind(this.resolvers.personTypeResolver)
|
|
21
|
+
identityProviders: this.resolvers.personTypeResolver.identityProviders.bind(this.resolvers.personTypeResolver),
|
|
22
|
+
passwordlessAvailable: this.resolvers.personTypeResolver.passwordlessAvailable.bind(this.resolvers.personTypeResolver),
|
|
23
|
+
passwordlessSelfManaged: this.resolvers.personTypeResolver.passwordlessSelfManaged.bind(this.resolvers.personTypeResolver)
|
|
22
24
|
},
|
|
23
25
|
Project: {
|
|
24
26
|
members: this.resolvers.projectTypeResolver.members.bind(this.resolvers.projectTypeResolver),
|
|
25
27
|
roles: this.resolvers.projectTypeResolver.roles.bind(this.resolvers.projectTypeResolver),
|
|
26
28
|
apiKeys: this.resolvers.projectTypeResolver.apiKeys.bind(this.resolvers.projectTypeResolver),
|
|
27
|
-
secrets: this.resolvers.projectTypeResolver.secrets.bind(this.resolvers.projectTypeResolver)
|
|
29
|
+
secrets: this.resolvers.projectTypeResolver.secrets.bind(this.resolvers.projectTypeResolver),
|
|
30
|
+
permissions: this.resolvers.projectTypeResolver.permissions.bind(this.resolvers.projectTypeResolver)
|
|
28
31
|
},
|
|
29
32
|
Query: {
|
|
30
33
|
me: this.resolvers.meQueryResolver.me.bind(this.resolvers.meQueryResolver),
|
|
@@ -38,6 +41,8 @@ class ResolverFactory {
|
|
|
38
41
|
mailTemplates: this.resolvers.mailTemplateQueryResolver.mailTemplates.bind(this.resolvers.mailTemplateQueryResolver),
|
|
39
42
|
configuration: this.resolvers.configurationQueryResolver.configuration.bind(this.resolvers.configurationQueryResolver),
|
|
40
43
|
authPolicies: this.resolvers.authPolicyQueryResolver.authPolicies.bind(this.resolvers.authPolicyQueryResolver),
|
|
44
|
+
customRoles: this.resolvers.customRoleQueryResolver.customRoles.bind(this.resolvers.customRoleQueryResolver),
|
|
45
|
+
customRolePermissions: this.resolvers.customRoleQueryResolver.customRolePermissions.bind(this.resolvers.customRoleQueryResolver),
|
|
41
46
|
authLog: this.resolvers.authLogQueryResolver.authLog.bind(this.resolvers.authLogQueryResolver),
|
|
42
47
|
checkResetPasswordToken: () => {
|
|
43
48
|
throw new Error("not implemented");
|
|
@@ -71,6 +76,7 @@ class ResolverFactory {
|
|
|
71
76
|
this.resolvers.disconnectMyIdentityProviderMutationResolver
|
|
72
77
|
),
|
|
73
78
|
disablePerson: this.resolvers.disablePersonMutationResolver.disablePerson.bind(this.resolvers.disablePersonMutationResolver),
|
|
79
|
+
enablePerson: this.resolvers.enablePersonMutationResolver.enablePerson.bind(this.resolvers.enablePersonMutationResolver),
|
|
74
80
|
forceSignOutPerson: this.resolvers.forceSignOutMutationResolver.forceSignOutPerson.bind(this.resolvers.forceSignOutMutationResolver),
|
|
75
81
|
resetPersonMfa: this.resolvers.resetPersonMfaMutationResolver.resetPersonMfa.bind(this.resolvers.resetPersonMfaMutationResolver),
|
|
76
82
|
revokeSession: this.resolvers.revokeSessionMutationResolver.revokeSession.bind(this.resolvers.revokeSessionMutationResolver),
|
|
@@ -120,7 +126,10 @@ class ResolverFactory {
|
|
|
120
126
|
configure: this.resolvers.configurationMutationResolver.configure.bind(this.resolvers.configurationMutationResolver),
|
|
121
127
|
createAuthPolicy: this.resolvers.authPolicyMutationResolver.createAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),
|
|
122
128
|
updateAuthPolicy: this.resolvers.authPolicyMutationResolver.updateAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),
|
|
123
|
-
deleteAuthPolicy: this.resolvers.authPolicyMutationResolver.deleteAuthPolicy.bind(this.resolvers.authPolicyMutationResolver)
|
|
129
|
+
deleteAuthPolicy: this.resolvers.authPolicyMutationResolver.deleteAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),
|
|
130
|
+
createCustomRole: this.resolvers.customRoleMutationResolver.createCustomRole.bind(this.resolvers.customRoleMutationResolver),
|
|
131
|
+
updateCustomRole: this.resolvers.customRoleMutationResolver.updateCustomRole.bind(this.resolvers.customRoleMutationResolver),
|
|
132
|
+
deleteCustomRole: this.resolvers.customRoleMutationResolver.deleteCustomRole.bind(this.resolvers.customRoleMutationResolver)
|
|
124
133
|
}
|
|
125
134
|
};
|
|
126
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolverFactory.cjs","sources":["../../../../../packages/engine-tenant-api/src/resolvers/ResolverFactory.ts"],"sourcesContent":["import {\n\tAddIDPMutationResolver,\n\tAddProjectMemberMutationResolver,\n\tChangePasswordMutationResolver,\n\tChangeProfileMutationResolver,\n\tCreateApiKeyMutationResolver,\n\tCreateProjectMutationResolver,\n\tDisableApiKeyMutationResolver,\n\tDisableIDPMutationResolver,\n\tEmailOtpMutationResolver,\n\tEnableIDPMutationResolver,\n\tIdentityGlobalRolesMutationResolver,\n\tIDPMutationResolver,\n\tInviteMutationResolver,\n\tMailTemplateMutationResolver,\n\tOtpMutationResolver,\n\tRegenerateBackupCodesMutationResolver,\n\tRemoveProjectMemberMutationResolver,\n\tResetPasswordMutationResolver,\n\tSetProjectSecretMutationResolver,\n\tSignInMutationResolver,\n\tSignOutMutationResolver,\n\tSignUpMutationResolver,\n\tUpdateProjectMemberMutationResolver,\n\tUpdateProjectMutationResolver,\n} from './mutation/index.js'\n\nimport { Resolvers } from '../schema/index.js'\nimport {\n\tApiKeyQueryResolver,\n\tAuthLogQueryResolver,\n\tMeQueryResolver,\n\tPersonQueryResolver,\n\tProjectMembersQueryResolver,\n\tProjectQueryResolver,\n} from './query/index.js'\nimport { DisconnectMyIdentityProviderMutationResolver } from './mutation/idp/index.js'\nimport { IdentityTypeResolver, PersonTypeResolver, ProjectTypeResolver } from './types/index.js'\nimport { DateTimeType, IntervalType, JSONType } from '@contember/graphql-utils'\nimport { IDPQueryResolver } from './query/IDPQueryResolver.js'\nimport { UpdateIDPMutationResolver } from './mutation/idp/UpdateIDPMutationResolver.js'\nimport { DisablePersonMutationResolver } from './mutation/person/DisablePersonMutationResolver.js'\nimport { ForceSignOutMutationResolver } from './mutation/person/ForceSignOutMutationResolver.js'\nimport { RevokeSessionMutationResolver } from './mutation/person/RevokeSessionMutationResolver.js'\nimport { MailTemplateQueryResolver } from './query/MailTemplateQueryResolver.js'\nimport { ConfigurationMutationResolver } from './mutation/configuration/ConfigurationMutationResolver.js'\nimport { ConfigurationQueryResolver } from './query/ConfigurationQueryResolver.js'\nimport { AuthPolicyMutationResolver } from './mutation/configuration/AuthPolicyMutationResolver.js'\nimport { AuthPolicyQueryResolver } from './query/AuthPolicyQueryResolver.js'\nimport { ResetPersonMfaMutationResolver } from './mutation/person/ResetPersonMfaMutationResolver.js'\nimport { PasswordlessMutationResolver } from './mutation/person/PasswordlessMutationResolver.js'\nimport { TogglePasswordlessMutationResolver } from './mutation/person/TogglePasswordlessMutationResolver.js'\nimport { EmailVerificationMutationResolver } from './mutation/person/EmailVerificationMutationResolver.js'\n\nclass ResolverFactory {\n\tpublic constructor(\n\t\tprivate readonly resolvers: {\n\t\t\tmeQueryResolver: MeQueryResolver\n\t\t\tpersonQueryResolver: PersonQueryResolver\n\t\t\tprojectQueryResolver: ProjectQueryResolver\n\t\t\tprojectMembersQueryResolver: ProjectMembersQueryResolver\n\t\t\tidpQueryResolver: IDPQueryResolver\n\t\t\tmailTemplateQueryResolver: MailTemplateQueryResolver\n\n\t\t\tsignUpMutationResolver: SignUpMutationResolver\n\t\t\tsignInMutationResolver: SignInMutationResolver\n\t\t\tsignOutMutationResolver: SignOutMutationResolver\n\t\t\tchangeProfileMutationResolver: ChangeProfileMutationResolver\n\t\t\tchangePasswordMutationResolver: ChangePasswordMutationResolver\n\t\t\tresetPasswordMutationResolver: ResetPasswordMutationResolver\n\t\t\temailVerificationMutationResolver: EmailVerificationMutationResolver\n\t\t\tidpMutationResolver: IDPMutationResolver\n\t\t\tregisterIdpMutationResolver: AddIDPMutationResolver\n\t\t\tdisableIdpMutationResolver: DisableIDPMutationResolver\n\t\t\tenableIdpMutationResolver: EnableIDPMutationResolver\n\t\t\tupdateIdpMutationResolver: UpdateIDPMutationResolver\n\t\t\tdisconnectMyIdentityProviderMutationResolver: DisconnectMyIdentityProviderMutationResolver\n\t\t\tpasswordlessMutationResolver: PasswordlessMutationResolver\n\n\t\t\tdisablePersonMutationResolver: DisablePersonMutationResolver\n\t\t\tforceSignOutMutationResolver: ForceSignOutMutationResolver\n\t\t\tresetPersonMfaMutationResolver: ResetPersonMfaMutationResolver\n\t\t\trevokeSessionMutationResolver: RevokeSessionMutationResolver\n\n\t\t\tinviteMutationResolver: InviteMutationResolver\n\t\t\taddProjectMemberMutationResolver: AddProjectMemberMutationResolver\n\t\t\tupdateProjectMemberMutationResolver: UpdateProjectMemberMutationResolver\n\t\t\tremoveProjectMemberMutationResolver: RemoveProjectMemberMutationResolver\n\n\t\t\tcreateApiKeyMutationResolver: CreateApiKeyMutationResolver\n\t\t\tdisableApiKeyMutationResolver: DisableApiKeyMutationResolver\n\n\t\t\totpMutationResolver: OtpMutationResolver\n\t\t\temailOtpMutationResolver: EmailOtpMutationResolver\n\t\t\tregenerateBackupCodesMutationResolver: RegenerateBackupCodesMutationResolver\n\n\t\t\tmailTemplateMutationResolver: MailTemplateMutationResolver\n\n\t\t\tcreateProjectMutationResolver: CreateProjectMutationResolver\n\t\t\tsetProjectSecretMutationResolver: SetProjectSecretMutationResolver\n\t\t\tupdateProjectMutationResolver: UpdateProjectMutationResolver\n\n\t\t\tidentityTypeResolver: IdentityTypeResolver\n\t\t\tpersonTypeResolver: PersonTypeResolver\n\t\t\tprojectTypeResolver: ProjectTypeResolver\n\n\t\t\tidentityGlobalRolesMutationResolver: IdentityGlobalRolesMutationResolver\n\n\t\t\tconfigurationMutationResolver: ConfigurationMutationResolver\n\t\t\tconfigurationQueryResolver: ConfigurationQueryResolver\n\n\t\t\tauthPolicyMutationResolver: AuthPolicyMutationResolver\n\t\t\tauthPolicyQueryResolver: AuthPolicyQueryResolver\n\n\t\t\tauthLogQueryResolver: AuthLogQueryResolver\n\t\t\tapiKeyQueryResolver: ApiKeyQueryResolver\n\n\t\t\ttogglePasswordlessMutationResolver: TogglePasswordlessMutationResolver\n\t\t},\n\t) {}\n\n\tcreate(): Resolvers & { Mutation: Required<Resolvers['Mutation']> } & { Query: Required<Resolvers['Query']> } {\n\t\treturn {\n\t\t\tJson: JSONType,\n\t\t\tDateTime: DateTimeType,\n\t\t\tInterval: IntervalType,\n\t\t\tIdentity: {\n\t\t\t\tprojects: this.resolvers.identityTypeResolver.projects.bind(this.resolvers.identityTypeResolver),\n\t\t\t\tperson: this.resolvers.identityTypeResolver.person.bind(this.resolvers.identityTypeResolver),\n\t\t\t\troles: this.resolvers.identityTypeResolver.roles.bind(this.resolvers.identityTypeResolver),\n\t\t\t\tpermissions: this.resolvers.identityTypeResolver.permissions.bind(this.resolvers.identityTypeResolver),\n\t\t\t\tsessions: this.resolvers.identityTypeResolver.sessions.bind(this.resolvers.identityTypeResolver),\n\t\t\t},\n\t\t\tPerson: {\n\t\t\t\tidentityProviders: this.resolvers.personTypeResolver.identityProviders.bind(this.resolvers.personTypeResolver),\n\t\t\t},\n\t\t\tProject: {\n\t\t\t\tmembers: this.resolvers.projectTypeResolver.members.bind(this.resolvers.projectTypeResolver),\n\t\t\t\troles: this.resolvers.projectTypeResolver.roles.bind(this.resolvers.projectTypeResolver),\n\t\t\t\tapiKeys: this.resolvers.projectTypeResolver.apiKeys.bind(this.resolvers.projectTypeResolver),\n\t\t\t\tsecrets: this.resolvers.projectTypeResolver.secrets.bind(this.resolvers.projectTypeResolver),\n\t\t\t},\n\t\t\tQuery: {\n\t\t\t\tme: this.resolvers.meQueryResolver.me.bind(this.resolvers.meQueryResolver),\n\t\t\t\tpersonById: this.resolvers.personQueryResolver.personById.bind(this.resolvers.personQueryResolver),\n\t\t\t\tpersons: this.resolvers.personQueryResolver.persons.bind(this.resolvers.personQueryResolver),\n\t\t\t\tglobalApiKeys: this.resolvers.apiKeyQueryResolver.globalApiKeys.bind(this.resolvers.apiKeyQueryResolver),\n\t\t\t\tprojectBySlug: this.resolvers.projectQueryResolver.projectBySlug.bind(this.resolvers.projectQueryResolver),\n\t\t\t\tprojects: this.resolvers.projectQueryResolver.projects.bind(this.resolvers.projectQueryResolver),\n\t\t\t\tprojectMemberships: this.resolvers.projectMembersQueryResolver.projectMemberships.bind(this.resolvers.projectMembersQueryResolver),\n\t\t\t\tidentityProviders: this.resolvers.idpQueryResolver.identityProviders.bind(this.resolvers.idpQueryResolver),\n\t\t\t\tmailTemplates: this.resolvers.mailTemplateQueryResolver.mailTemplates.bind(this.resolvers.mailTemplateQueryResolver),\n\t\t\t\tconfiguration: this.resolvers.configurationQueryResolver.configuration.bind(this.resolvers.configurationQueryResolver),\n\t\t\t\tauthPolicies: this.resolvers.authPolicyQueryResolver.authPolicies.bind(this.resolvers.authPolicyQueryResolver),\n\t\t\t\tauthLog: this.resolvers.authLogQueryResolver.authLog.bind(this.resolvers.authLogQueryResolver),\n\t\t\t\tcheckResetPasswordToken: () => {\n\t\t\t\t\tthrow new Error('not implemented')\n\t\t\t\t},\n\t\t\t},\n\t\t\tMutation: {\n\t\t\t\tsignUp: this.resolvers.signUpMutationResolver.signUp.bind(this.resolvers.signUpMutationResolver),\n\t\t\t\tsignIn: this.resolvers.signInMutationResolver.signIn.bind(this.resolvers.signInMutationResolver),\n\t\t\t\tcreateSessionToken: this.resolvers.signInMutationResolver.createSessionToken.bind(this.resolvers.signInMutationResolver),\n\t\t\t\tsignOut: this.resolvers.signOutMutationResolver.signOut.bind(this.resolvers.signOutMutationResolver),\n\n\t\t\t\tchangeProfile: this.resolvers.changeProfileMutationResolver.changeProfile.bind(this.resolvers.changeProfileMutationResolver),\n\t\t\t\tchangeMyProfile: this.resolvers.changeProfileMutationResolver.changeMyProfile.bind(this.resolvers.changeProfileMutationResolver),\n\t\t\t\tchangePassword: this.resolvers.changePasswordMutationResolver.changePassword.bind(this.resolvers.changePasswordMutationResolver),\n\t\t\t\tchangeMyPassword: this.resolvers.changePasswordMutationResolver.changeMyPassword.bind(this.resolvers.changePasswordMutationResolver),\n\t\t\t\tcreateResetPasswordRequest: this.resolvers.resetPasswordMutationResolver.createResetPasswordRequest.bind(\n\t\t\t\t\tthis.resolvers.resetPasswordMutationResolver,\n\t\t\t\t),\n\t\t\t\tresetPassword: this.resolvers.resetPasswordMutationResolver.resetPassword.bind(this.resolvers.resetPasswordMutationResolver),\n\n\t\t\t\trequestEmailVerification: this.resolvers.emailVerificationMutationResolver.requestEmailVerification.bind(\n\t\t\t\t\tthis.resolvers.emailVerificationMutationResolver,\n\t\t\t\t),\n\t\t\t\tverifyEmail: this.resolvers.emailVerificationMutationResolver.verifyEmail.bind(this.resolvers.emailVerificationMutationResolver),\n\t\t\t\tconfirmEmailChange: this.resolvers.changeProfileMutationResolver.confirmEmailChange.bind(this.resolvers.changeProfileMutationResolver),\n\n\t\t\t\tinitSignInIDP: this.resolvers.idpMutationResolver.initSignInIDP.bind(this.resolvers.idpMutationResolver),\n\t\t\t\tsignInIDP: this.resolvers.idpMutationResolver.signInIDP.bind(this.resolvers.idpMutationResolver),\n\t\t\t\taddIDP: this.resolvers.registerIdpMutationResolver.addIDP.bind(this.resolvers.registerIdpMutationResolver),\n\t\t\t\tdisableIDP: this.resolvers.disableIdpMutationResolver.disableIDP.bind(this.resolvers.disableIdpMutationResolver),\n\t\t\t\tenableIDP: this.resolvers.enableIdpMutationResolver.enableIDP.bind(this.resolvers.enableIdpMutationResolver),\n\t\t\t\tupdateIDP: this.resolvers.updateIdpMutationResolver.updateIDP.bind(this.resolvers.updateIdpMutationResolver),\n\t\t\t\tdisconnectMyIdentityProvider: this.resolvers.disconnectMyIdentityProviderMutationResolver.disconnectMyIdentityProvider.bind(\n\t\t\t\t\tthis.resolvers.disconnectMyIdentityProviderMutationResolver,\n\t\t\t\t),\n\t\t\t\tdisablePerson: this.resolvers.disablePersonMutationResolver.disablePerson.bind(this.resolvers.disablePersonMutationResolver),\n\t\t\t\tforceSignOutPerson: this.resolvers.forceSignOutMutationResolver.forceSignOutPerson.bind(this.resolvers.forceSignOutMutationResolver),\n\t\t\t\tresetPersonMfa: this.resolvers.resetPersonMfaMutationResolver.resetPersonMfa.bind(this.resolvers.resetPersonMfaMutationResolver),\n\t\t\t\trevokeSession: this.resolvers.revokeSessionMutationResolver.revokeSession.bind(this.resolvers.revokeSessionMutationResolver),\n\n\t\t\t\tsignInPasswordless: this.resolvers.passwordlessMutationResolver.signInPasswordless.bind(this.resolvers.passwordlessMutationResolver),\n\t\t\t\tinitSignInPasswordless: this.resolvers.passwordlessMutationResolver.initSignInPasswordless.bind(this.resolvers.passwordlessMutationResolver),\n\t\t\t\tactivatePasswordlessOtp: this.resolvers.passwordlessMutationResolver.activatePasswordlessOtp.bind(this.resolvers.passwordlessMutationResolver),\n\t\t\t\tdisableMyPasswordless: this.resolvers.togglePasswordlessMutationResolver.disableMyPasswordless.bind(\n\t\t\t\t\tthis.resolvers.togglePasswordlessMutationResolver,\n\t\t\t\t),\n\t\t\t\tenableMyPasswordless: this.resolvers.togglePasswordlessMutationResolver.enableMyPasswordless.bind(\n\t\t\t\t\tthis.resolvers.togglePasswordlessMutationResolver,\n\t\t\t\t),\n\n\t\t\t\tinvite: this.resolvers.inviteMutationResolver.invite.bind(this.resolvers.inviteMutationResolver),\n\t\t\t\tunmanagedInvite: this.resolvers.inviteMutationResolver.unmanagedInvite.bind(this.resolvers.inviteMutationResolver),\n\n\t\t\t\taddProjectMember: this.resolvers.addProjectMemberMutationResolver.addProjectMember.bind(this.resolvers.addProjectMemberMutationResolver),\n\t\t\t\tupdateProjectMember: this.resolvers.updateProjectMemberMutationResolver.updateProjectMember.bind(\n\t\t\t\t\tthis.resolvers.updateProjectMemberMutationResolver,\n\t\t\t\t),\n\t\t\t\tremoveProjectMember: this.resolvers.removeProjectMemberMutationResolver.removeProjectMember.bind(\n\t\t\t\t\tthis.resolvers.updateProjectMemberMutationResolver,\n\t\t\t\t),\n\n\t\t\t\tcreateApiKey: this.resolvers.createApiKeyMutationResolver.createApiKey.bind(this.resolvers.createApiKeyMutationResolver),\n\t\t\t\tcreateGlobalApiKey: this.resolvers.createApiKeyMutationResolver.createGlobalApiKey.bind(this.resolvers.createApiKeyMutationResolver),\n\t\t\t\tdisableApiKey: this.resolvers.disableApiKeyMutationResolver.disableApiKey.bind(this.resolvers.disableApiKeyMutationResolver),\n\n\t\t\t\tprepareOtp: this.resolvers.otpMutationResolver.prepareOtp.bind(this.resolvers.otpMutationResolver),\n\t\t\t\tconfirmOtp: this.resolvers.otpMutationResolver.confirmOtp.bind(this.resolvers.otpMutationResolver),\n\t\t\t\tdisableOtp: this.resolvers.otpMutationResolver.disableOtp.bind(this.resolvers.otpMutationResolver),\n\t\t\t\tregenerateBackupCodes: this.resolvers.regenerateBackupCodesMutationResolver.regenerateBackupCodes.bind(\n\t\t\t\t\tthis.resolvers.regenerateBackupCodesMutationResolver,\n\t\t\t\t),\n\n\t\t\t\tinitEmailOtp: this.resolvers.emailOtpMutationResolver.initEmailOtp.bind(this.resolvers.emailOtpMutationResolver),\n\t\t\t\tconfirmEmailOtp: this.resolvers.emailOtpMutationResolver.confirmEmailOtp.bind(this.resolvers.emailOtpMutationResolver),\n\t\t\t\tdisableEmailOtp: this.resolvers.emailOtpMutationResolver.disableEmailOtp.bind(this.resolvers.emailOtpMutationResolver),\n\n\t\t\t\taddMailTemplate: this.resolvers.mailTemplateMutationResolver.addMailTemplate.bind(this.resolvers.mailTemplateMutationResolver),\n\t\t\t\tremoveMailTemplate: this.resolvers.mailTemplateMutationResolver.removeMailTemplate.bind(this.resolvers.mailTemplateMutationResolver),\n\n\t\t\t\taddProjectMailTemplate: this.resolvers.mailTemplateMutationResolver.addMailTemplate.bind(this.resolvers.mailTemplateMutationResolver),\n\t\t\t\tremoveProjectMailTemplate: this.resolvers.mailTemplateMutationResolver.removeMailTemplate.bind(this.resolvers.mailTemplateMutationResolver),\n\n\t\t\t\tcreateProject: this.resolvers.createProjectMutationResolver.createProject.bind(this.resolvers.createProjectMutationResolver),\n\t\t\t\tupdateProject: this.resolvers.updateProjectMutationResolver.updateProject.bind(this.resolvers.updateProjectMutationResolver),\n\t\t\t\tsetProjectSecret: this.resolvers.setProjectSecretMutationResolver.setProjectSecret.bind(this.resolvers.setProjectSecretMutationResolver),\n\n\t\t\t\taddGlobalIdentityRoles: this.resolvers.identityGlobalRolesMutationResolver.addGlobalIdentityRoles.bind(\n\t\t\t\t\tthis.resolvers.identityGlobalRolesMutationResolver,\n\t\t\t\t),\n\t\t\t\tremoveGlobalIdentityRoles: this.resolvers.identityGlobalRolesMutationResolver.removeGlobalIdentityRoles.bind(\n\t\t\t\t\tthis.resolvers.identityGlobalRolesMutationResolver,\n\t\t\t\t),\n\n\t\t\t\tconfigure: this.resolvers.configurationMutationResolver.configure.bind(this.resolvers.configurationMutationResolver),\n\n\t\t\t\tcreateAuthPolicy: this.resolvers.authPolicyMutationResolver.createAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),\n\t\t\t\tupdateAuthPolicy: this.resolvers.authPolicyMutationResolver.updateAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),\n\t\t\t\tdeleteAuthPolicy: this.resolvers.authPolicyMutationResolver.deleteAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),\n\t\t\t},\n\t\t}\n\t}\n}\n\nnamespace ResolverFactory {\n\texport type FieldResolverArgs = {\n\t\t[argument: string]: any\n\t}\n}\n\nexport { ResolverFactory }\n"],"names":["JSONType","DateTimeType","IntervalType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResolverFactory.cjs","sources":["../../../../../packages/engine-tenant-api/src/resolvers/ResolverFactory.ts"],"sourcesContent":["import {\n\tAddIDPMutationResolver,\n\tAddProjectMemberMutationResolver,\n\tChangePasswordMutationResolver,\n\tChangeProfileMutationResolver,\n\tCreateApiKeyMutationResolver,\n\tCreateProjectMutationResolver,\n\tDisableApiKeyMutationResolver,\n\tDisableIDPMutationResolver,\n\tEmailOtpMutationResolver,\n\tEnableIDPMutationResolver,\n\tIdentityGlobalRolesMutationResolver,\n\tIDPMutationResolver,\n\tInviteMutationResolver,\n\tMailTemplateMutationResolver,\n\tOtpMutationResolver,\n\tRegenerateBackupCodesMutationResolver,\n\tRemoveProjectMemberMutationResolver,\n\tResetPasswordMutationResolver,\n\tSetProjectSecretMutationResolver,\n\tSignInMutationResolver,\n\tSignOutMutationResolver,\n\tSignUpMutationResolver,\n\tUpdateProjectMemberMutationResolver,\n\tUpdateProjectMutationResolver,\n} from './mutation/index.js'\n\nimport { Resolvers } from '../schema/index.js'\nimport {\n\tApiKeyQueryResolver,\n\tAuthLogQueryResolver,\n\tMeQueryResolver,\n\tPersonQueryResolver,\n\tProjectMembersQueryResolver,\n\tProjectQueryResolver,\n} from './query/index.js'\nimport { DisconnectMyIdentityProviderMutationResolver } from './mutation/idp/index.js'\nimport { IdentityTypeResolver, PersonTypeResolver, ProjectTypeResolver } from './types/index.js'\nimport { DateTimeType, IntervalType, JSONType } from '@contember/graphql-utils'\nimport { IDPQueryResolver } from './query/IDPQueryResolver.js'\nimport { UpdateIDPMutationResolver } from './mutation/idp/UpdateIDPMutationResolver.js'\nimport { DisablePersonMutationResolver } from './mutation/person/DisablePersonMutationResolver.js'\nimport { EnablePersonMutationResolver } from './mutation/person/EnablePersonMutationResolver.js'\nimport { ForceSignOutMutationResolver } from './mutation/person/ForceSignOutMutationResolver.js'\nimport { RevokeSessionMutationResolver } from './mutation/person/RevokeSessionMutationResolver.js'\nimport { MailTemplateQueryResolver } from './query/MailTemplateQueryResolver.js'\nimport { ConfigurationMutationResolver } from './mutation/configuration/ConfigurationMutationResolver.js'\nimport { ConfigurationQueryResolver } from './query/ConfigurationQueryResolver.js'\nimport { AuthPolicyMutationResolver } from './mutation/configuration/AuthPolicyMutationResolver.js'\nimport { AuthPolicyQueryResolver } from './query/AuthPolicyQueryResolver.js'\nimport { CustomRoleMutationResolver } from './mutation/customRole/CustomRoleMutationResolver.js'\nimport { CustomRoleQueryResolver } from './query/CustomRoleQueryResolver.js'\nimport { ResetPersonMfaMutationResolver } from './mutation/person/ResetPersonMfaMutationResolver.js'\nimport { PasswordlessMutationResolver } from './mutation/person/PasswordlessMutationResolver.js'\nimport { TogglePasswordlessMutationResolver } from './mutation/person/TogglePasswordlessMutationResolver.js'\nimport { EmailVerificationMutationResolver } from './mutation/person/EmailVerificationMutationResolver.js'\n\nclass ResolverFactory {\n\tpublic constructor(\n\t\tprivate readonly resolvers: {\n\t\t\tmeQueryResolver: MeQueryResolver\n\t\t\tpersonQueryResolver: PersonQueryResolver\n\t\t\tprojectQueryResolver: ProjectQueryResolver\n\t\t\tprojectMembersQueryResolver: ProjectMembersQueryResolver\n\t\t\tidpQueryResolver: IDPQueryResolver\n\t\t\tmailTemplateQueryResolver: MailTemplateQueryResolver\n\n\t\t\tsignUpMutationResolver: SignUpMutationResolver\n\t\t\tsignInMutationResolver: SignInMutationResolver\n\t\t\tsignOutMutationResolver: SignOutMutationResolver\n\t\t\tchangeProfileMutationResolver: ChangeProfileMutationResolver\n\t\t\tchangePasswordMutationResolver: ChangePasswordMutationResolver\n\t\t\tresetPasswordMutationResolver: ResetPasswordMutationResolver\n\t\t\temailVerificationMutationResolver: EmailVerificationMutationResolver\n\t\t\tidpMutationResolver: IDPMutationResolver\n\t\t\tregisterIdpMutationResolver: AddIDPMutationResolver\n\t\t\tdisableIdpMutationResolver: DisableIDPMutationResolver\n\t\t\tenableIdpMutationResolver: EnableIDPMutationResolver\n\t\t\tupdateIdpMutationResolver: UpdateIDPMutationResolver\n\t\t\tdisconnectMyIdentityProviderMutationResolver: DisconnectMyIdentityProviderMutationResolver\n\t\t\tpasswordlessMutationResolver: PasswordlessMutationResolver\n\n\t\t\tdisablePersonMutationResolver: DisablePersonMutationResolver\n\t\t\tenablePersonMutationResolver: EnablePersonMutationResolver\n\t\t\tforceSignOutMutationResolver: ForceSignOutMutationResolver\n\t\t\tresetPersonMfaMutationResolver: ResetPersonMfaMutationResolver\n\t\t\trevokeSessionMutationResolver: RevokeSessionMutationResolver\n\n\t\t\tinviteMutationResolver: InviteMutationResolver\n\t\t\taddProjectMemberMutationResolver: AddProjectMemberMutationResolver\n\t\t\tupdateProjectMemberMutationResolver: UpdateProjectMemberMutationResolver\n\t\t\tremoveProjectMemberMutationResolver: RemoveProjectMemberMutationResolver\n\n\t\t\tcreateApiKeyMutationResolver: CreateApiKeyMutationResolver\n\t\t\tdisableApiKeyMutationResolver: DisableApiKeyMutationResolver\n\n\t\t\totpMutationResolver: OtpMutationResolver\n\t\t\temailOtpMutationResolver: EmailOtpMutationResolver\n\t\t\tregenerateBackupCodesMutationResolver: RegenerateBackupCodesMutationResolver\n\n\t\t\tmailTemplateMutationResolver: MailTemplateMutationResolver\n\n\t\t\tcreateProjectMutationResolver: CreateProjectMutationResolver\n\t\t\tsetProjectSecretMutationResolver: SetProjectSecretMutationResolver\n\t\t\tupdateProjectMutationResolver: UpdateProjectMutationResolver\n\n\t\t\tidentityTypeResolver: IdentityTypeResolver\n\t\t\tpersonTypeResolver: PersonTypeResolver\n\t\t\tprojectTypeResolver: ProjectTypeResolver\n\n\t\t\tidentityGlobalRolesMutationResolver: IdentityGlobalRolesMutationResolver\n\n\t\t\tconfigurationMutationResolver: ConfigurationMutationResolver\n\t\t\tconfigurationQueryResolver: ConfigurationQueryResolver\n\n\t\t\tauthPolicyMutationResolver: AuthPolicyMutationResolver\n\t\t\tauthPolicyQueryResolver: AuthPolicyQueryResolver\n\n\t\t\tcustomRoleMutationResolver: CustomRoleMutationResolver\n\t\t\tcustomRoleQueryResolver: CustomRoleQueryResolver\n\n\t\t\tauthLogQueryResolver: AuthLogQueryResolver\n\t\t\tapiKeyQueryResolver: ApiKeyQueryResolver\n\n\t\t\ttogglePasswordlessMutationResolver: TogglePasswordlessMutationResolver\n\t\t},\n\t) {}\n\n\tcreate(): Resolvers & { Mutation: Required<Resolvers['Mutation']> } & { Query: Required<Resolvers['Query']> } {\n\t\treturn {\n\t\t\tJson: JSONType,\n\t\t\tDateTime: DateTimeType,\n\t\t\tInterval: IntervalType,\n\t\t\tIdentity: {\n\t\t\t\tprojects: this.resolvers.identityTypeResolver.projects.bind(this.resolvers.identityTypeResolver),\n\t\t\t\tperson: this.resolvers.identityTypeResolver.person.bind(this.resolvers.identityTypeResolver),\n\t\t\t\troles: this.resolvers.identityTypeResolver.roles.bind(this.resolvers.identityTypeResolver),\n\t\t\t\tpermissions: this.resolvers.identityTypeResolver.permissions.bind(this.resolvers.identityTypeResolver),\n\t\t\t\tsessions: this.resolvers.identityTypeResolver.sessions.bind(this.resolvers.identityTypeResolver),\n\t\t\t},\n\t\t\tPerson: {\n\t\t\t\tidentityProviders: this.resolvers.personTypeResolver.identityProviders.bind(this.resolvers.personTypeResolver),\n\t\t\t\tpasswordlessAvailable: this.resolvers.personTypeResolver.passwordlessAvailable.bind(this.resolvers.personTypeResolver),\n\t\t\t\tpasswordlessSelfManaged: this.resolvers.personTypeResolver.passwordlessSelfManaged.bind(this.resolvers.personTypeResolver),\n\t\t\t},\n\t\t\tProject: {\n\t\t\t\tmembers: this.resolvers.projectTypeResolver.members.bind(this.resolvers.projectTypeResolver),\n\t\t\t\troles: this.resolvers.projectTypeResolver.roles.bind(this.resolvers.projectTypeResolver),\n\t\t\t\tapiKeys: this.resolvers.projectTypeResolver.apiKeys.bind(this.resolvers.projectTypeResolver),\n\t\t\t\tsecrets: this.resolvers.projectTypeResolver.secrets.bind(this.resolvers.projectTypeResolver),\n\t\t\t\tpermissions: this.resolvers.projectTypeResolver.permissions.bind(this.resolvers.projectTypeResolver),\n\t\t\t},\n\t\t\tQuery: {\n\t\t\t\tme: this.resolvers.meQueryResolver.me.bind(this.resolvers.meQueryResolver),\n\t\t\t\tpersonById: this.resolvers.personQueryResolver.personById.bind(this.resolvers.personQueryResolver),\n\t\t\t\tpersons: this.resolvers.personQueryResolver.persons.bind(this.resolvers.personQueryResolver),\n\t\t\t\tglobalApiKeys: this.resolvers.apiKeyQueryResolver.globalApiKeys.bind(this.resolvers.apiKeyQueryResolver),\n\t\t\t\tprojectBySlug: this.resolvers.projectQueryResolver.projectBySlug.bind(this.resolvers.projectQueryResolver),\n\t\t\t\tprojects: this.resolvers.projectQueryResolver.projects.bind(this.resolvers.projectQueryResolver),\n\t\t\t\tprojectMemberships: this.resolvers.projectMembersQueryResolver.projectMemberships.bind(this.resolvers.projectMembersQueryResolver),\n\t\t\t\tidentityProviders: this.resolvers.idpQueryResolver.identityProviders.bind(this.resolvers.idpQueryResolver),\n\t\t\t\tmailTemplates: this.resolvers.mailTemplateQueryResolver.mailTemplates.bind(this.resolvers.mailTemplateQueryResolver),\n\t\t\t\tconfiguration: this.resolvers.configurationQueryResolver.configuration.bind(this.resolvers.configurationQueryResolver),\n\t\t\t\tauthPolicies: this.resolvers.authPolicyQueryResolver.authPolicies.bind(this.resolvers.authPolicyQueryResolver),\n\t\t\t\tcustomRoles: this.resolvers.customRoleQueryResolver.customRoles.bind(this.resolvers.customRoleQueryResolver),\n\t\t\t\tcustomRolePermissions: this.resolvers.customRoleQueryResolver.customRolePermissions.bind(this.resolvers.customRoleQueryResolver),\n\t\t\t\tauthLog: this.resolvers.authLogQueryResolver.authLog.bind(this.resolvers.authLogQueryResolver),\n\t\t\t\tcheckResetPasswordToken: () => {\n\t\t\t\t\tthrow new Error('not implemented')\n\t\t\t\t},\n\t\t\t},\n\t\t\tMutation: {\n\t\t\t\tsignUp: this.resolvers.signUpMutationResolver.signUp.bind(this.resolvers.signUpMutationResolver),\n\t\t\t\tsignIn: this.resolvers.signInMutationResolver.signIn.bind(this.resolvers.signInMutationResolver),\n\t\t\t\tcreateSessionToken: this.resolvers.signInMutationResolver.createSessionToken.bind(this.resolvers.signInMutationResolver),\n\t\t\t\tsignOut: this.resolvers.signOutMutationResolver.signOut.bind(this.resolvers.signOutMutationResolver),\n\n\t\t\t\tchangeProfile: this.resolvers.changeProfileMutationResolver.changeProfile.bind(this.resolvers.changeProfileMutationResolver),\n\t\t\t\tchangeMyProfile: this.resolvers.changeProfileMutationResolver.changeMyProfile.bind(this.resolvers.changeProfileMutationResolver),\n\t\t\t\tchangePassword: this.resolvers.changePasswordMutationResolver.changePassword.bind(this.resolvers.changePasswordMutationResolver),\n\t\t\t\tchangeMyPassword: this.resolvers.changePasswordMutationResolver.changeMyPassword.bind(this.resolvers.changePasswordMutationResolver),\n\t\t\t\tcreateResetPasswordRequest: this.resolvers.resetPasswordMutationResolver.createResetPasswordRequest.bind(\n\t\t\t\t\tthis.resolvers.resetPasswordMutationResolver,\n\t\t\t\t),\n\t\t\t\tresetPassword: this.resolvers.resetPasswordMutationResolver.resetPassword.bind(this.resolvers.resetPasswordMutationResolver),\n\n\t\t\t\trequestEmailVerification: this.resolvers.emailVerificationMutationResolver.requestEmailVerification.bind(\n\t\t\t\t\tthis.resolvers.emailVerificationMutationResolver,\n\t\t\t\t),\n\t\t\t\tverifyEmail: this.resolvers.emailVerificationMutationResolver.verifyEmail.bind(this.resolvers.emailVerificationMutationResolver),\n\t\t\t\tconfirmEmailChange: this.resolvers.changeProfileMutationResolver.confirmEmailChange.bind(this.resolvers.changeProfileMutationResolver),\n\n\t\t\t\tinitSignInIDP: this.resolvers.idpMutationResolver.initSignInIDP.bind(this.resolvers.idpMutationResolver),\n\t\t\t\tsignInIDP: this.resolvers.idpMutationResolver.signInIDP.bind(this.resolvers.idpMutationResolver),\n\t\t\t\taddIDP: this.resolvers.registerIdpMutationResolver.addIDP.bind(this.resolvers.registerIdpMutationResolver),\n\t\t\t\tdisableIDP: this.resolvers.disableIdpMutationResolver.disableIDP.bind(this.resolvers.disableIdpMutationResolver),\n\t\t\t\tenableIDP: this.resolvers.enableIdpMutationResolver.enableIDP.bind(this.resolvers.enableIdpMutationResolver),\n\t\t\t\tupdateIDP: this.resolvers.updateIdpMutationResolver.updateIDP.bind(this.resolvers.updateIdpMutationResolver),\n\t\t\t\tdisconnectMyIdentityProvider: this.resolvers.disconnectMyIdentityProviderMutationResolver.disconnectMyIdentityProvider.bind(\n\t\t\t\t\tthis.resolvers.disconnectMyIdentityProviderMutationResolver,\n\t\t\t\t),\n\t\t\t\tdisablePerson: this.resolvers.disablePersonMutationResolver.disablePerson.bind(this.resolvers.disablePersonMutationResolver),\n\t\t\t\tenablePerson: this.resolvers.enablePersonMutationResolver.enablePerson.bind(this.resolvers.enablePersonMutationResolver),\n\t\t\t\tforceSignOutPerson: this.resolvers.forceSignOutMutationResolver.forceSignOutPerson.bind(this.resolvers.forceSignOutMutationResolver),\n\t\t\t\tresetPersonMfa: this.resolvers.resetPersonMfaMutationResolver.resetPersonMfa.bind(this.resolvers.resetPersonMfaMutationResolver),\n\t\t\t\trevokeSession: this.resolvers.revokeSessionMutationResolver.revokeSession.bind(this.resolvers.revokeSessionMutationResolver),\n\n\t\t\t\tsignInPasswordless: this.resolvers.passwordlessMutationResolver.signInPasswordless.bind(this.resolvers.passwordlessMutationResolver),\n\t\t\t\tinitSignInPasswordless: this.resolvers.passwordlessMutationResolver.initSignInPasswordless.bind(this.resolvers.passwordlessMutationResolver),\n\t\t\t\tactivatePasswordlessOtp: this.resolvers.passwordlessMutationResolver.activatePasswordlessOtp.bind(this.resolvers.passwordlessMutationResolver),\n\t\t\t\tdisableMyPasswordless: this.resolvers.togglePasswordlessMutationResolver.disableMyPasswordless.bind(\n\t\t\t\t\tthis.resolvers.togglePasswordlessMutationResolver,\n\t\t\t\t),\n\t\t\t\tenableMyPasswordless: this.resolvers.togglePasswordlessMutationResolver.enableMyPasswordless.bind(\n\t\t\t\t\tthis.resolvers.togglePasswordlessMutationResolver,\n\t\t\t\t),\n\n\t\t\t\tinvite: this.resolvers.inviteMutationResolver.invite.bind(this.resolvers.inviteMutationResolver),\n\t\t\t\tunmanagedInvite: this.resolvers.inviteMutationResolver.unmanagedInvite.bind(this.resolvers.inviteMutationResolver),\n\n\t\t\t\taddProjectMember: this.resolvers.addProjectMemberMutationResolver.addProjectMember.bind(this.resolvers.addProjectMemberMutationResolver),\n\t\t\t\tupdateProjectMember: this.resolvers.updateProjectMemberMutationResolver.updateProjectMember.bind(\n\t\t\t\t\tthis.resolvers.updateProjectMemberMutationResolver,\n\t\t\t\t),\n\t\t\t\tremoveProjectMember: this.resolvers.removeProjectMemberMutationResolver.removeProjectMember.bind(\n\t\t\t\t\tthis.resolvers.updateProjectMemberMutationResolver,\n\t\t\t\t),\n\n\t\t\t\tcreateApiKey: this.resolvers.createApiKeyMutationResolver.createApiKey.bind(this.resolvers.createApiKeyMutationResolver),\n\t\t\t\tcreateGlobalApiKey: this.resolvers.createApiKeyMutationResolver.createGlobalApiKey.bind(this.resolvers.createApiKeyMutationResolver),\n\t\t\t\tdisableApiKey: this.resolvers.disableApiKeyMutationResolver.disableApiKey.bind(this.resolvers.disableApiKeyMutationResolver),\n\n\t\t\t\tprepareOtp: this.resolvers.otpMutationResolver.prepareOtp.bind(this.resolvers.otpMutationResolver),\n\t\t\t\tconfirmOtp: this.resolvers.otpMutationResolver.confirmOtp.bind(this.resolvers.otpMutationResolver),\n\t\t\t\tdisableOtp: this.resolvers.otpMutationResolver.disableOtp.bind(this.resolvers.otpMutationResolver),\n\t\t\t\tregenerateBackupCodes: this.resolvers.regenerateBackupCodesMutationResolver.regenerateBackupCodes.bind(\n\t\t\t\t\tthis.resolvers.regenerateBackupCodesMutationResolver,\n\t\t\t\t),\n\n\t\t\t\tinitEmailOtp: this.resolvers.emailOtpMutationResolver.initEmailOtp.bind(this.resolvers.emailOtpMutationResolver),\n\t\t\t\tconfirmEmailOtp: this.resolvers.emailOtpMutationResolver.confirmEmailOtp.bind(this.resolvers.emailOtpMutationResolver),\n\t\t\t\tdisableEmailOtp: this.resolvers.emailOtpMutationResolver.disableEmailOtp.bind(this.resolvers.emailOtpMutationResolver),\n\n\t\t\t\taddMailTemplate: this.resolvers.mailTemplateMutationResolver.addMailTemplate.bind(this.resolvers.mailTemplateMutationResolver),\n\t\t\t\tremoveMailTemplate: this.resolvers.mailTemplateMutationResolver.removeMailTemplate.bind(this.resolvers.mailTemplateMutationResolver),\n\n\t\t\t\taddProjectMailTemplate: this.resolvers.mailTemplateMutationResolver.addMailTemplate.bind(this.resolvers.mailTemplateMutationResolver),\n\t\t\t\tremoveProjectMailTemplate: this.resolvers.mailTemplateMutationResolver.removeMailTemplate.bind(this.resolvers.mailTemplateMutationResolver),\n\n\t\t\t\tcreateProject: this.resolvers.createProjectMutationResolver.createProject.bind(this.resolvers.createProjectMutationResolver),\n\t\t\t\tupdateProject: this.resolvers.updateProjectMutationResolver.updateProject.bind(this.resolvers.updateProjectMutationResolver),\n\t\t\t\tsetProjectSecret: this.resolvers.setProjectSecretMutationResolver.setProjectSecret.bind(this.resolvers.setProjectSecretMutationResolver),\n\n\t\t\t\taddGlobalIdentityRoles: this.resolvers.identityGlobalRolesMutationResolver.addGlobalIdentityRoles.bind(\n\t\t\t\t\tthis.resolvers.identityGlobalRolesMutationResolver,\n\t\t\t\t),\n\t\t\t\tremoveGlobalIdentityRoles: this.resolvers.identityGlobalRolesMutationResolver.removeGlobalIdentityRoles.bind(\n\t\t\t\t\tthis.resolvers.identityGlobalRolesMutationResolver,\n\t\t\t\t),\n\n\t\t\t\tconfigure: this.resolvers.configurationMutationResolver.configure.bind(this.resolvers.configurationMutationResolver),\n\n\t\t\t\tcreateAuthPolicy: this.resolvers.authPolicyMutationResolver.createAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),\n\t\t\t\tupdateAuthPolicy: this.resolvers.authPolicyMutationResolver.updateAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),\n\t\t\t\tdeleteAuthPolicy: this.resolvers.authPolicyMutationResolver.deleteAuthPolicy.bind(this.resolvers.authPolicyMutationResolver),\n\n\t\t\t\tcreateCustomRole: this.resolvers.customRoleMutationResolver.createCustomRole.bind(this.resolvers.customRoleMutationResolver),\n\t\t\t\tupdateCustomRole: this.resolvers.customRoleMutationResolver.updateCustomRole.bind(this.resolvers.customRoleMutationResolver),\n\t\t\t\tdeleteCustomRole: this.resolvers.customRoleMutationResolver.deleteCustomRole.bind(this.resolvers.customRoleMutationResolver),\n\t\t\t},\n\t\t}\n\t}\n}\n\nnamespace ResolverFactory {\n\texport type FieldResolverArgs = {\n\t\t[argument: string]: any\n\t}\n}\n\nexport { ResolverFactory }\n"],"names":["JSONType","DateTimeType","IntervalType"],"mappings":"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"}
|