@contember/engine-tenant-api 2.1.0-alpha.16 → 2.1.0-alpha.17
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/dist/development/index.cjs +5 -6
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +2 -3
- package/dist/development/src/TenantContainer.cjs +4 -2
- package/dist/development/src/TenantContainer.cjs.map +1 -1
- package/dist/development/src/TenantContainer.js +4 -2
- package/dist/development/src/TenantContainer.js.map +1 -1
- package/dist/development/src/bridges/system/IdentityFetcher.cjs +1 -0
- package/dist/development/src/bridges/system/IdentityFetcher.cjs.map +1 -1
- package/dist/development/src/bridges/system/IdentityFetcher.js +1 -0
- package/dist/development/src/bridges/system/IdentityFetcher.js.map +1 -1
- package/dist/development/src/migrations/2025-04-16-180000-config-up.cjs +39 -0
- package/dist/development/src/migrations/2025-04-16-180000-config-up.cjs.map +1 -0
- package/dist/development/src/migrations/2025-04-16-180000-config-up.js +40 -0
- package/dist/development/src/migrations/2025-04-16-180000-config-up.js.map +1 -0
- package/dist/development/src/migrations/2025-04-17-160000-auth-log.cjs +45 -0
- package/dist/development/src/migrations/2025-04-17-160000-auth-log.cjs.map +1 -0
- package/dist/development/src/migrations/2025-04-17-160000-auth-log.js +46 -0
- package/dist/development/src/migrations/2025-04-17-160000-auth-log.js.map +1 -0
- package/dist/development/src/migrations/runner.cjs +9 -4
- package/dist/development/src/migrations/runner.cjs.map +1 -1
- package/dist/development/src/migrations/runner.js +7 -2
- package/dist/development/src/migrations/runner.js.map +1 -1
- package/dist/development/src/migrations/snapshot.cjs +56 -1
- package/dist/development/src/migrations/snapshot.cjs.map +1 -1
- package/dist/development/src/migrations/snapshot.js +56 -1
- package/dist/development/src/migrations/snapshot.js.map +1 -1
- package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.cjs +7 -7
- package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.js +1 -1
- package/dist/development/src/model/commands/authLog/CreateAuthLogEntryCommand.cjs +27 -0
- package/dist/development/src/model/commands/authLog/CreateAuthLogEntryCommand.cjs.map +1 -0
- package/dist/development/src/model/commands/authLog/CreateAuthLogEntryCommand.js +27 -0
- package/dist/development/src/model/commands/authLog/CreateAuthLogEntryCommand.js.map +1 -0
- package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs +15 -2
- package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js +15 -2
- package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -1
- package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.cjs +4 -4
- package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.js +1 -1
- package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs +5 -5
- package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -1
- package/dist/development/src/model/commands/personToken/ResetPasswordCommand.js +1 -1
- package/dist/development/src/model/queries/apiKey/ApiKeyQuery.cjs +4 -4
- package/dist/development/src/model/queries/apiKey/ApiKeyQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/apiKey/ApiKeyQuery.js +1 -1
- package/dist/development/src/model/queries/authLog/NextLoginAttemptQuery.cjs +46 -0
- package/dist/development/src/model/queries/authLog/NextLoginAttemptQuery.cjs.map +1 -0
- package/dist/development/src/model/queries/authLog/NextLoginAttemptQuery.js +46 -0
- package/dist/development/src/model/queries/authLog/NextLoginAttemptQuery.js.map +1 -0
- package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs +18 -1
- package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -1
- package/dist/development/src/model/queries/configuration/ConfigurationQuery.js +18 -1
- package/dist/development/src/model/queries/configuration/ConfigurationQuery.js.map +1 -1
- package/dist/development/src/model/queries/personToken/PersonTokenQuery.cjs +3 -3
- 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/service/AuthLogService.cjs +34 -0
- package/dist/development/src/model/service/AuthLogService.cjs.map +1 -0
- package/dist/development/src/model/service/AuthLogService.js +34 -0
- package/dist/development/src/model/service/AuthLogService.js.map +1 -0
- package/dist/development/src/model/service/ConfigurationManager.cjs +0 -10
- package/dist/development/src/model/service/ConfigurationManager.cjs.map +1 -1
- package/dist/development/src/model/service/ConfigurationManager.js +0 -10
- package/dist/development/src/model/service/ConfigurationManager.js.map +1 -1
- package/dist/development/src/model/service/IDPSignInManager.cjs +37 -5
- package/dist/development/src/model/service/IDPSignInManager.cjs.map +1 -1
- package/dist/development/src/model/service/IDPSignInManager.js +37 -5
- package/dist/development/src/model/service/IDPSignInManager.js.map +1 -1
- package/dist/development/src/model/service/PasswordChangeManager.cjs +21 -12
- package/dist/development/src/model/service/PasswordChangeManager.cjs.map +1 -1
- package/dist/development/src/model/service/PasswordChangeManager.js +20 -11
- package/dist/development/src/model/service/PasswordChangeManager.js.map +1 -1
- package/dist/development/src/model/service/PasswordResetManager.cjs +40 -8
- package/dist/development/src/model/service/PasswordResetManager.cjs.map +1 -1
- package/dist/development/src/model/service/PasswordResetManager.js +40 -8
- package/dist/development/src/model/service/PasswordResetManager.js.map +1 -1
- package/dist/development/src/model/service/PasswordStrengthValidator.cjs +63 -0
- package/dist/development/src/model/service/PasswordStrengthValidator.cjs.map +1 -0
- package/dist/development/src/model/service/PasswordStrengthValidator.js +63 -0
- package/dist/development/src/model/service/PasswordStrengthValidator.js.map +1 -0
- package/dist/development/src/model/service/PasswordlessSignInManager.cjs +89 -24
- package/dist/development/src/model/service/PasswordlessSignInManager.cjs.map +1 -1
- package/dist/development/src/model/service/PasswordlessSignInManager.js +81 -16
- package/dist/development/src/model/service/PasswordlessSignInManager.js.map +1 -1
- package/dist/development/src/model/service/PersonAccessManager.cjs +7 -29
- package/dist/development/src/model/service/PersonAccessManager.cjs.map +1 -1
- package/dist/development/src/model/service/PersonAccessManager.js +7 -29
- package/dist/development/src/model/service/PersonAccessManager.js.map +1 -1
- package/dist/development/src/model/service/SignInManager.cjs +56 -31
- package/dist/development/src/model/service/SignInManager.cjs.map +1 -1
- package/dist/development/src/model/service/SignInManager.js +57 -32
- package/dist/development/src/model/service/SignInManager.js.map +1 -1
- package/dist/development/src/model/service/SignUpManager.cjs +13 -8
- package/dist/development/src/model/service/SignUpManager.cjs.map +1 -1
- package/dist/development/src/model/service/SignUpManager.js +11 -6
- package/dist/development/src/model/service/SignUpManager.js.map +1 -1
- package/dist/development/src/model/service/apiKey/ApiKeyManager.cjs +6 -1
- package/dist/development/src/model/service/apiKey/ApiKeyManager.cjs.map +1 -1
- package/dist/development/src/model/service/apiKey/ApiKeyManager.js +6 -1
- package/dist/development/src/model/service/apiKey/ApiKeyManager.js.map +1 -1
- package/dist/development/src/model/utils/Response.cjs +2 -1
- package/dist/development/src/model/utils/Response.cjs.map +1 -1
- package/dist/development/src/model/utils/Response.js +2 -1
- package/dist/development/src/model/utils/Response.js.map +1 -1
- package/dist/development/src/model/utils/blacklist.cjs +10006 -0
- package/dist/development/src/model/utils/blacklist.cjs.map +1 -0
- package/dist/development/src/model/utils/blacklist.js +10006 -0
- package/dist/development/src/model/utils/blacklist.js.map +1 -0
- package/dist/{production/src/model/utils/typeUtils.cjs → development/src/model/utils/hex.cjs} +1 -1
- package/dist/development/src/model/utils/hex.cjs.map +1 -0
- package/dist/development/src/model/utils/{typeUtils.js → hex.js} +1 -1
- package/dist/development/src/model/utils/hex.js.map +1 -0
- package/dist/development/src/model/utils/interval.cjs +8 -0
- package/dist/development/src/model/utils/interval.cjs.map +1 -0
- package/dist/development/src/model/utils/interval.js +8 -0
- package/dist/development/src/model/utils/interval.js.map +1 -0
- package/dist/development/src/model/utils/{tokenUtils.cjs → token.cjs} +3 -3
- package/dist/development/src/model/utils/token.cjs.map +1 -0
- package/dist/development/src/model/utils/{tokenUtils.js → token.js} +2 -2
- package/dist/development/src/model/utils/token.js.map +1 -0
- package/dist/development/src/resolvers/ResolverFactory.cjs +1 -0
- package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/ResolverFactory.js +2 -1
- package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
- package/dist/development/src/resolvers/TenantResolverContextFactory.cjs +10 -2
- package/dist/development/src/resolvers/TenantResolverContextFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/TenantResolverContextFactory.js +10 -2
- package/dist/development/src/resolvers/TenantResolverContextFactory.js.map +1 -1
- package/dist/development/src/resolvers/errorUtils.cjs +15 -4
- package/dist/development/src/resolvers/errorUtils.cjs.map +1 -1
- package/dist/development/src/resolvers/errorUtils.js +15 -4
- package/dist/development/src/resolvers/errorUtils.js.map +1 -1
- package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs +4 -3
- package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js +2 -1
- package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs +17 -6
- package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.js +17 -6
- package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs +14 -0
- package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.js +14 -0
- package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs +7 -1
- package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.js +7 -1
- package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.cjs +5 -0
- package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.js +5 -0
- package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.cjs +3 -2
- package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.js +2 -1
- package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.cjs +26 -1
- package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.js +26 -1
- package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs +20 -0
- package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js +20 -0
- package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs +25 -2
- package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.js +25 -2
- package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.cjs +22 -0
- package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.js +22 -0
- package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.cjs +2 -1
- package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.js +2 -1
- package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs +3 -1
- package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js +3 -1
- package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs +3 -2
- package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.js +2 -1
- package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js +1 -0
- package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs +3 -1
- package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js +3 -1
- package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/IDPQueryResolver.cjs +1 -0
- package/dist/development/src/resolvers/query/IDPQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/IDPQueryResolver.js +1 -0
- package/dist/development/src/resolvers/query/IDPQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/MailTemplateQueryResolver.cjs +1 -0
- package/dist/development/src/resolvers/query/MailTemplateQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/MailTemplateQueryResolver.js +1 -0
- package/dist/development/src/resolvers/query/MailTemplateQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/PersonQueryResolver.cjs +1 -0
- package/dist/development/src/resolvers/query/PersonQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/PersonQueryResolver.js +1 -0
- package/dist/development/src/resolvers/query/PersonQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.cjs +1 -0
- package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.js +1 -0
- package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/query/ProjectQueryResolver.cjs +1 -0
- package/dist/development/src/resolvers/query/ProjectQueryResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/query/ProjectQueryResolver.js +1 -0
- package/dist/development/src/resolvers/query/ProjectQueryResolver.js.map +1 -1
- package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.cjs +1 -0
- package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.js +1 -0
- package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.js.map +1 -1
- package/dist/development/src/resolvers/types/IdentityTypeResolver.cjs +1 -0
- package/dist/development/src/resolvers/types/IdentityTypeResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/types/IdentityTypeResolver.js +1 -0
- package/dist/development/src/resolvers/types/IdentityTypeResolver.js.map +1 -1
- package/dist/development/src/resolvers/types/ProjectTypeResolver.cjs +1 -0
- package/dist/development/src/resolvers/types/ProjectTypeResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/types/ProjectTypeResolver.js +1 -0
- package/dist/development/src/resolvers/types/ProjectTypeResolver.js.map +1 -1
- package/dist/development/src/schema/tenant.graphql.cjs +64 -2
- package/dist/development/src/schema/tenant.graphql.cjs.map +1 -1
- package/dist/development/src/schema/tenant.graphql.js +64 -2
- package/dist/development/src/schema/tenant.graphql.js.map +1 -1
- package/dist/production/index.cjs +5 -6
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +2 -3
- package/dist/production/src/TenantContainer.cjs +4 -2
- package/dist/production/src/TenantContainer.cjs.map +1 -1
- package/dist/production/src/TenantContainer.js +4 -2
- package/dist/production/src/TenantContainer.js.map +1 -1
- package/dist/production/src/bridges/system/IdentityFetcher.cjs +1 -0
- package/dist/production/src/bridges/system/IdentityFetcher.cjs.map +1 -1
- package/dist/production/src/bridges/system/IdentityFetcher.js +1 -0
- package/dist/production/src/bridges/system/IdentityFetcher.js.map +1 -1
- package/dist/production/src/migrations/2025-04-16-180000-config-up.cjs +39 -0
- package/dist/production/src/migrations/2025-04-16-180000-config-up.cjs.map +1 -0
- package/dist/production/src/migrations/2025-04-16-180000-config-up.js +40 -0
- package/dist/production/src/migrations/2025-04-16-180000-config-up.js.map +1 -0
- package/dist/production/src/migrations/2025-04-17-160000-auth-log.cjs +45 -0
- package/dist/production/src/migrations/2025-04-17-160000-auth-log.cjs.map +1 -0
- package/dist/production/src/migrations/2025-04-17-160000-auth-log.js +46 -0
- package/dist/production/src/migrations/2025-04-17-160000-auth-log.js.map +1 -0
- package/dist/production/src/migrations/runner.cjs +9 -4
- package/dist/production/src/migrations/runner.cjs.map +1 -1
- package/dist/production/src/migrations/runner.js +7 -2
- package/dist/production/src/migrations/runner.js.map +1 -1
- package/dist/production/src/migrations/snapshot.cjs +56 -1
- package/dist/production/src/migrations/snapshot.cjs.map +1 -1
- package/dist/production/src/migrations/snapshot.js +56 -1
- package/dist/production/src/migrations/snapshot.js.map +1 -1
- package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.cjs +7 -7
- package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.js +1 -1
- package/dist/production/src/model/commands/authLog/CreateAuthLogEntryCommand.cjs +27 -0
- package/dist/production/src/model/commands/authLog/CreateAuthLogEntryCommand.cjs.map +1 -0
- package/dist/production/src/model/commands/authLog/CreateAuthLogEntryCommand.js +27 -0
- package/dist/production/src/model/commands/authLog/CreateAuthLogEntryCommand.js.map +1 -0
- package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs +15 -2
- package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js +15 -2
- package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -1
- package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.cjs +4 -4
- package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.js +1 -1
- package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs +5 -5
- package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -1
- package/dist/production/src/model/commands/personToken/ResetPasswordCommand.js +1 -1
- package/dist/production/src/model/queries/apiKey/ApiKeyQuery.cjs +4 -4
- package/dist/production/src/model/queries/apiKey/ApiKeyQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/apiKey/ApiKeyQuery.js +1 -1
- package/dist/production/src/model/queries/authLog/NextLoginAttemptQuery.cjs +46 -0
- package/dist/production/src/model/queries/authLog/NextLoginAttemptQuery.cjs.map +1 -0
- package/dist/production/src/model/queries/authLog/NextLoginAttemptQuery.js +46 -0
- package/dist/production/src/model/queries/authLog/NextLoginAttemptQuery.js.map +1 -0
- package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs +18 -1
- package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -1
- package/dist/production/src/model/queries/configuration/ConfigurationQuery.js +18 -1
- package/dist/production/src/model/queries/configuration/ConfigurationQuery.js.map +1 -1
- package/dist/production/src/model/queries/personToken/PersonTokenQuery.cjs +3 -3
- 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/service/AuthLogService.cjs +34 -0
- package/dist/production/src/model/service/AuthLogService.cjs.map +1 -0
- package/dist/production/src/model/service/AuthLogService.js +34 -0
- package/dist/production/src/model/service/AuthLogService.js.map +1 -0
- package/dist/production/src/model/service/ConfigurationManager.cjs +0 -10
- package/dist/production/src/model/service/ConfigurationManager.cjs.map +1 -1
- package/dist/production/src/model/service/ConfigurationManager.js +0 -10
- package/dist/production/src/model/service/ConfigurationManager.js.map +1 -1
- package/dist/production/src/model/service/IDPSignInManager.cjs +37 -5
- package/dist/production/src/model/service/IDPSignInManager.cjs.map +1 -1
- package/dist/production/src/model/service/IDPSignInManager.js +37 -5
- package/dist/production/src/model/service/IDPSignInManager.js.map +1 -1
- package/dist/production/src/model/service/PasswordChangeManager.cjs +21 -12
- package/dist/production/src/model/service/PasswordChangeManager.cjs.map +1 -1
- package/dist/production/src/model/service/PasswordChangeManager.js +20 -11
- package/dist/production/src/model/service/PasswordChangeManager.js.map +1 -1
- package/dist/production/src/model/service/PasswordResetManager.cjs +40 -8
- package/dist/production/src/model/service/PasswordResetManager.cjs.map +1 -1
- package/dist/production/src/model/service/PasswordResetManager.js +40 -8
- package/dist/production/src/model/service/PasswordResetManager.js.map +1 -1
- package/dist/production/src/model/service/PasswordStrengthValidator.cjs +63 -0
- package/dist/production/src/model/service/PasswordStrengthValidator.cjs.map +1 -0
- package/dist/production/src/model/service/PasswordStrengthValidator.js +63 -0
- package/dist/production/src/model/service/PasswordStrengthValidator.js.map +1 -0
- package/dist/production/src/model/service/PasswordlessSignInManager.cjs +89 -24
- package/dist/production/src/model/service/PasswordlessSignInManager.cjs.map +1 -1
- package/dist/production/src/model/service/PasswordlessSignInManager.js +81 -16
- package/dist/production/src/model/service/PasswordlessSignInManager.js.map +1 -1
- package/dist/production/src/model/service/PersonAccessManager.cjs +7 -29
- package/dist/production/src/model/service/PersonAccessManager.cjs.map +1 -1
- package/dist/production/src/model/service/PersonAccessManager.js +7 -29
- package/dist/production/src/model/service/PersonAccessManager.js.map +1 -1
- package/dist/production/src/model/service/SignInManager.cjs +56 -31
- package/dist/production/src/model/service/SignInManager.cjs.map +1 -1
- package/dist/production/src/model/service/SignInManager.js +57 -32
- package/dist/production/src/model/service/SignInManager.js.map +1 -1
- package/dist/production/src/model/service/SignUpManager.cjs +13 -8
- package/dist/production/src/model/service/SignUpManager.cjs.map +1 -1
- package/dist/production/src/model/service/SignUpManager.js +11 -6
- package/dist/production/src/model/service/SignUpManager.js.map +1 -1
- package/dist/production/src/model/service/apiKey/ApiKeyManager.cjs +6 -1
- package/dist/production/src/model/service/apiKey/ApiKeyManager.cjs.map +1 -1
- package/dist/production/src/model/service/apiKey/ApiKeyManager.js +6 -1
- package/dist/production/src/model/service/apiKey/ApiKeyManager.js.map +1 -1
- package/dist/production/src/model/utils/Response.cjs +2 -1
- package/dist/production/src/model/utils/Response.cjs.map +1 -1
- package/dist/production/src/model/utils/Response.js +2 -1
- package/dist/production/src/model/utils/Response.js.map +1 -1
- package/dist/production/src/model/utils/blacklist.cjs +10006 -0
- package/dist/production/src/model/utils/blacklist.cjs.map +1 -0
- package/dist/production/src/model/utils/blacklist.js +10006 -0
- package/dist/production/src/model/utils/blacklist.js.map +1 -0
- package/dist/{development/src/model/utils/typeUtils.cjs → production/src/model/utils/hex.cjs} +1 -1
- package/dist/production/src/model/utils/hex.cjs.map +1 -0
- package/dist/production/src/model/utils/{typeUtils.js → hex.js} +1 -1
- package/dist/production/src/model/utils/hex.js.map +1 -0
- package/dist/production/src/model/utils/interval.cjs +8 -0
- package/dist/production/src/model/utils/interval.cjs.map +1 -0
- package/dist/production/src/model/utils/interval.js +8 -0
- package/dist/production/src/model/utils/interval.js.map +1 -0
- package/dist/production/src/model/utils/{tokenUtils.cjs → token.cjs} +3 -3
- package/dist/production/src/model/utils/token.cjs.map +1 -0
- package/dist/production/src/model/utils/{tokenUtils.js → token.js} +2 -2
- package/dist/production/src/model/utils/token.js.map +1 -0
- package/dist/production/src/resolvers/ResolverFactory.cjs +1 -0
- package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/ResolverFactory.js +2 -1
- package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
- package/dist/production/src/resolvers/TenantResolverContextFactory.cjs +10 -2
- package/dist/production/src/resolvers/TenantResolverContextFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/TenantResolverContextFactory.js +10 -2
- package/dist/production/src/resolvers/TenantResolverContextFactory.js.map +1 -1
- package/dist/production/src/resolvers/errorUtils.cjs +15 -4
- package/dist/production/src/resolvers/errorUtils.cjs.map +1 -1
- package/dist/production/src/resolvers/errorUtils.js +15 -4
- package/dist/production/src/resolvers/errorUtils.js.map +1 -1
- package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs +4 -3
- package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js +2 -1
- package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs +17 -6
- package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.js +17 -6
- package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs +14 -0
- package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.js +14 -0
- package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs +7 -1
- package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.js +7 -1
- package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.cjs +5 -0
- package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.js +5 -0
- package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.cjs +3 -2
- package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.js +2 -1
- package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.cjs +26 -1
- package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.js +26 -1
- package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs +20 -0
- package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js +20 -0
- package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs +25 -2
- package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.js +25 -2
- package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.cjs +22 -0
- package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.js +22 -0
- package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.cjs +2 -1
- package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.js +2 -1
- package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs +3 -1
- package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js +3 -1
- package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs +3 -2
- package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.js +2 -1
- package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js +1 -0
- package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs +3 -1
- package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js +3 -1
- package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/IDPQueryResolver.cjs +1 -0
- package/dist/production/src/resolvers/query/IDPQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/IDPQueryResolver.js +1 -0
- package/dist/production/src/resolvers/query/IDPQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/MailTemplateQueryResolver.cjs +1 -0
- package/dist/production/src/resolvers/query/MailTemplateQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/MailTemplateQueryResolver.js +1 -0
- package/dist/production/src/resolvers/query/MailTemplateQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/PersonQueryResolver.cjs +1 -0
- package/dist/production/src/resolvers/query/PersonQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/PersonQueryResolver.js +1 -0
- package/dist/production/src/resolvers/query/PersonQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.cjs +1 -0
- package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.js +1 -0
- package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/query/ProjectQueryResolver.cjs +1 -0
- package/dist/production/src/resolvers/query/ProjectQueryResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/query/ProjectQueryResolver.js +1 -0
- package/dist/production/src/resolvers/query/ProjectQueryResolver.js.map +1 -1
- package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.cjs +1 -0
- package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.js +1 -0
- package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.js.map +1 -1
- package/dist/production/src/resolvers/types/IdentityTypeResolver.cjs +1 -0
- package/dist/production/src/resolvers/types/IdentityTypeResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/types/IdentityTypeResolver.js +1 -0
- package/dist/production/src/resolvers/types/IdentityTypeResolver.js.map +1 -1
- package/dist/production/src/resolvers/types/ProjectTypeResolver.cjs +1 -0
- package/dist/production/src/resolvers/types/ProjectTypeResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/types/ProjectTypeResolver.js +1 -0
- package/dist/production/src/resolvers/types/ProjectTypeResolver.js.map +1 -1
- package/dist/production/src/schema/tenant.graphql.cjs +64 -2
- package/dist/production/src/schema/tenant.graphql.cjs.map +1 -1
- package/dist/production/src/schema/tenant.graphql.js +64 -2
- package/dist/production/src/schema/tenant.graphql.js.map +1 -1
- package/dist/tests/cases/integration/mocked/sql/createSessionKeySql.d.ts +1 -1
- package/dist/tests/cases/integration/mocked/sql/getConfigSql.d.ts +3 -0
- package/dist/tests/cases/integration/mocked/sql/getConfigSql.d.ts.map +1 -0
- package/dist/tests/cases/integration/mocked/sql/getNextLoginAttemptSql.d.ts +3 -0
- package/dist/tests/cases/integration/mocked/sql/getNextLoginAttemptSql.d.ts.map +1 -0
- package/dist/tests/src/testTenant.d.ts +2 -0
- package/dist/tests/src/testTenant.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/TenantContainer.d.ts +6 -0
- package/dist/types/TenantContainer.d.ts.map +1 -1
- package/dist/types/migrations/2025-04-16-180000-config-up.d.ts +3 -0
- package/dist/types/migrations/2025-04-16-180000-config-up.d.ts.map +1 -0
- package/dist/types/migrations/2025-04-17-160000-auth-log.d.ts +3 -0
- package/dist/types/migrations/2025-04-17-160000-auth-log.d.ts.map +1 -0
- package/dist/types/migrations/runner.d.ts.map +1 -1
- package/dist/types/migrations/snapshot.d.ts.map +1 -1
- package/dist/types/model/commands/authLog/CreateAuthLogEntryCommand.d.ts +26 -0
- package/dist/types/model/commands/authLog/CreateAuthLogEntryCommand.d.ts.map +1 -0
- package/dist/types/model/commands/configuration/UpdateConfigurationCommand.d.ts.map +1 -1
- package/dist/types/model/dtos/AuthLogBag.d.ts +3 -0
- package/dist/types/model/dtos/AuthLogBag.d.ts.map +1 -0
- package/dist/types/model/queries/authLog/NextLoginAttemptQuery.d.ts +7 -0
- package/dist/types/model/queries/authLog/NextLoginAttemptQuery.d.ts.map +1 -0
- package/dist/types/model/queries/configuration/ConfigurationQuery.d.ts +1 -1
- package/dist/types/model/queries/configuration/ConfigurationQuery.d.ts.map +1 -1
- package/dist/types/model/service/AuthLogService.d.ts +34 -0
- package/dist/types/model/service/AuthLogService.d.ts.map +1 -0
- package/dist/types/model/service/ConfigurationManager.d.ts +1 -2
- package/dist/types/model/service/ConfigurationManager.d.ts.map +1 -1
- package/dist/types/model/service/IDPSignInManager.d.ts +5 -1
- package/dist/types/model/service/IDPSignInManager.d.ts.map +1 -1
- package/dist/types/model/service/PasswordChangeManager.d.ts +8 -4
- package/dist/types/model/service/PasswordChangeManager.d.ts.map +1 -1
- package/dist/types/model/service/PasswordResetManager.d.ts +11 -4
- package/dist/types/model/service/PasswordResetManager.d.ts.map +1 -1
- package/dist/types/model/service/PasswordStrengthValidator.d.ts +11 -0
- package/dist/types/model/service/PasswordStrengthValidator.d.ts.map +1 -0
- package/dist/types/model/service/PasswordlessSignInManager.d.ts +16 -6
- package/dist/types/model/service/PasswordlessSignInManager.d.ts.map +1 -1
- package/dist/types/model/service/PersonAccessManager.d.ts +2 -1
- package/dist/types/model/service/PersonAccessManager.d.ts.map +1 -1
- package/dist/types/model/service/SignInManager.d.ts +9 -4
- package/dist/types/model/service/SignInManager.d.ts.map +1 -1
- package/dist/types/model/service/SignUpManager.d.ts +7 -3
- package/dist/types/model/service/SignUpManager.d.ts.map +1 -1
- package/dist/types/model/service/apiKey/ApiKeyManager.d.ts.map +1 -1
- package/dist/types/model/type/AuthLog.d.ts +2 -0
- package/dist/types/model/type/AuthLog.d.ts.map +1 -0
- package/dist/types/model/type/Config.d.ts +28 -0
- package/dist/types/model/type/Config.d.ts.map +1 -0
- package/dist/types/model/utils/Response.d.ts +4 -3
- package/dist/types/model/utils/Response.d.ts.map +1 -1
- package/dist/types/model/utils/blacklist.d.ts +2 -0
- package/dist/types/model/utils/blacklist.d.ts.map +1 -0
- package/dist/types/model/utils/{typeUtils.d.ts → hex.d.ts} +1 -1
- package/dist/types/model/utils/hex.d.ts.map +1 -0
- package/dist/types/model/utils/index.d.ts +1 -1
- package/dist/types/model/utils/index.d.ts.map +1 -1
- package/dist/types/model/utils/interval.d.ts +3 -0
- package/dist/types/model/utils/interval.d.ts.map +1 -0
- package/dist/types/model/utils/{tokenUtils.d.ts → token.d.ts} +2 -2
- package/dist/types/model/utils/token.d.ts.map +1 -0
- package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
- package/dist/types/resolvers/TenantResolverContext.d.ts +2 -0
- package/dist/types/resolvers/TenantResolverContext.d.ts.map +1 -1
- package/dist/types/resolvers/TenantResolverContextFactory.d.ts +6 -1
- package/dist/types/resolvers/TenantResolverContextFactory.d.ts.map +1 -1
- package/dist/types/resolvers/errorUtils.d.ts +7 -5
- package/dist/types/resolvers/errorUtils.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.map +1 -1
- package/dist/types/resolvers/mutation/person/IDPMutationResolver.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/ResetPasswordMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/SignInMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/mutation/person/TogglePasswordlessMutationResolver.d.ts.map +1 -1
- package/dist/types/resolvers/types/ProjectTypeResolver.d.ts +2 -2
- package/dist/types/resolvers/types/ProjectTypeResolver.d.ts.map +1 -1
- package/dist/types/schema/index.d.ts +103 -8
- 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 +8 -0
- package/dist/types/schema/types.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/graphql.codegen.yml +7 -3
- package/package.json +2 -1
- package/src/TenantContainer.ts +16 -10
- package/src/migrations/2025-04-16-180000-config-up.ts +39 -0
- package/src/migrations/2025-04-17-160000-auth-log.ts +45 -0
- package/src/migrations/runner.ts +4 -1
- package/src/migrations/snapshot.ts +56 -1
- package/src/model/commands/authLog/CreateAuthLogEntryCommand.ts +51 -0
- package/src/model/commands/configuration/UpdateConfigurationCommand.ts +20 -2
- package/src/model/dtos/AuthLogBag.ts +3 -0
- package/src/model/queries/authLog/NextLoginAttemptQuery.ts +63 -0
- package/src/model/queries/configuration/ConfigurationQuery.ts +20 -8
- package/src/model/service/AuthLogService.ts +62 -0
- package/src/model/service/ConfigurationManager.ts +1 -6
- package/src/model/service/IDPSignInManager.ts +41 -6
- package/src/model/service/PasswordChangeManager.ts +17 -12
- package/src/model/service/PasswordResetManager.ts +42 -11
- package/src/model/service/PasswordStrengthValidator.ts +85 -0
- package/src/model/service/PasswordlessSignInManager.ts +95 -28
- package/src/model/service/PersonAccessManager.ts +8 -27
- package/src/model/service/SignInManager.ts +68 -33
- package/src/model/service/SignUpManager.ts +16 -8
- package/src/model/service/apiKey/ApiKeyManager.ts +8 -2
- package/src/model/type/AuthLog.ts +14 -0
- package/src/model/type/Config.ts +29 -0
- package/src/model/utils/Response.ts +10 -3
- package/src/model/utils/blacklist.ts +4 -0
- package/src/model/utils/index.ts +1 -1
- package/src/model/utils/interval.ts +14 -0
- package/src/model/utils/{tokenUtils.ts → token.ts} +1 -1
- package/src/resolvers/ResolverFactory.ts +2 -1
- package/src/resolvers/TenantResolverContext.ts +2 -0
- package/src/resolvers/TenantResolverContextFactory.ts +10 -0
- package/src/resolvers/errorUtils.ts +23 -5
- package/src/resolvers/mutation/idp/AddIDPMutationResolver.ts +1 -1
- package/src/resolvers/mutation/idp/UpdateIDPMutationResolver.ts +1 -1
- package/src/resolvers/mutation/person/ChangePasswordMutationResolver.ts +17 -15
- package/src/resolvers/mutation/person/ChangeProfileMutationResolver.ts +13 -0
- package/src/resolvers/mutation/person/DisablePersonMutationResolver.ts +7 -7
- package/src/resolvers/mutation/person/IDPMutationResolver.ts +4 -0
- package/src/resolvers/mutation/person/OtpMutationResolver.ts +25 -1
- package/src/resolvers/mutation/person/PasswordlessMutationResolver.ts +21 -1
- package/src/resolvers/mutation/person/ResetPasswordMutationResolver.ts +27 -3
- package/src/resolvers/mutation/person/SignInMutationResolver.ts +26 -8
- package/src/resolvers/mutation/person/SignUpMutationResolver.ts +1 -1
- package/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.ts +2 -2
- package/src/resolvers/mutation/project/CreateProjectMutationResolver.ts +1 -1
- package/src/resolvers/mutation/project/UpdateProjectMutationResolver.ts +1 -1
- package/src/resolvers/query/ConfigurationQueryResolver.ts +2 -2
- package/src/resolvers/types/ProjectTypeResolver.ts +2 -2
- package/src/schema/index.ts +114 -5
- package/src/schema/tenant.graphql.ts +64 -2
- package/src/schema/types.ts +4 -0
- package/tests/cases/integration/mocked/changeMyPasswordMutation.test.ts +42 -2
- package/tests/cases/integration/mocked/changeMyProfileMutation.test.ts +25 -4
- package/tests/cases/integration/mocked/changePasswordMutation.test.ts +10 -2
- package/tests/cases/integration/mocked/changeProfileMutation.test.ts +7 -1
- package/tests/cases/integration/mocked/confirmOtpMutation.test.ts +13 -8
- package/tests/cases/integration/mocked/createSessionKeyMutation.test.ts +9 -21
- package/tests/cases/integration/mocked/inviteMutations.test.ts +0 -24
- package/tests/cases/integration/mocked/signInIdpMutation.test.ts +16 -1
- package/tests/cases/integration/mocked/signInMutation.test.ts +54 -22
- package/tests/cases/integration/mocked/signOutMutation.test.ts +0 -5
- package/tests/cases/integration/mocked/signUpMutation.test.ts +3 -12
- package/tests/cases/integration/mocked/sql/createSessionKeySql.ts +1 -1
- package/tests/cases/integration/mocked/sql/getConfigSql.ts +29 -0
- package/tests/cases/integration/mocked/sql/getNextLoginAttemptSql.ts +20 -0
- package/tests/src/testTenant.ts +13 -0
- package/dist/development/src/model/utils/password.cjs +0 -12
- package/dist/development/src/model/utils/password.cjs.map +0 -1
- package/dist/development/src/model/utils/password.js +0 -12
- package/dist/development/src/model/utils/password.js.map +0 -1
- package/dist/development/src/model/utils/tokenUtils.cjs.map +0 -1
- package/dist/development/src/model/utils/tokenUtils.js.map +0 -1
- package/dist/development/src/model/utils/typeUtils.cjs.map +0 -1
- package/dist/development/src/model/utils/typeUtils.js.map +0 -1
- package/dist/production/src/model/utils/password.cjs +0 -12
- package/dist/production/src/model/utils/password.cjs.map +0 -1
- package/dist/production/src/model/utils/password.js +0 -12
- package/dist/production/src/model/utils/password.js.map +0 -1
- package/dist/production/src/model/utils/tokenUtils.cjs.map +0 -1
- package/dist/production/src/model/utils/tokenUtils.js.map +0 -1
- package/dist/production/src/model/utils/typeUtils.cjs.map +0 -1
- package/dist/production/src/model/utils/typeUtils.js.map +0 -1
- package/dist/types/model/utils/password.d.ts +0 -4
- package/dist/types/model/utils/password.d.ts.map +0 -1
- package/dist/types/model/utils/tokenUtils.d.ts.map +0 -1
- package/dist/types/model/utils/typeUtils.d.ts.map +0 -1
- package/src/model/utils/password.ts +0 -8
- /package/src/model/utils/{typeUtils.ts → hex.ts} +0 -0
package/graphql.codegen.yml
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
schema:
|
|
2
2
|
- "./src/schema/tenant.graphql.ts"
|
|
3
3
|
documents: []
|
|
4
|
-
config:
|
|
5
|
-
immutableTypes: "1"
|
|
6
4
|
generates:
|
|
7
5
|
./src/schema/index.ts:
|
|
8
6
|
config:
|
|
7
|
+
scalars:
|
|
8
|
+
DateTime: Date
|
|
9
|
+
Json: unknown
|
|
10
|
+
Interval:
|
|
11
|
+
input: './types#Interval'
|
|
12
|
+
output: './types#OutputInterval'
|
|
9
13
|
immutableTypes: true
|
|
10
14
|
enumsAsTypes: true
|
|
11
15
|
plugins:
|
|
@@ -14,4 +18,4 @@ generates:
|
|
|
14
18
|
- "typescript-resolvers"
|
|
15
19
|
hooks:
|
|
16
20
|
afterAllFileWrite:
|
|
17
|
-
-
|
|
21
|
+
- bun run eslint --fix
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/engine-tenant-api",
|
|
3
|
-
"version": "2.1.0-alpha.
|
|
3
|
+
"version": "2.1.0-alpha.17",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./dist/production/index.js",
|
|
6
6
|
"typings": "./dist/types/index.d.ts",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"jose": "^5.8.0",
|
|
42
42
|
"mustache": "^4.2.0",
|
|
43
43
|
"nodemailer": "^6.9.15",
|
|
44
|
+
"postgres-interval": "^2.1.0",
|
|
44
45
|
"openid-client": "^5.7.0",
|
|
45
46
|
"otpauth": "^9.3.4"
|
|
46
47
|
},
|
package/src/TenantContainer.ts
CHANGED
|
@@ -85,6 +85,8 @@ import { ConfigurationQueryResolver } from './resolvers/query/ConfigurationQuery
|
|
|
85
85
|
import { PasswordlessMutationResolver } from './resolvers/mutation/person/PasswordlessMutationResolver'
|
|
86
86
|
import { PasswordlessSignInManager } from './model/service/PasswordlessSignInManager'
|
|
87
87
|
import { TogglePasswordlessMutationResolver } from './resolvers/mutation/person/TogglePasswordlessMutationResolver'
|
|
88
|
+
import { PasswordStrengthValidator } from './model/service/PasswordStrengthValidator'
|
|
89
|
+
import { AuthLogService } from './model/service/AuthLogService'
|
|
88
90
|
|
|
89
91
|
export interface TenantContainer {
|
|
90
92
|
projectMemberManager: ProjectMemberManager
|
|
@@ -160,10 +162,12 @@ export class TenantContainerFactory {
|
|
|
160
162
|
new ApiKeyManager(apiKeyService))
|
|
161
163
|
.addService('emailValidator', () =>
|
|
162
164
|
new EmailValidator())
|
|
163
|
-
.addService('
|
|
164
|
-
new
|
|
165
|
-
.addService('
|
|
166
|
-
new
|
|
165
|
+
.addService('passwordStrengthValidator', () =>
|
|
166
|
+
new PasswordStrengthValidator())
|
|
167
|
+
.addService('signUpManager', ({ emailValidator, passwordStrengthValidator }) =>
|
|
168
|
+
new SignUpManager(emailValidator, passwordStrengthValidator))
|
|
169
|
+
.addService('passwordChangeManager', ({ providers, passwordStrengthValidator }) =>
|
|
170
|
+
new PasswordChangeManager(providers, passwordStrengthValidator))
|
|
167
171
|
.addService('projectMemberManager', () =>
|
|
168
172
|
new ProjectMemberManager())
|
|
169
173
|
.addService('identityFactory', ({ projectMemberManager }) =>
|
|
@@ -180,8 +184,8 @@ export class TenantContainerFactory {
|
|
|
180
184
|
new PersonAccessManager(apiKeyManager))
|
|
181
185
|
.addService('personManager', ({ emailValidator }) =>
|
|
182
186
|
new PersonManager(emailValidator))
|
|
183
|
-
.addService('passwordResetManager', ({ userMailer, projectManager }) =>
|
|
184
|
-
new PasswordResetManager(userMailer, projectManager))
|
|
187
|
+
.addService('passwordResetManager', ({ userMailer, projectManager, passwordStrengthValidator }) =>
|
|
188
|
+
new PasswordResetManager(userMailer, projectManager, passwordStrengthValidator))
|
|
185
189
|
.addService('idpRegistry', () => {
|
|
186
190
|
const idpRegistry = new IDPHandlerRegistry()
|
|
187
191
|
idpRegistry.registerHandler('oidc', new OIDCProvider())
|
|
@@ -209,8 +213,8 @@ export class TenantContainerFactory {
|
|
|
209
213
|
new RolesManager())
|
|
210
214
|
.addService('configurationManager', () =>
|
|
211
215
|
new ConfigurationManager())
|
|
212
|
-
.addService('passwordlessSignInManager', ({ apiKeyManager,
|
|
213
|
-
new PasswordlessSignInManager(apiKeyManager,
|
|
216
|
+
.addService('passwordlessSignInManager', ({ apiKeyManager, userMailer, projectManager, otpAuthenticator }) =>
|
|
217
|
+
new PasswordlessSignInManager(apiKeyManager, userMailer, projectManager, otpAuthenticator))
|
|
214
218
|
|
|
215
219
|
.addService('identityTypeResolver', ({ projectMemberManager, projectManager, permissionContextFactory }) =>
|
|
216
220
|
new IdentityTypeResolver(projectMemberManager, projectManager, permissionContextFactory))
|
|
@@ -286,8 +290,10 @@ export class TenantContainerFactory {
|
|
|
286
290
|
new PasswordlessMutationResolver(passwordlessSignInManager, signInResponseFactory))
|
|
287
291
|
.addService('togglePasswordlessMutationResolver', ({ configurationManager, personManager }) =>
|
|
288
292
|
new TogglePasswordlessMutationResolver(configurationManager, personManager))
|
|
289
|
-
.addService('
|
|
290
|
-
new
|
|
293
|
+
.addService('authLogService', () =>
|
|
294
|
+
new AuthLogService())
|
|
295
|
+
.addService('resolverContextFactory', ({ permissionContextFactory, authLogService }) =>
|
|
296
|
+
new TenantResolverContextFactory(permissionContextFactory, authLogService))
|
|
291
297
|
.addService('resolvers', container =>
|
|
292
298
|
new ResolverFactory(container).create())
|
|
293
299
|
.addService('connection', () =>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
|
+
|
|
3
|
+
const sql = `
|
|
4
|
+
ALTER TABLE "config"
|
|
5
|
+
ADD COLUMN "password_min_length" INTEGER NOT NULL DEFAULT 8,
|
|
6
|
+
ADD COLUMN "password_require_uppercase" INTEGER NOT NULL DEFAULT 1,
|
|
7
|
+
ADD COLUMN "password_require_lowercase" INTEGER NOT NULL DEFAULT 1,
|
|
8
|
+
ADD COLUMN "password_require_digit" INTEGER NOT NULL DEFAULT 1,
|
|
9
|
+
ADD COLUMN "password_require_special" INTEGER NOT NULL DEFAULT 0,
|
|
10
|
+
ADD COLUMN "password_pattern" TEXT DEFAULT NULL,
|
|
11
|
+
ADD COLUMN "password_check_blacklist" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
12
|
+
ADD COLUMN "login_base_backoff" INTERVAL NOT NULL DEFAULT '1 second',
|
|
13
|
+
ADD COLUMN "login_max_backoff" INTERVAL NOT NULL DEFAULT '60 second',
|
|
14
|
+
ADD COLUMN "login_attempt_window" INTERVAL NOT NULL DEFAULT '5 minute',
|
|
15
|
+
ADD COLUMN "login_reveal_user_exits" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
16
|
+
ADD COLUMN "login_default_token_expiration" INTERVAL NOT NULL DEFAULT '30 minute',
|
|
17
|
+
ADD COLUMN "login_max_token_expiration" INTERVAL DEFAULT '6 month';
|
|
18
|
+
ALTER TABLE "config"
|
|
19
|
+
RENAME passwordless_expiration_minutes TO passwordless_expiration;
|
|
20
|
+
|
|
21
|
+
ALTER TABLE "config"
|
|
22
|
+
ALTER COLUMN passwordless_expiration DROP DEFAULT,
|
|
23
|
+
ALTER COLUMN passwordless_expiration TYPE INTERVAL USING passwordless_expiration * INTERVAL '1 minute',
|
|
24
|
+
ALTER COLUMN passwordless_expiration SET DEFAULT INTERVAL '5 minute';
|
|
25
|
+
|
|
26
|
+
-- revert defaults for existing projects
|
|
27
|
+
UPDATE "config"
|
|
28
|
+
SET password_min_length = 6,
|
|
29
|
+
password_require_uppercase = 0,
|
|
30
|
+
password_require_lowercase = 0,
|
|
31
|
+
password_require_digit = 0,
|
|
32
|
+
password_check_blacklist = FALSE,
|
|
33
|
+
login_max_token_expiration = NULL;
|
|
34
|
+
|
|
35
|
+
`
|
|
36
|
+
|
|
37
|
+
export default async function (builder: MigrationBuilder) {
|
|
38
|
+
builder.sql(sql)
|
|
39
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
|
+
|
|
3
|
+
const sql = `
|
|
4
|
+
CREATE TYPE auth_log_type AS ENUM (
|
|
5
|
+
'login',
|
|
6
|
+
'create_session_token',
|
|
7
|
+
'idp_login',
|
|
8
|
+
'password_reset_init',
|
|
9
|
+
'password_reset',
|
|
10
|
+
'password_change',
|
|
11
|
+
'email_change',
|
|
12
|
+
'2fa_disable',
|
|
13
|
+
'2fa_enable',
|
|
14
|
+
'passwordless_login_init',
|
|
15
|
+
'passwordless_login_exchange',
|
|
16
|
+
'passwordless_login',
|
|
17
|
+
'person_disable'
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
CREATE TABLE person_auth_log (
|
|
21
|
+
id UUID PRIMARY KEY,
|
|
22
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
23
|
+
invoked_by_id UUID REFERENCES identity(id) ON DELETE SET NULL,
|
|
24
|
+
person_id UUID REFERENCES person(id) ON DELETE SET NULL,
|
|
25
|
+
person_token_id UUID REFERENCES person_token(id) ON DELETE SET NULL,
|
|
26
|
+
person_input_identifier TEXT DEFAULT NULL,
|
|
27
|
+
type auth_log_type NOT NULL,
|
|
28
|
+
success BOOLEAN NOT NULL,
|
|
29
|
+
error_code TEXT,
|
|
30
|
+
error_message TEXT,
|
|
31
|
+
ip_address INET,
|
|
32
|
+
user_agent TEXT,
|
|
33
|
+
identity_provider_id UUID REFERENCES identity_provider(id) ON DELETE SET NULL,
|
|
34
|
+
metadata JSONB
|
|
35
|
+
);
|
|
36
|
+
CREATE INDEX ON person_auth_log (person_input_identifier, created_at DESC)
|
|
37
|
+
WHERE type = 'login' AND success = FALSE;
|
|
38
|
+
|
|
39
|
+
CREATE INDEX ON person_auth_log (person_id, created_at DESC);
|
|
40
|
+
|
|
41
|
+
`
|
|
42
|
+
|
|
43
|
+
export default async function (builder: MigrationBuilder) {
|
|
44
|
+
builder.sql(sql)
|
|
45
|
+
}
|
package/src/migrations/runner.ts
CHANGED
|
@@ -38,7 +38,8 @@ import _20230603104000persondisabled from './2023-06-03-104000-person-disabled'
|
|
|
38
38
|
import _20230901165000idpreturnconfig from './2023-09-01-165000-idp-return-config'
|
|
39
39
|
import _20240620140000mailreply from './2024-06-20-140000-mail-reply'
|
|
40
40
|
import _20240826120000passwordless from './2024-08-26-120000-passwordless'
|
|
41
|
-
|
|
41
|
+
import _20250416180000configup from './2025-04-16-180000-config-up'
|
|
42
|
+
import _20250417160000authlog from './2025-04-17-160000-auth-log'
|
|
42
43
|
import snapshot from './snapshot'
|
|
43
44
|
import { computeTokenHash, Providers } from '../model'
|
|
44
45
|
import { Logger } from '@contember/logger'
|
|
@@ -89,6 +90,8 @@ const migrations = {
|
|
|
89
90
|
'2023-09-01-165000-idp-return-config': _20230901165000idpreturnconfig,
|
|
90
91
|
'2024-06-20-140000-mail-reply': _20240620140000mailreply,
|
|
91
92
|
'2024-08-26-120000-passwordless': _20240826120000passwordless,
|
|
93
|
+
'2025-04-16-180000-config-up': _20250416180000configup,
|
|
94
|
+
'2025-04-17-160000-auth-log': _20250417160000authlog,
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
export class TenantMigrationsRunner {
|
|
@@ -4,6 +4,21 @@ import { createCredentials } from './tenantCredentials'
|
|
|
4
4
|
|
|
5
5
|
export default async function (builder: MigrationBuilder, args: TenantMigrationArgs) {
|
|
6
6
|
builder.sql(`
|
|
7
|
+
CREATE TYPE "auth_log_type" AS ENUM (
|
|
8
|
+
'login',
|
|
9
|
+
'create_session_token',
|
|
10
|
+
'idp_login',
|
|
11
|
+
'password_reset_init',
|
|
12
|
+
'password_reset',
|
|
13
|
+
'password_change',
|
|
14
|
+
'email_change',
|
|
15
|
+
'2fa_disable',
|
|
16
|
+
'2fa_enable',
|
|
17
|
+
'passwordless_login_init',
|
|
18
|
+
'passwordless_login_exchange',
|
|
19
|
+
'passwordless_login',
|
|
20
|
+
'person_disable'
|
|
21
|
+
);
|
|
7
22
|
CREATE TYPE "config_policy" AS ENUM (
|
|
8
23
|
'always',
|
|
9
24
|
'never',
|
|
@@ -57,7 +72,20 @@ CREATE TABLE "config" (
|
|
|
57
72
|
"id" "config_singleton" DEFAULT 'singleton'::"config_singleton" NOT NULL,
|
|
58
73
|
"passwordless_enabled" "config_policy" DEFAULT 'never'::"config_policy" NOT NULL,
|
|
59
74
|
"passwordless_url" "text",
|
|
60
|
-
"
|
|
75
|
+
"passwordless_expiration" interval DEFAULT '00:05:00'::interval NOT NULL,
|
|
76
|
+
"password_min_length" integer DEFAULT 8 NOT NULL,
|
|
77
|
+
"password_require_uppercase" integer DEFAULT 1 NOT NULL,
|
|
78
|
+
"password_require_lowercase" integer DEFAULT 1 NOT NULL,
|
|
79
|
+
"password_require_digit" integer DEFAULT 1 NOT NULL,
|
|
80
|
+
"password_require_special" integer DEFAULT 0 NOT NULL,
|
|
81
|
+
"password_pattern" "text",
|
|
82
|
+
"password_check_blacklist" boolean DEFAULT true NOT NULL,
|
|
83
|
+
"login_base_backoff" interval DEFAULT '00:00:01'::interval NOT NULL,
|
|
84
|
+
"login_max_backoff" interval DEFAULT '00:01:00'::interval NOT NULL,
|
|
85
|
+
"login_attempt_window" interval DEFAULT '00:05:00'::interval NOT NULL,
|
|
86
|
+
"login_reveal_user_exits" boolean DEFAULT true NOT NULL,
|
|
87
|
+
"login_default_token_expiration" interval DEFAULT '00:30:00'::interval NOT NULL,
|
|
88
|
+
"login_max_token_expiration" interval DEFAULT '6 mons'::interval
|
|
61
89
|
);
|
|
62
90
|
CREATE TABLE "identity" (
|
|
63
91
|
"id" "uuid" NOT NULL,
|
|
@@ -99,6 +127,22 @@ CREATE TABLE "person" (
|
|
|
99
127
|
"passwordless_enabled" boolean,
|
|
100
128
|
CONSTRAINT "idp_only_no_email" CHECK ((("idp_only" = false) OR (("idp_only" = true) AND ("email" IS NULL))))
|
|
101
129
|
);
|
|
130
|
+
CREATE TABLE "person_auth_log" (
|
|
131
|
+
"id" "uuid" NOT NULL,
|
|
132
|
+
"created_at" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
133
|
+
"invoked_by_id" "uuid",
|
|
134
|
+
"person_id" "uuid",
|
|
135
|
+
"person_token_id" "uuid",
|
|
136
|
+
"person_input_identifier" "text",
|
|
137
|
+
"type" "auth_log_type" NOT NULL,
|
|
138
|
+
"success" boolean NOT NULL,
|
|
139
|
+
"error_code" "text",
|
|
140
|
+
"error_message" "text",
|
|
141
|
+
"ip_address" "inet",
|
|
142
|
+
"user_agent" "text",
|
|
143
|
+
"identity_provider_id" "uuid",
|
|
144
|
+
"metadata" "jsonb"
|
|
145
|
+
);
|
|
102
146
|
CREATE TABLE "person_identity_provider" (
|
|
103
147
|
"id" "uuid" NOT NULL,
|
|
104
148
|
"person_id" "uuid" NOT NULL,
|
|
@@ -159,6 +203,8 @@ ALTER TABLE ONLY "identity_provider"
|
|
|
159
203
|
ADD CONSTRAINT "identity_provider_slug_key" UNIQUE ("slug");
|
|
160
204
|
ALTER TABLE ONLY "mail_template"
|
|
161
205
|
ADD CONSTRAINT "mail_template_pkey" PRIMARY KEY ("id");
|
|
206
|
+
ALTER TABLE ONLY "person_auth_log"
|
|
207
|
+
ADD CONSTRAINT "person_auth_log_pkey" PRIMARY KEY ("id");
|
|
162
208
|
ALTER TABLE ONLY "person"
|
|
163
209
|
ADD CONSTRAINT "person_id" PRIMARY KEY ("id");
|
|
164
210
|
ALTER TABLE ONLY "person"
|
|
@@ -183,6 +229,7 @@ CREATE INDEX "identity_parent_id" ON "identity" USING "btree" ("parent_id");
|
|
|
183
229
|
CREATE UNIQUE INDEX "mail_template_identifier" ON "mail_template" USING "btree" ("project_id", "mail_type", "variant") WHERE ("project_id" IS NOT NULL);
|
|
184
230
|
CREATE UNIQUE INDEX "mail_template_identifier_global" ON "mail_template" USING "btree" ("mail_type", "variant") WHERE ("project_id" IS NULL);
|
|
185
231
|
CREATE INDEX "mail_template_project_index" ON "mail_template" USING "btree" ("project_id");
|
|
232
|
+
CREATE INDEX "person_auth_log_person_input_identifier_created_at_idx" ON "person_auth_log" USING "btree" ("person_input_identifier", "created_at" DESC);
|
|
186
233
|
CREATE INDEX "person_identity_id" ON "person" USING "btree" ("identity_id");
|
|
187
234
|
CREATE UNIQUE INDEX "person_identity_provider_identifier" ON "person_identity_provider" USING "btree" ("identity_provider_id", "external_identifier");
|
|
188
235
|
CREATE INDEX "person_identity_provider_person_id" ON "person_identity_provider" USING "btree" ("person_id");
|
|
@@ -202,6 +249,14 @@ ALTER TABLE ONLY "identity"
|
|
|
202
249
|
ADD CONSTRAINT "identity_parent_id_fkey" FOREIGN KEY ("parent_id") REFERENCES "identity"("id");
|
|
203
250
|
ALTER TABLE ONLY "mail_template"
|
|
204
251
|
ADD CONSTRAINT "mail_template_project" FOREIGN KEY ("project_id") REFERENCES "project"("id") ON DELETE CASCADE;
|
|
252
|
+
ALTER TABLE ONLY "person_auth_log"
|
|
253
|
+
ADD CONSTRAINT "person_auth_log_identity_provider_id_fkey" FOREIGN KEY ("identity_provider_id") REFERENCES "identity_provider"("id") ON DELETE SET NULL;
|
|
254
|
+
ALTER TABLE ONLY "person_auth_log"
|
|
255
|
+
ADD CONSTRAINT "person_auth_log_invoked_by_id_fkey" FOREIGN KEY ("invoked_by_id") REFERENCES "identity"("id") ON DELETE SET NULL;
|
|
256
|
+
ALTER TABLE ONLY "person_auth_log"
|
|
257
|
+
ADD CONSTRAINT "person_auth_log_person_id_fkey" FOREIGN KEY ("person_id") REFERENCES "person"("id") ON DELETE SET NULL;
|
|
258
|
+
ALTER TABLE ONLY "person_auth_log"
|
|
259
|
+
ADD CONSTRAINT "person_auth_log_person_token_id_fkey" FOREIGN KEY ("person_token_id") REFERENCES "person_token"("id") ON DELETE SET NULL;
|
|
205
260
|
ALTER TABLE ONLY "person"
|
|
206
261
|
ADD CONSTRAINT "person_identity_id_fkey" FOREIGN KEY ("identity_id") REFERENCES "identity"("id");
|
|
207
262
|
ALTER TABLE ONLY "person_identity_provider"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Command } from '../Command'
|
|
2
|
+
import { AuthActionType } from '../../type/AuthLog'
|
|
3
|
+
import { InsertBuilder } from '@contember/database'
|
|
4
|
+
import { JSONValue } from '@contember/schema'
|
|
5
|
+
|
|
6
|
+
export class CreateAuthLogEntryCommand implements Command<void> {
|
|
7
|
+
constructor(
|
|
8
|
+
private readonly data: CreateAuthLogEntryCommand.Entry,
|
|
9
|
+
) {
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
async execute({ db, providers }: Command.Args): Promise<void> {
|
|
14
|
+
await InsertBuilder.create()
|
|
15
|
+
.into('person_auth_log')
|
|
16
|
+
.values({
|
|
17
|
+
id: providers.uuid(),
|
|
18
|
+
invoked_by_id: this.data.invokedById,
|
|
19
|
+
person_id: this.data.personId,
|
|
20
|
+
person_input_identifier: this.data.personInputIdentifier,
|
|
21
|
+
person_token_id: this.data.personTokenId,
|
|
22
|
+
type: this.data.type,
|
|
23
|
+
success: this.data.success,
|
|
24
|
+
error_code: this.data.errorCode,
|
|
25
|
+
error_message: this.data.errorMessage,
|
|
26
|
+
ip_address: this.data.ipAddress,
|
|
27
|
+
user_agent: this.data.userAgent,
|
|
28
|
+
identity_provider_id: this.data.identityProviderId,
|
|
29
|
+
metadata: this.data.metadata ?? {},
|
|
30
|
+
})
|
|
31
|
+
.execute(db)
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
namespace CreateAuthLogEntryCommand {
|
|
37
|
+
export type Entry = {
|
|
38
|
+
type: AuthActionType
|
|
39
|
+
invokedById: string
|
|
40
|
+
personInputIdentifier?: string
|
|
41
|
+
personId?: string
|
|
42
|
+
personTokenId?: string
|
|
43
|
+
success: boolean
|
|
44
|
+
errorCode?: string
|
|
45
|
+
errorMessage?: string
|
|
46
|
+
ipAddress?: string
|
|
47
|
+
userAgent?: string
|
|
48
|
+
identityProviderId?: string
|
|
49
|
+
metadata?: JSONValue
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Command } from '../Command'
|
|
2
2
|
import { ConfigInput } from '../../../schema'
|
|
3
3
|
import { UpdateBuilder } from '@contember/database'
|
|
4
|
+
import { ConfigRow } from '../../type/Config'
|
|
5
|
+
import { IPostgresInterval } from 'postgres-interval'
|
|
4
6
|
|
|
5
7
|
export class UpdateConfigurationCommand implements Command<void> {
|
|
6
8
|
constructor(
|
|
@@ -9,13 +11,29 @@ export class UpdateConfigurationCommand implements Command<void> {
|
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
async execute({ db }: Command.Args): Promise<void> {
|
|
14
|
+
|
|
12
15
|
const result = await UpdateBuilder.create()
|
|
13
16
|
.table('config')
|
|
14
17
|
.where({ id: 'singleton' })
|
|
15
18
|
.values({
|
|
16
|
-
passwordless_enabled: this.configuration.passwordless?.enabled,
|
|
19
|
+
passwordless_enabled: this.configuration.passwordless?.enabled ?? undefined,
|
|
17
20
|
passwordless_url: this.configuration.passwordless?.url,
|
|
18
|
-
|
|
21
|
+
passwordless_expiration: this.configuration.passwordless?.expiration ?? undefined,
|
|
22
|
+
password_min_length: this.configuration.password?.minLength ?? undefined,
|
|
23
|
+
password_require_uppercase: this.configuration.password?.requireUppercase ?? undefined,
|
|
24
|
+
password_require_lowercase: this.configuration.password?.requireLowercase ?? undefined,
|
|
25
|
+
password_require_digit: this.configuration.password?.requireDigit ?? undefined,
|
|
26
|
+
password_require_special: this.configuration.password?.requireSpecial ?? undefined,
|
|
27
|
+
password_pattern: this.configuration.password?.pattern,
|
|
28
|
+
password_check_blacklist: this.configuration.password?.checkBlacklist ?? undefined,
|
|
29
|
+
login_base_backoff: this.configuration.login?.baseBackoff ?? undefined,
|
|
30
|
+
login_max_backoff: this.configuration.login?.maxBackoff ?? undefined,
|
|
31
|
+
login_attempt_window: this.configuration.login?.attemptWindow ?? undefined,
|
|
32
|
+
login_reveal_user_exits: this.configuration.login?.revealUserExists ?? undefined,
|
|
33
|
+
login_default_token_expiration: this.configuration.login?.defaultTokenExpiration ?? undefined,
|
|
34
|
+
login_max_token_expiration: this.configuration.login?.maxTokenExpiration,
|
|
35
|
+
} satisfies {
|
|
36
|
+
[K in keyof ConfigRow]: (IPostgresInterval extends ConfigRow[K] ? string : never) | Exclude<ConfigRow[K], IPostgresInterval> | undefined
|
|
19
37
|
})
|
|
20
38
|
.execute(db)
|
|
21
39
|
if (!result) {
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { DatabaseQuery, DatabaseQueryable, Literal, SelectBuilder } from '@contember/database'
|
|
2
|
+
|
|
3
|
+
export class NextLoginAttemptQuery extends DatabaseQuery<Date> {
|
|
4
|
+
|
|
5
|
+
constructor(
|
|
6
|
+
private readonly email: string,
|
|
7
|
+
) {
|
|
8
|
+
super()
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
async fetch({ db }: DatabaseQueryable): Promise<Date> {
|
|
12
|
+
const qb = SelectBuilder.create()
|
|
13
|
+
.with('cfg', it => it.from('config'))
|
|
14
|
+
.with('last_successful_reset', it => it
|
|
15
|
+
.select(new Literal('MAX(person_auth_log.created_at)'), 'created_at')
|
|
16
|
+
.from('person_auth_log')
|
|
17
|
+
.join('person', 'person', it => it.columnsEq(['person', 'id'], ['person_auth_log', 'person_id']))
|
|
18
|
+
.where({
|
|
19
|
+
type: 'password_reset',
|
|
20
|
+
success: true,
|
|
21
|
+
email: this.email,
|
|
22
|
+
}),
|
|
23
|
+
)
|
|
24
|
+
.with('window_start', it => it
|
|
25
|
+
.select(new Literal(`
|
|
26
|
+
GREATEST(
|
|
27
|
+
COALESCE(last_successful_reset.created_at, NOW() - cfg.login_attempt_window),
|
|
28
|
+
NOW() - cfg.login_attempt_window
|
|
29
|
+
)`), 'start_time')
|
|
30
|
+
.from('cfg')
|
|
31
|
+
.from('last_successful_reset'),
|
|
32
|
+
)
|
|
33
|
+
.with('failed_logins', it => it
|
|
34
|
+
.select(new Literal('COUNT(*)'), 'fails')
|
|
35
|
+
.select(new Literal('MAX(person_auth_log.created_at)'), 'last_fail')
|
|
36
|
+
.from('person_auth_log')
|
|
37
|
+
.from('window_start')
|
|
38
|
+
.where({
|
|
39
|
+
person_input_identifier: this.email,
|
|
40
|
+
type: 'login',
|
|
41
|
+
success: false,
|
|
42
|
+
})
|
|
43
|
+
.where(new Literal('person_auth_log.created_at >= window_start.start_time')),
|
|
44
|
+
)
|
|
45
|
+
.select(new Literal(`
|
|
46
|
+
CASE WHEN failed_logins.fails = 0
|
|
47
|
+
THEN NOW()
|
|
48
|
+
ELSE LEAST(
|
|
49
|
+
failed_logins.last_fail + cfg.login_max_backoff,
|
|
50
|
+
failed_logins.last_fail + cfg.login_base_backoff * (POWER(2, failed_logins.fails - 1))
|
|
51
|
+
) END`), 'next_allowed_login')
|
|
52
|
+
.from('failed_logins')
|
|
53
|
+
.from('cfg')
|
|
54
|
+
|
|
55
|
+
const result = await qb.getResult(db)
|
|
56
|
+
if (result.length === 0) {
|
|
57
|
+
return new Date()
|
|
58
|
+
}
|
|
59
|
+
return result[0].next_allowed_login
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DatabaseQuery, DatabaseQueryable, Literal, SelectBuilder } from '@contember/database'
|
|
2
|
-
import { Config,
|
|
2
|
+
import { Config, ConfigRow } from '../../type/Config'
|
|
3
3
|
|
|
4
4
|
export class ConfigurationQuery extends DatabaseQuery<Config> {
|
|
5
5
|
|
|
6
6
|
async fetch({ db }: DatabaseQueryable): Promise<Config> {
|
|
7
|
-
const rows = await SelectBuilder.create<
|
|
7
|
+
const rows = await SelectBuilder.create<ConfigRow>()
|
|
8
8
|
.from('config')
|
|
9
9
|
.select(new Literal('*'))
|
|
10
10
|
.getResult(db)
|
|
@@ -17,14 +17,26 @@ export class ConfigurationQuery extends DatabaseQuery<Config> {
|
|
|
17
17
|
passwordless: {
|
|
18
18
|
enabled: result.passwordless_enabled,
|
|
19
19
|
url: result.passwordless_url,
|
|
20
|
-
|
|
20
|
+
expiration: result.passwordless_expiration,
|
|
21
|
+
},
|
|
22
|
+
password: {
|
|
23
|
+
minLength: result.password_min_length,
|
|
24
|
+
requireUppercase: result.password_require_uppercase,
|
|
25
|
+
requireLowercase: result.password_require_lowercase,
|
|
26
|
+
requireDigit: result.password_require_digit,
|
|
27
|
+
requireSpecial: result.password_require_special,
|
|
28
|
+
pattern: result.password_pattern,
|
|
29
|
+
checkBlacklist: result.password_check_blacklist,
|
|
30
|
+
},
|
|
31
|
+
login: {
|
|
32
|
+
baseBackoff: result.login_base_backoff,
|
|
33
|
+
maxBackoff: result.login_max_backoff,
|
|
34
|
+
attemptWindow: result.login_attempt_window,
|
|
35
|
+
revealUserExists: result.login_reveal_user_exits,
|
|
36
|
+
defaultTokenExpiration: result.login_default_token_expiration,
|
|
37
|
+
maxTokenExpiration: result.login_max_token_expiration,
|
|
21
38
|
},
|
|
22
39
|
}
|
|
23
40
|
}
|
|
24
41
|
}
|
|
25
42
|
|
|
26
|
-
interface ConfigurationRow {
|
|
27
|
-
passwordless_enabled: ConfigPolicy
|
|
28
|
-
passwordless_url: string | null
|
|
29
|
-
passwordless_expiration_minutes: number
|
|
30
|
-
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { DatabaseContext } from '../utils'
|
|
2
|
+
import { CreateAuthLogEntryCommand } from '../commands/authLog/CreateAuthLogEntryCommand'
|
|
3
|
+
import { Response } from '../utils/Response'
|
|
4
|
+
import { AuthActionType } from '../type/AuthLog'
|
|
5
|
+
|
|
6
|
+
class AuthLogService {
|
|
7
|
+
async logAuthAction(
|
|
8
|
+
db: DatabaseContext,
|
|
9
|
+
ctx: { identityId: string; clientIp?: string; userAgent?: string },
|
|
10
|
+
data: AuthLogService.LogArgs,
|
|
11
|
+
): Promise<void> {
|
|
12
|
+
const dataContainer = data.response.ok
|
|
13
|
+
? data.response.result ?? {}
|
|
14
|
+
: data.response.metadata ?? {}
|
|
15
|
+
const authData = typeof dataContainer === 'object' && dataContainer !== null && AuthLogService.Key in dataContainer
|
|
16
|
+
? dataContainer[AuthLogService.Key] as AuthLogService.Bag
|
|
17
|
+
: undefined
|
|
18
|
+
|
|
19
|
+
await db.commandBus.execute(new CreateAuthLogEntryCommand({
|
|
20
|
+
success: data.response.ok,
|
|
21
|
+
personInputIdentifier: data.personInput ?? authData?.data?.personInput,
|
|
22
|
+
personId: data.personId ?? authData?.data?.personId,
|
|
23
|
+
invokedById: ctx.identityId,
|
|
24
|
+
type: data.type,
|
|
25
|
+
identityProviderId: data.identityProviderId ?? authData?.data?.identityProviderId,
|
|
26
|
+
errorCode: data.response.ok ? null : data.response.error,
|
|
27
|
+
personTokenId: data.tokenId ?? authData?.data?.tokenId,
|
|
28
|
+
errorMessage: data.response.ok ? undefined : data.response.errorMessage,
|
|
29
|
+
ipAddress: ctx.clientIp,
|
|
30
|
+
userAgent: ctx.userAgent,
|
|
31
|
+
metadata: {},
|
|
32
|
+
}))
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
namespace AuthLogService {
|
|
37
|
+
export const Key = Symbol('AuthLogData')
|
|
38
|
+
type Data = {
|
|
39
|
+
personId?: string
|
|
40
|
+
personInput?: string // e.g. email
|
|
41
|
+
tokenId?: string
|
|
42
|
+
identityProviderId?: string
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type LogArgs = {
|
|
46
|
+
response: Response<
|
|
47
|
+
null | { [Key]?: Bag },
|
|
48
|
+
any,
|
|
49
|
+
{} | { [Key]?: Bag }
|
|
50
|
+
>
|
|
51
|
+
type: AuthActionType
|
|
52
|
+
} & Data
|
|
53
|
+
|
|
54
|
+
export class Bag {
|
|
55
|
+
constructor(
|
|
56
|
+
public readonly data: Data,
|
|
57
|
+
) {
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { AuthLogService }
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConfigInput, ConfigureErrorCode } from '../../schema'
|
|
2
2
|
import { Response, ResponseOk } from '../utils/Response'
|
|
3
3
|
import { DatabaseContext } from '../utils'
|
|
4
4
|
import { UpdateConfigurationCommand } from '../commands'
|
|
5
|
-
import { ConfigurationQuery } from '../queries'
|
|
6
5
|
|
|
7
6
|
export class ConfigurationManager {
|
|
8
7
|
constructor() {
|
|
@@ -15,8 +14,4 @@ export class ConfigurationManager {
|
|
|
15
14
|
|
|
16
15
|
return new ResponseOk(null)
|
|
17
16
|
}
|
|
18
|
-
|
|
19
|
-
public async fetchConfiguration(db: DatabaseContext): Promise<Config> {
|
|
20
|
-
return await db.queryHandler.fetch(new ConfigurationQuery())
|
|
21
|
-
}
|
|
22
17
|
}
|