@contember/engine-tenant-api 2.0.0-alpha.9 → 2.0.0-beta.2

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.
Files changed (1150) hide show
  1. package/dist/development/index.cjs +18 -6
  2. package/dist/development/index.cjs.map +1 -1
  3. package/dist/development/index.js +20 -8
  4. package/dist/development/index.js.map +1 -1
  5. package/dist/development/src/TenantContainer.cjs +7 -1
  6. package/dist/development/src/TenantContainer.cjs.map +1 -1
  7. package/dist/development/src/TenantContainer.js +7 -1
  8. package/dist/development/src/TenantContainer.js.map +1 -1
  9. package/dist/development/src/bridges/system/IdentityFetcher.cjs.map +1 -1
  10. package/dist/development/src/bridges/system/IdentityFetcher.js.map +1 -1
  11. package/dist/development/src/exceptions.cjs.map +1 -1
  12. package/dist/development/src/exceptions.js.map +1 -1
  13. package/dist/development/src/migrations/2024-08-26-120000-passwordless.cjs +31 -0
  14. package/dist/development/src/migrations/2024-08-26-120000-passwordless.cjs.map +1 -0
  15. package/dist/development/src/migrations/2024-08-26-120000-passwordless.js +32 -0
  16. package/dist/development/src/migrations/2024-08-26-120000-passwordless.js.map +1 -0
  17. package/dist/development/src/migrations/runner.cjs +3 -1
  18. package/dist/development/src/migrations/runner.cjs.map +1 -1
  19. package/dist/development/src/migrations/runner.js +3 -1
  20. package/dist/development/src/migrations/runner.js.map +1 -1
  21. package/dist/development/src/migrations/snapshot.cjs +33 -5
  22. package/dist/development/src/migrations/snapshot.cjs.map +1 -1
  23. package/dist/development/src/migrations/snapshot.js +33 -5
  24. package/dist/development/src/migrations/snapshot.js.map +1 -1
  25. package/dist/development/src/migrations/tenantCredentials.cjs.map +1 -1
  26. package/dist/development/src/migrations/tenantCredentials.js.map +1 -1
  27. package/dist/development/src/model/authorization/AclSchemaAccessNodeFactory.cjs.map +1 -1
  28. package/dist/development/src/model/authorization/AclSchemaAccessNodeFactory.js.map +1 -1
  29. package/dist/development/src/model/authorization/DirectPermissionsAccessNode.cjs.map +1 -1
  30. package/dist/development/src/model/authorization/DirectPermissionsAccessNode.js.map +1 -1
  31. package/dist/development/src/model/authorization/Identity.cjs.map +1 -1
  32. package/dist/development/src/model/authorization/Identity.js.map +1 -1
  33. package/dist/development/src/model/authorization/IdentityFactory.cjs.map +1 -1
  34. package/dist/development/src/model/authorization/IdentityFactory.js.map +1 -1
  35. package/dist/development/src/model/authorization/IdentityScope.cjs.map +1 -1
  36. package/dist/development/src/model/authorization/IdentityScope.js.map +1 -1
  37. package/dist/development/src/model/authorization/MembershipMatcher.cjs.map +1 -1
  38. package/dist/development/src/model/authorization/MembershipMatcher.js.map +1 -1
  39. package/dist/development/src/model/authorization/PermissionActions.cjs +5 -0
  40. package/dist/development/src/model/authorization/PermissionActions.cjs.map +1 -1
  41. package/dist/development/src/model/authorization/PermissionActions.js +5 -0
  42. package/dist/development/src/model/authorization/PermissionActions.js.map +1 -1
  43. package/dist/development/src/model/authorization/PermissionContext.cjs.map +1 -1
  44. package/dist/development/src/model/authorization/PermissionContext.js.map +1 -1
  45. package/dist/development/src/model/authorization/PermissionContextFactory.cjs.map +1 -1
  46. package/dist/development/src/model/authorization/PermissionContextFactory.js.map +1 -1
  47. package/dist/development/src/model/authorization/PermissionsFactory.cjs +5 -0
  48. package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  49. package/dist/development/src/model/authorization/PermissionsFactory.js +5 -0
  50. package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
  51. package/dist/development/src/model/authorization/ProjectScope.cjs.map +1 -1
  52. package/dist/development/src/model/authorization/ProjectScope.js.map +1 -1
  53. package/dist/development/src/model/authorization/ProjectScopeFactory.cjs.map +1 -1
  54. package/dist/development/src/model/authorization/ProjectScopeFactory.js.map +1 -1
  55. package/dist/development/src/model/commands/CommandBus.cjs.map +1 -1
  56. package/dist/development/src/model/commands/CommandBus.js.map +1 -1
  57. package/dist/development/src/model/commands/apiKey/ApiKeyHelper.cjs.map +1 -1
  58. package/dist/development/src/model/commands/apiKey/ApiKeyHelper.js.map +1 -1
  59. package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.cjs.map +1 -1
  60. package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.js.map +1 -1
  61. package/dist/development/src/model/commands/apiKey/DisableApiKeyCommand.cjs.map +1 -1
  62. package/dist/development/src/model/commands/apiKey/DisableApiKeyCommand.js.map +1 -1
  63. package/dist/development/src/model/commands/apiKey/DisableIdentityApiKeysCommand.cjs.map +1 -1
  64. package/dist/development/src/model/commands/apiKey/DisableIdentityApiKeysCommand.js.map +1 -1
  65. package/dist/development/src/model/commands/apiKey/DisableOneOffApiKeyCommand.cjs.map +1 -1
  66. package/dist/development/src/model/commands/apiKey/DisableOneOffApiKeyCommand.js.map +1 -1
  67. package/dist/development/src/model/commands/apiKey/ProlongApiKeyCommand.cjs.map +1 -1
  68. package/dist/development/src/model/commands/apiKey/ProlongApiKeyCommand.js.map +1 -1
  69. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs +20 -0
  70. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -0
  71. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js +20 -0
  72. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -0
  73. package/dist/development/src/model/commands/identity/CreateIdentityCommand.cjs.map +1 -1
  74. package/dist/development/src/model/commands/identity/CreateIdentityCommand.js.map +1 -1
  75. package/dist/development/src/model/commands/identity/PatchIdentityGlobalRoles.cjs.map +1 -1
  76. package/dist/development/src/model/commands/identity/PatchIdentityGlobalRoles.js.map +1 -1
  77. package/dist/development/src/model/commands/idp/CreateIdpCommand.cjs.map +1 -1
  78. package/dist/development/src/model/commands/idp/CreateIdpCommand.js.map +1 -1
  79. package/dist/development/src/model/commands/idp/DisableIdpCommand.cjs.map +1 -1
  80. package/dist/development/src/model/commands/idp/DisableIdpCommand.js.map +1 -1
  81. package/dist/development/src/model/commands/idp/EnableIdpCommand.cjs.map +1 -1
  82. package/dist/development/src/model/commands/idp/EnableIdpCommand.js.map +1 -1
  83. package/dist/development/src/model/commands/idp/UpdateIdpCommand.cjs.map +1 -1
  84. package/dist/development/src/model/commands/idp/UpdateIdpCommand.js.map +1 -1
  85. package/dist/development/src/model/commands/mailTemplate/AddMailTemplateCommand.cjs.map +1 -1
  86. package/dist/development/src/model/commands/mailTemplate/AddMailTemplateCommand.js.map +1 -1
  87. package/dist/development/src/model/commands/mailTemplate/RemoveMailTemplateCommand.cjs.map +1 -1
  88. package/dist/development/src/model/commands/mailTemplate/RemoveMailTemplateCommand.js.map +1 -1
  89. package/dist/development/src/model/commands/membership/AddProjectMemberCommand.cjs.map +1 -1
  90. package/dist/development/src/model/commands/membership/AddProjectMemberCommand.js.map +1 -1
  91. package/dist/development/src/model/commands/membership/CreateOrUpdateProjectMembershipCommand.cjs.map +1 -1
  92. package/dist/development/src/model/commands/membership/CreateOrUpdateProjectMembershipCommand.js.map +1 -1
  93. package/dist/development/src/model/commands/membership/RemoveProjectMemberCommand.cjs.map +1 -1
  94. package/dist/development/src/model/commands/membership/RemoveProjectMemberCommand.js.map +1 -1
  95. package/dist/development/src/model/commands/membership/RemoveProjectMembershipsCommand.cjs.map +1 -1
  96. package/dist/development/src/model/commands/membership/RemoveProjectMembershipsCommand.js.map +1 -1
  97. package/dist/development/src/model/commands/membership/UpdateProjectMemberCommand.cjs.map +1 -1
  98. package/dist/development/src/model/commands/membership/UpdateProjectMemberCommand.js.map +1 -1
  99. package/dist/development/src/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.cjs.map +1 -1
  100. package/dist/development/src/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.js.map +1 -1
  101. package/dist/development/src/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.cjs.map +1 -1
  102. package/dist/development/src/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.js.map +1 -1
  103. package/dist/development/src/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.cjs.map +1 -1
  104. package/dist/development/src/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.js.map +1 -1
  105. package/dist/development/src/model/commands/otp/ConfirmOtpCommand.cjs.map +1 -1
  106. package/dist/development/src/model/commands/otp/ConfirmOtpCommand.js.map +1 -1
  107. package/dist/development/src/model/commands/otp/DisableOtpCommand.cjs.map +1 -1
  108. package/dist/development/src/model/commands/otp/DisableOtpCommand.js.map +1 -1
  109. package/dist/development/src/model/commands/otp/PrepareOtpCommand.cjs.map +1 -1
  110. package/dist/development/src/model/commands/otp/PrepareOtpCommand.js.map +1 -1
  111. package/dist/development/src/model/commands/person/ChangePasswordCommand.cjs.map +1 -1
  112. package/dist/development/src/model/commands/person/ChangePasswordCommand.js.map +1 -1
  113. package/dist/development/src/model/commands/person/ChangeProfileCommand.cjs.map +1 -1
  114. package/dist/development/src/model/commands/person/ChangeProfileCommand.js.map +1 -1
  115. package/dist/development/src/model/commands/person/CreatePersonCommand.cjs +2 -1
  116. package/dist/development/src/model/commands/person/CreatePersonCommand.cjs.map +1 -1
  117. package/dist/development/src/model/commands/person/CreatePersonCommand.js +2 -1
  118. package/dist/development/src/model/commands/person/CreatePersonCommand.js.map +1 -1
  119. package/dist/development/src/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.cjs.map +1 -1
  120. package/dist/development/src/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.js.map +1 -1
  121. package/dist/development/src/model/commands/person/DisablePersonCommand.cjs.map +1 -1
  122. package/dist/development/src/model/commands/person/DisablePersonCommand.js.map +1 -1
  123. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.cjs +18 -0
  124. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.cjs.map +1 -0
  125. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.js +18 -0
  126. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.js.map +1 -0
  127. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.cjs +20 -0
  128. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.cjs.map +1 -0
  129. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.js +20 -0
  130. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.js.map +1 -0
  131. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.cjs +33 -0
  132. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.cjs.map +1 -0
  133. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.js +33 -0
  134. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.js.map +1 -0
  135. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs +19 -0
  136. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs.map +1 -0
  137. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.js +19 -0
  138. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.js.map +1 -0
  139. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.cjs +19 -0
  140. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.cjs.map +1 -0
  141. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.js +19 -0
  142. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.js.map +1 -0
  143. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs +28 -0
  144. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -0
  145. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.js +28 -0
  146. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.js.map +1 -0
  147. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.cjs +28 -0
  148. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.cjs.map +1 -0
  149. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.js +28 -0
  150. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.js.map +1 -0
  151. package/dist/development/src/model/commands/project/CreateProjectCommand.cjs.map +1 -1
  152. package/dist/development/src/model/commands/project/CreateProjectCommand.js.map +1 -1
  153. package/dist/development/src/model/commands/project/SetProjectSecretCommand.cjs.map +1 -1
  154. package/dist/development/src/model/commands/project/SetProjectSecretCommand.js.map +1 -1
  155. package/dist/development/src/model/commands/project/UpdateProjectCommand.cjs.map +1 -1
  156. package/dist/development/src/model/commands/project/UpdateProjectCommand.js.map +1 -1
  157. package/dist/development/src/model/consts/expirations.cjs +7 -0
  158. package/dist/development/src/model/consts/expirations.cjs.map +1 -0
  159. package/dist/development/src/model/consts/expirations.js +7 -0
  160. package/dist/development/src/model/consts/expirations.js.map +1 -0
  161. package/dist/development/src/model/dtos/Password.cjs.map +1 -1
  162. package/dist/development/src/model/dtos/Password.js.map +1 -1
  163. package/dist/development/src/model/mailing/UserMailer.cjs +10 -1
  164. package/dist/development/src/model/mailing/UserMailer.cjs.map +1 -1
  165. package/dist/development/src/model/mailing/UserMailer.js +10 -1
  166. package/dist/development/src/model/mailing/UserMailer.js.map +1 -1
  167. package/dist/development/src/model/mailing/templates/ExistingUserInvited.mustache.cjs.map +1 -1
  168. package/dist/development/src/model/mailing/templates/ExistingUserInvited.mustache.js.map +1 -1
  169. package/dist/development/src/model/mailing/templates/NewUserInvited.mustache.cjs.map +1 -1
  170. package/dist/development/src/model/mailing/templates/NewUserInvited.mustache.js.map +1 -1
  171. package/dist/development/src/model/mailing/templates/PasswordReset.mustache.cjs.map +1 -1
  172. package/dist/development/src/model/mailing/templates/PasswordReset.mustache.js.map +1 -1
  173. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs +17 -0
  174. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs.map +1 -0
  175. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.js +18 -0
  176. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.js.map +1 -0
  177. package/dist/development/src/model/mailing/type.cjs +9 -3
  178. package/dist/development/src/model/mailing/type.cjs.map +1 -1
  179. package/dist/development/src/model/mailing/type.js +9 -3
  180. package/dist/development/src/model/mailing/type.js.map +1 -1
  181. package/dist/development/src/model/queries/apiKey/ApiKeyQuery.cjs.map +1 -1
  182. package/dist/development/src/model/queries/apiKey/ApiKeyQuery.js.map +1 -1
  183. package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs +21 -0
  184. package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -0
  185. package/dist/development/src/model/queries/configuration/ConfigurationQuery.js +21 -0
  186. package/dist/development/src/model/queries/configuration/ConfigurationQuery.js.map +1 -0
  187. package/dist/development/src/model/queries/identity/IdentityQuery.cjs.map +1 -1
  188. package/dist/development/src/model/queries/identity/IdentityQuery.js.map +1 -1
  189. package/dist/development/src/model/queries/idp/IdentityProviderBySlugQuery.cjs.map +1 -1
  190. package/dist/development/src/model/queries/idp/IdentityProviderBySlugQuery.js.map +1 -1
  191. package/dist/development/src/model/queries/idp/IdentityProvidersQuery.cjs.map +1 -1
  192. package/dist/development/src/model/queries/idp/IdentityProvidersQuery.js.map +1 -1
  193. package/dist/development/src/model/queries/idp/helpers.cjs.map +1 -1
  194. package/dist/development/src/model/queries/idp/helpers.js.map +1 -1
  195. package/dist/development/src/model/queries/mailTemplate/MailTemplateListQuery.cjs.map +1 -1
  196. package/dist/development/src/model/queries/mailTemplate/MailTemplateListQuery.js.map +1 -1
  197. package/dist/development/src/model/queries/mailTemplate/MailTemplateQuery.cjs.map +1 -1
  198. package/dist/development/src/model/queries/mailTemplate/MailTemplateQuery.js.map +1 -1
  199. package/dist/development/src/model/queries/membership/ProjectMembersQuery.cjs.map +1 -1
  200. package/dist/development/src/model/queries/membership/ProjectMembersQuery.js.map +1 -1
  201. package/dist/development/src/model/queries/membership/ProjectMembershipByIdentityQuery.cjs.map +1 -1
  202. package/dist/development/src/model/queries/membership/ProjectMembershipByIdentityQuery.js.map +1 -1
  203. package/dist/development/src/model/queries/membership/ProjectRolesByIdentityQuery.cjs.map +1 -1
  204. package/dist/development/src/model/queries/membership/ProjectRolesByIdentityQuery.js.map +1 -1
  205. package/dist/development/src/model/queries/membership/ProjectSlugSpecification.cjs.map +1 -1
  206. package/dist/development/src/model/queries/membership/ProjectSlugSpecification.js.map +1 -1
  207. package/dist/development/src/model/queries/person/PersonByIdPQuery.cjs.map +1 -1
  208. package/dist/development/src/model/queries/person/PersonByIdPQuery.js.map +1 -1
  209. package/dist/development/src/model/queries/person/PersonByIdentityBatchQuery.cjs.map +1 -1
  210. package/dist/development/src/model/queries/person/PersonByIdentityBatchQuery.js.map +1 -1
  211. package/dist/development/src/model/queries/person/PersonQuery.cjs.map +1 -1
  212. package/dist/development/src/model/queries/person/PersonQuery.js.map +1 -1
  213. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.cjs +1 -1
  214. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.cjs.map +1 -1
  215. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.js +1 -1
  216. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.js.map +1 -1
  217. package/dist/development/src/model/queries/personToken/PersonTokenQuery.cjs +29 -0
  218. package/dist/development/src/model/queries/personToken/PersonTokenQuery.cjs.map +1 -0
  219. package/dist/development/src/model/queries/personToken/PersonTokenQuery.js +29 -0
  220. package/dist/development/src/model/queries/personToken/PersonTokenQuery.js.map +1 -0
  221. package/dist/development/src/model/queries/project/ProjectBySlugQuery.cjs.map +1 -1
  222. package/dist/development/src/model/queries/project/ProjectBySlugQuery.js.map +1 -1
  223. package/dist/development/src/model/queries/project/ProjectSecretsQuery.cjs.map +1 -1
  224. package/dist/development/src/model/queries/project/ProjectSecretsQuery.js.map +1 -1
  225. package/dist/development/src/model/queries/project/ProjectUpdateTimestampQuery.cjs.map +1 -1
  226. package/dist/development/src/model/queries/project/ProjectUpdateTimestampQuery.js.map +1 -1
  227. package/dist/development/src/model/queries/project/ProjectsByIdentityQuery.cjs.map +1 -1
  228. package/dist/development/src/model/queries/project/ProjectsByIdentityQuery.js.map +1 -1
  229. package/dist/development/src/model/queries/project/ProjectsQuery.cjs.map +1 -1
  230. package/dist/development/src/model/queries/project/ProjectsQuery.js.map +1 -1
  231. package/dist/development/src/model/service/ConfigurationManager.cjs +27 -0
  232. package/dist/development/src/model/service/ConfigurationManager.cjs.map +1 -0
  233. package/dist/development/src/model/service/ConfigurationManager.js +27 -0
  234. package/dist/development/src/model/service/ConfigurationManager.js.map +1 -0
  235. package/dist/development/src/model/service/EmailValidator.cjs.map +1 -1
  236. package/dist/development/src/model/service/EmailValidator.js.map +1 -1
  237. package/dist/development/src/model/service/IDPSignInManager.cjs +1 -1
  238. package/dist/development/src/model/service/IDPSignInManager.cjs.map +1 -1
  239. package/dist/development/src/model/service/IDPSignInManager.js +1 -1
  240. package/dist/development/src/model/service/IDPSignInManager.js.map +1 -1
  241. package/dist/development/src/model/service/InviteManager.cjs +7 -7
  242. package/dist/development/src/model/service/InviteManager.cjs.map +1 -1
  243. package/dist/development/src/model/service/InviteManager.js +6 -6
  244. package/dist/development/src/model/service/InviteManager.js.map +1 -1
  245. package/dist/development/src/model/service/MailTemplateManager.cjs.map +1 -1
  246. package/dist/development/src/model/service/MailTemplateManager.js.map +1 -1
  247. package/dist/development/src/model/service/MembershipValidator.cjs.map +1 -1
  248. package/dist/development/src/model/service/MembershipValidator.js.map +1 -1
  249. package/dist/development/src/model/service/OtpAuthenticator.cjs.map +1 -1
  250. package/dist/development/src/model/service/OtpAuthenticator.js.map +1 -1
  251. package/dist/development/src/model/service/OtpManager.cjs.map +1 -1
  252. package/dist/development/src/model/service/OtpManager.js.map +1 -1
  253. package/dist/development/src/model/service/PasswordChangeManager.cjs +1 -1
  254. package/dist/development/src/model/service/PasswordChangeManager.cjs.map +1 -1
  255. package/dist/development/src/model/service/PasswordChangeManager.js +1 -1
  256. package/dist/development/src/model/service/PasswordChangeManager.js.map +1 -1
  257. package/dist/development/src/model/service/PasswordResetManager.cjs +7 -15
  258. package/dist/development/src/model/service/PasswordResetManager.cjs.map +1 -1
  259. package/dist/development/src/model/service/PasswordResetManager.js +7 -15
  260. package/dist/development/src/model/service/PasswordResetManager.js.map +1 -1
  261. package/dist/development/src/model/service/PasswordlessSignInManager.cjs +135 -0
  262. package/dist/development/src/model/service/PasswordlessSignInManager.cjs.map +1 -0
  263. package/dist/development/src/model/service/PasswordlessSignInManager.js +135 -0
  264. package/dist/development/src/model/service/PasswordlessSignInManager.js.map +1 -0
  265. package/dist/development/src/model/service/PersonAccessManager.cjs.map +1 -1
  266. package/dist/development/src/model/service/PersonAccessManager.js.map +1 -1
  267. package/dist/development/src/model/service/PersonManager.cjs +7 -0
  268. package/dist/development/src/model/service/PersonManager.cjs.map +1 -1
  269. package/dist/development/src/model/service/PersonManager.js +7 -0
  270. package/dist/development/src/model/service/PersonManager.js.map +1 -1
  271. package/dist/development/src/model/service/ProjectManager.cjs +2 -2
  272. package/dist/development/src/model/service/ProjectManager.cjs.map +1 -1
  273. package/dist/development/src/model/service/ProjectManager.js +2 -2
  274. package/dist/development/src/model/service/ProjectManager.js.map +1 -1
  275. package/dist/development/src/model/service/ProjectMemberManager.cjs.map +1 -1
  276. package/dist/development/src/model/service/ProjectMemberManager.js.map +1 -1
  277. package/dist/development/src/model/service/RolesManager.cjs +1 -1
  278. package/dist/development/src/model/service/RolesManager.cjs.map +1 -1
  279. package/dist/development/src/model/service/RolesManager.js +1 -1
  280. package/dist/development/src/model/service/RolesManager.js.map +1 -1
  281. package/dist/development/src/model/service/SecretsManager.cjs.map +1 -1
  282. package/dist/development/src/model/service/SecretsManager.js.map +1 -1
  283. package/dist/development/src/model/service/SignInManager.cjs.map +1 -1
  284. package/dist/development/src/model/service/SignInManager.js.map +1 -1
  285. package/dist/development/src/model/service/SignUpManager.cjs +1 -1
  286. package/dist/development/src/model/service/SignUpManager.cjs.map +1 -1
  287. package/dist/development/src/model/service/SignUpManager.js +1 -1
  288. package/dist/development/src/model/service/SignUpManager.js.map +1 -1
  289. package/dist/development/src/model/service/apiKey/ApiKeyManager.cjs.map +1 -1
  290. package/dist/development/src/model/service/apiKey/ApiKeyManager.js.map +1 -1
  291. package/dist/development/src/model/service/apiKey/ApiKeyService.cjs.map +1 -1
  292. package/dist/development/src/model/service/apiKey/ApiKeyService.js.map +1 -1
  293. package/dist/development/src/model/service/helpers/getPreferredProject.cjs +13 -0
  294. package/dist/development/src/model/service/helpers/getPreferredProject.cjs.map +1 -0
  295. package/dist/development/src/model/service/helpers/getPreferredProject.js +13 -0
  296. package/dist/development/src/model/service/helpers/getPreferredProject.js.map +1 -0
  297. package/dist/development/src/model/service/idp/IDPHandlerRegistry.cjs.map +1 -1
  298. package/dist/development/src/model/service/idp/IDPHandlerRegistry.js.map +1 -1
  299. package/dist/development/src/model/service/idp/IDPManager.cjs.map +1 -1
  300. package/dist/development/src/model/service/idp/IDPManager.js.map +1 -1
  301. package/dist/development/src/model/service/idp/IDPResponseError.cjs.map +1 -1
  302. package/dist/development/src/model/service/idp/IDPResponseError.js.map +1 -1
  303. package/dist/development/src/model/service/idp/IDPValidationError.cjs.map +1 -1
  304. package/dist/development/src/model/service/idp/IDPValidationError.js.map +1 -1
  305. package/dist/development/src/model/service/idp/IdentityProviderNotFoundError.cjs.map +1 -1
  306. package/dist/development/src/model/service/idp/IdentityProviderNotFoundError.js.map +1 -1
  307. package/dist/development/src/model/service/idp/InvalidIDPConfigurationError.cjs.map +1 -1
  308. package/dist/development/src/model/service/idp/InvalidIDPConfigurationError.js.map +1 -1
  309. package/dist/development/src/model/service/idp/providers/AppleProvider.cjs +1 -1
  310. package/dist/development/src/model/service/idp/providers/AppleProvider.cjs.map +1 -1
  311. package/dist/development/src/model/service/idp/providers/AppleProvider.js +1 -1
  312. package/dist/development/src/model/service/idp/providers/AppleProvider.js.map +1 -1
  313. package/dist/development/src/model/service/idp/providers/FacebookProvider.cjs +1 -1
  314. package/dist/development/src/model/service/idp/providers/FacebookProvider.cjs.map +1 -1
  315. package/dist/development/src/model/service/idp/providers/FacebookProvider.js +1 -1
  316. package/dist/development/src/model/service/idp/providers/FacebookProvider.js.map +1 -1
  317. package/dist/development/src/model/service/idp/providers/OIDCHelpers.cjs +9 -5
  318. package/dist/development/src/model/service/idp/providers/OIDCHelpers.cjs.map +1 -1
  319. package/dist/development/src/model/service/idp/providers/OIDCHelpers.js +9 -5
  320. package/dist/development/src/model/service/idp/providers/OIDCHelpers.js.map +1 -1
  321. package/dist/development/src/model/service/idp/providers/OIDCProvider.cjs +9 -3
  322. package/dist/development/src/model/service/idp/providers/OIDCProvider.cjs.map +1 -1
  323. package/dist/development/src/model/service/idp/providers/OIDCProvider.js +9 -3
  324. package/dist/development/src/model/service/idp/providers/OIDCProvider.js.map +1 -1
  325. package/dist/development/src/model/service/idp/providers/OIDCTypes.cjs +6 -1
  326. package/dist/development/src/model/service/idp/providers/OIDCTypes.cjs.map +1 -1
  327. package/dist/development/src/model/service/idp/providers/OIDCTypes.js +6 -1
  328. package/dist/development/src/model/service/idp/providers/OIDCTypes.js.map +1 -1
  329. package/dist/development/src/model/service/idp/providers/helpers.cjs.map +1 -1
  330. package/dist/development/src/model/service/idp/providers/helpers.js.map +1 -1
  331. package/dist/development/src/model/service/membershipUtils.cjs.map +1 -1
  332. package/dist/development/src/model/service/membershipUtils.js.map +1 -1
  333. package/dist/development/src/model/type/ApiKey.cjs.map +1 -1
  334. package/dist/development/src/model/type/ApiKey.js.map +1 -1
  335. package/dist/development/src/model/utils/DatabaseContext.cjs.map +1 -1
  336. package/dist/development/src/model/utils/DatabaseContext.js.map +1 -1
  337. package/dist/development/src/model/utils/Response.cjs.map +1 -1
  338. package/dist/development/src/model/utils/Response.js.map +1 -1
  339. package/dist/development/src/model/utils/password.cjs.map +1 -1
  340. package/dist/development/src/model/utils/password.js.map +1 -1
  341. package/dist/development/src/model/utils/tokenUtils.cjs +39 -0
  342. package/dist/development/src/model/utils/tokenUtils.cjs.map +1 -1
  343. package/dist/development/src/model/utils/tokenUtils.js +40 -1
  344. package/dist/development/src/model/utils/tokenUtils.js.map +1 -1
  345. package/dist/development/src/resolvers/ResolverFactory.cjs +8 -1
  346. package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
  347. package/dist/development/src/resolvers/ResolverFactory.js +8 -1
  348. package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
  349. package/dist/development/src/resolvers/TenantResolverContextFactory.cjs.map +1 -1
  350. package/dist/development/src/resolvers/TenantResolverContextFactory.js.map +1 -1
  351. package/dist/development/src/resolvers/errorUtils.cjs.map +1 -1
  352. package/dist/development/src/resolvers/errorUtils.js.map +1 -1
  353. package/dist/development/src/resolvers/membershipUtils.cjs.map +1 -1
  354. package/dist/development/src/resolvers/membershipUtils.js.map +1 -1
  355. package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs.map +1 -1
  356. package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js.map +1 -1
  357. package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs.map +1 -1
  358. package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js.map +1 -1
  359. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs +41 -0
  360. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -0
  361. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js +41 -0
  362. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -0
  363. package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs.map +1 -1
  364. package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js.map +1 -1
  365. package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs.map +1 -1
  366. package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.js.map +1 -1
  367. package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs.map +1 -1
  368. package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.js.map +1 -1
  369. package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs.map +1 -1
  370. package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.js.map +1 -1
  371. package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs.map +1 -1
  372. package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js.map +1 -1
  373. package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs.map +1 -1
  374. package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js.map +1 -1
  375. package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs.map +1 -1
  376. package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.js.map +1 -1
  377. package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs.map +1 -1
  378. package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.js.map +1 -1
  379. package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs.map +1 -1
  380. package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.js.map +1 -1
  381. package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.cjs +4 -1
  382. package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.cjs.map +1 -1
  383. package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.js +4 -1
  384. package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.js.map +1 -1
  385. package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.cjs.map +1 -1
  386. package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.js.map +1 -1
  387. package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.cjs.map +1 -1
  388. package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.js.map +1 -1
  389. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs +83 -0
  390. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -0
  391. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js +83 -0
  392. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -0
  393. package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
  394. package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
  395. package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.cjs.map +1 -1
  396. package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.js.map +1 -1
  397. package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.cjs.map +1 -1
  398. package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.js.map +1 -1
  399. package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.cjs.map +1 -1
  400. package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.js.map +1 -1
  401. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs +52 -0
  402. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -0
  403. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js +52 -0
  404. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -0
  405. package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs.map +1 -1
  406. package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.js.map +1 -1
  407. package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs.map +1 -1
  408. package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js.map +1 -1
  409. package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs.map +1 -1
  410. package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.js.map +1 -1
  411. package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs.map +1 -1
  412. package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js.map +1 -1
  413. package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs.map +1 -1
  414. package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js.map +1 -1
  415. package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs.map +1 -1
  416. package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js.map +1 -1
  417. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs +34 -0
  418. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -0
  419. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js +34 -0
  420. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -0
  421. package/dist/development/src/resolvers/query/IDPQueryResolver.cjs.map +1 -1
  422. package/dist/development/src/resolvers/query/IDPQueryResolver.js.map +1 -1
  423. package/dist/development/src/resolvers/query/MailTemplateQueryResolver.cjs.map +1 -1
  424. package/dist/development/src/resolvers/query/MailTemplateQueryResolver.js.map +1 -1
  425. package/dist/development/src/resolvers/query/MeQueryResolver.cjs.map +1 -1
  426. package/dist/development/src/resolvers/query/MeQueryResolver.js.map +1 -1
  427. package/dist/development/src/resolvers/query/PersonQueryResolver.cjs.map +1 -1
  428. package/dist/development/src/resolvers/query/PersonQueryResolver.js.map +1 -1
  429. package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.cjs.map +1 -1
  430. package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.js.map +1 -1
  431. package/dist/development/src/resolvers/query/ProjectQueryResolver.cjs.map +1 -1
  432. package/dist/development/src/resolvers/query/ProjectQueryResolver.js.map +1 -1
  433. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.cjs +1 -0
  434. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.cjs.map +1 -1
  435. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.js +1 -0
  436. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.js.map +1 -1
  437. package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.cjs.map +1 -1
  438. package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.js.map +1 -1
  439. package/dist/development/src/resolvers/types/IdentityTypeResolver.cjs.map +1 -1
  440. package/dist/development/src/resolvers/types/IdentityTypeResolver.js.map +1 -1
  441. package/dist/development/src/resolvers/types/ProjectTypeResolver.cjs.map +1 -1
  442. package/dist/development/src/resolvers/types/ProjectTypeResolver.js.map +1 -1
  443. package/dist/development/src/schema/tenant.graphql.cjs +162 -10
  444. package/dist/development/src/schema/tenant.graphql.cjs.map +1 -1
  445. package/dist/development/src/schema/tenant.graphql.js +162 -10
  446. package/dist/development/src/schema/tenant.graphql.js.map +1 -1
  447. package/dist/development/src/utils/Mailer.cjs.map +1 -1
  448. package/dist/development/src/utils/Mailer.js.map +1 -1
  449. package/dist/development/src/utils/TemplateRenderer.cjs.map +1 -1
  450. package/dist/development/src/utils/TemplateRenderer.js.map +1 -1
  451. package/dist/development/src/utils/array.cjs.map +1 -1
  452. package/dist/development/src/utils/array.js.map +1 -1
  453. package/dist/development/src/utils/batchQuery.cjs.map +1 -1
  454. package/dist/development/src/utils/batchQuery.js.map +1 -1
  455. package/dist/production/index.cjs +18 -6
  456. package/dist/production/index.cjs.map +1 -1
  457. package/dist/production/index.js +20 -8
  458. package/dist/production/index.js.map +1 -1
  459. package/dist/production/src/TenantContainer.cjs +7 -1
  460. package/dist/production/src/TenantContainer.cjs.map +1 -1
  461. package/dist/production/src/TenantContainer.js +7 -1
  462. package/dist/production/src/TenantContainer.js.map +1 -1
  463. package/dist/production/src/bridges/system/IdentityFetcher.cjs.map +1 -1
  464. package/dist/production/src/bridges/system/IdentityFetcher.js.map +1 -1
  465. package/dist/production/src/exceptions.cjs.map +1 -1
  466. package/dist/production/src/exceptions.js.map +1 -1
  467. package/dist/production/src/migrations/2024-08-26-120000-passwordless.cjs +31 -0
  468. package/dist/production/src/migrations/2024-08-26-120000-passwordless.cjs.map +1 -0
  469. package/dist/production/src/migrations/2024-08-26-120000-passwordless.js +32 -0
  470. package/dist/production/src/migrations/2024-08-26-120000-passwordless.js.map +1 -0
  471. package/dist/production/src/migrations/runner.cjs +3 -1
  472. package/dist/production/src/migrations/runner.cjs.map +1 -1
  473. package/dist/production/src/migrations/runner.js +3 -1
  474. package/dist/production/src/migrations/runner.js.map +1 -1
  475. package/dist/production/src/migrations/snapshot.cjs +33 -5
  476. package/dist/production/src/migrations/snapshot.cjs.map +1 -1
  477. package/dist/production/src/migrations/snapshot.js +33 -5
  478. package/dist/production/src/migrations/snapshot.js.map +1 -1
  479. package/dist/production/src/migrations/tenantCredentials.cjs.map +1 -1
  480. package/dist/production/src/migrations/tenantCredentials.js.map +1 -1
  481. package/dist/production/src/model/authorization/AclSchemaAccessNodeFactory.cjs.map +1 -1
  482. package/dist/production/src/model/authorization/AclSchemaAccessNodeFactory.js.map +1 -1
  483. package/dist/production/src/model/authorization/DirectPermissionsAccessNode.cjs.map +1 -1
  484. package/dist/production/src/model/authorization/DirectPermissionsAccessNode.js.map +1 -1
  485. package/dist/production/src/model/authorization/Identity.cjs.map +1 -1
  486. package/dist/production/src/model/authorization/Identity.js.map +1 -1
  487. package/dist/production/src/model/authorization/IdentityFactory.cjs.map +1 -1
  488. package/dist/production/src/model/authorization/IdentityFactory.js.map +1 -1
  489. package/dist/production/src/model/authorization/IdentityScope.cjs.map +1 -1
  490. package/dist/production/src/model/authorization/IdentityScope.js.map +1 -1
  491. package/dist/production/src/model/authorization/MembershipMatcher.cjs.map +1 -1
  492. package/dist/production/src/model/authorization/MembershipMatcher.js.map +1 -1
  493. package/dist/production/src/model/authorization/PermissionActions.cjs +5 -0
  494. package/dist/production/src/model/authorization/PermissionActions.cjs.map +1 -1
  495. package/dist/production/src/model/authorization/PermissionActions.js +5 -0
  496. package/dist/production/src/model/authorization/PermissionActions.js.map +1 -1
  497. package/dist/production/src/model/authorization/PermissionContext.cjs.map +1 -1
  498. package/dist/production/src/model/authorization/PermissionContext.js.map +1 -1
  499. package/dist/production/src/model/authorization/PermissionContextFactory.cjs.map +1 -1
  500. package/dist/production/src/model/authorization/PermissionContextFactory.js.map +1 -1
  501. package/dist/production/src/model/authorization/PermissionsFactory.cjs +5 -0
  502. package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  503. package/dist/production/src/model/authorization/PermissionsFactory.js +5 -0
  504. package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
  505. package/dist/production/src/model/authorization/ProjectScope.cjs.map +1 -1
  506. package/dist/production/src/model/authorization/ProjectScope.js.map +1 -1
  507. package/dist/production/src/model/authorization/ProjectScopeFactory.cjs.map +1 -1
  508. package/dist/production/src/model/authorization/ProjectScopeFactory.js.map +1 -1
  509. package/dist/production/src/model/commands/CommandBus.cjs.map +1 -1
  510. package/dist/production/src/model/commands/CommandBus.js.map +1 -1
  511. package/dist/production/src/model/commands/apiKey/ApiKeyHelper.cjs.map +1 -1
  512. package/dist/production/src/model/commands/apiKey/ApiKeyHelper.js.map +1 -1
  513. package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.cjs.map +1 -1
  514. package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.js.map +1 -1
  515. package/dist/production/src/model/commands/apiKey/DisableApiKeyCommand.cjs.map +1 -1
  516. package/dist/production/src/model/commands/apiKey/DisableApiKeyCommand.js.map +1 -1
  517. package/dist/production/src/model/commands/apiKey/DisableIdentityApiKeysCommand.cjs.map +1 -1
  518. package/dist/production/src/model/commands/apiKey/DisableIdentityApiKeysCommand.js.map +1 -1
  519. package/dist/production/src/model/commands/apiKey/DisableOneOffApiKeyCommand.cjs.map +1 -1
  520. package/dist/production/src/model/commands/apiKey/DisableOneOffApiKeyCommand.js.map +1 -1
  521. package/dist/production/src/model/commands/apiKey/ProlongApiKeyCommand.cjs.map +1 -1
  522. package/dist/production/src/model/commands/apiKey/ProlongApiKeyCommand.js.map +1 -1
  523. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs +20 -0
  524. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -0
  525. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js +20 -0
  526. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -0
  527. package/dist/production/src/model/commands/identity/CreateIdentityCommand.cjs.map +1 -1
  528. package/dist/production/src/model/commands/identity/CreateIdentityCommand.js.map +1 -1
  529. package/dist/production/src/model/commands/identity/PatchIdentityGlobalRoles.cjs.map +1 -1
  530. package/dist/production/src/model/commands/identity/PatchIdentityGlobalRoles.js.map +1 -1
  531. package/dist/production/src/model/commands/idp/CreateIdpCommand.cjs.map +1 -1
  532. package/dist/production/src/model/commands/idp/CreateIdpCommand.js.map +1 -1
  533. package/dist/production/src/model/commands/idp/DisableIdpCommand.cjs.map +1 -1
  534. package/dist/production/src/model/commands/idp/DisableIdpCommand.js.map +1 -1
  535. package/dist/production/src/model/commands/idp/EnableIdpCommand.cjs.map +1 -1
  536. package/dist/production/src/model/commands/idp/EnableIdpCommand.js.map +1 -1
  537. package/dist/production/src/model/commands/idp/UpdateIdpCommand.cjs.map +1 -1
  538. package/dist/production/src/model/commands/idp/UpdateIdpCommand.js.map +1 -1
  539. package/dist/production/src/model/commands/mailTemplate/AddMailTemplateCommand.cjs.map +1 -1
  540. package/dist/production/src/model/commands/mailTemplate/AddMailTemplateCommand.js.map +1 -1
  541. package/dist/production/src/model/commands/mailTemplate/RemoveMailTemplateCommand.cjs.map +1 -1
  542. package/dist/production/src/model/commands/mailTemplate/RemoveMailTemplateCommand.js.map +1 -1
  543. package/dist/production/src/model/commands/membership/AddProjectMemberCommand.cjs.map +1 -1
  544. package/dist/production/src/model/commands/membership/AddProjectMemberCommand.js.map +1 -1
  545. package/dist/production/src/model/commands/membership/CreateOrUpdateProjectMembershipCommand.cjs.map +1 -1
  546. package/dist/production/src/model/commands/membership/CreateOrUpdateProjectMembershipCommand.js.map +1 -1
  547. package/dist/production/src/model/commands/membership/RemoveProjectMemberCommand.cjs.map +1 -1
  548. package/dist/production/src/model/commands/membership/RemoveProjectMemberCommand.js.map +1 -1
  549. package/dist/production/src/model/commands/membership/RemoveProjectMembershipsCommand.cjs.map +1 -1
  550. package/dist/production/src/model/commands/membership/RemoveProjectMembershipsCommand.js.map +1 -1
  551. package/dist/production/src/model/commands/membership/UpdateProjectMemberCommand.cjs.map +1 -1
  552. package/dist/production/src/model/commands/membership/UpdateProjectMemberCommand.js.map +1 -1
  553. package/dist/production/src/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.cjs.map +1 -1
  554. package/dist/production/src/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.js.map +1 -1
  555. package/dist/production/src/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.cjs.map +1 -1
  556. package/dist/production/src/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.js.map +1 -1
  557. package/dist/production/src/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.cjs.map +1 -1
  558. package/dist/production/src/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.js.map +1 -1
  559. package/dist/production/src/model/commands/otp/ConfirmOtpCommand.cjs.map +1 -1
  560. package/dist/production/src/model/commands/otp/ConfirmOtpCommand.js.map +1 -1
  561. package/dist/production/src/model/commands/otp/DisableOtpCommand.cjs.map +1 -1
  562. package/dist/production/src/model/commands/otp/DisableOtpCommand.js.map +1 -1
  563. package/dist/production/src/model/commands/otp/PrepareOtpCommand.cjs.map +1 -1
  564. package/dist/production/src/model/commands/otp/PrepareOtpCommand.js.map +1 -1
  565. package/dist/production/src/model/commands/person/ChangePasswordCommand.cjs.map +1 -1
  566. package/dist/production/src/model/commands/person/ChangePasswordCommand.js.map +1 -1
  567. package/dist/production/src/model/commands/person/ChangeProfileCommand.cjs.map +1 -1
  568. package/dist/production/src/model/commands/person/ChangeProfileCommand.js.map +1 -1
  569. package/dist/production/src/model/commands/person/CreatePersonCommand.cjs +2 -1
  570. package/dist/production/src/model/commands/person/CreatePersonCommand.cjs.map +1 -1
  571. package/dist/production/src/model/commands/person/CreatePersonCommand.js +2 -1
  572. package/dist/production/src/model/commands/person/CreatePersonCommand.js.map +1 -1
  573. package/dist/production/src/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.cjs.map +1 -1
  574. package/dist/production/src/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.js.map +1 -1
  575. package/dist/production/src/model/commands/person/DisablePersonCommand.cjs.map +1 -1
  576. package/dist/production/src/model/commands/person/DisablePersonCommand.js.map +1 -1
  577. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.cjs +18 -0
  578. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.cjs.map +1 -0
  579. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.js +18 -0
  580. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.js.map +1 -0
  581. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.cjs +20 -0
  582. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.cjs.map +1 -0
  583. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.js +20 -0
  584. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.js.map +1 -0
  585. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.cjs +33 -0
  586. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.cjs.map +1 -0
  587. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.js +33 -0
  588. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.js.map +1 -0
  589. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs +19 -0
  590. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs.map +1 -0
  591. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.js +19 -0
  592. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.js.map +1 -0
  593. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.cjs +19 -0
  594. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.cjs.map +1 -0
  595. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.js +19 -0
  596. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.js.map +1 -0
  597. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs +28 -0
  598. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -0
  599. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.js +28 -0
  600. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.js.map +1 -0
  601. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.cjs +28 -0
  602. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.cjs.map +1 -0
  603. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.js +28 -0
  604. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.js.map +1 -0
  605. package/dist/production/src/model/commands/project/CreateProjectCommand.cjs.map +1 -1
  606. package/dist/production/src/model/commands/project/CreateProjectCommand.js.map +1 -1
  607. package/dist/production/src/model/commands/project/SetProjectSecretCommand.cjs.map +1 -1
  608. package/dist/production/src/model/commands/project/SetProjectSecretCommand.js.map +1 -1
  609. package/dist/production/src/model/commands/project/UpdateProjectCommand.cjs.map +1 -1
  610. package/dist/production/src/model/commands/project/UpdateProjectCommand.js.map +1 -1
  611. package/dist/production/src/model/consts/expirations.cjs +7 -0
  612. package/dist/production/src/model/consts/expirations.cjs.map +1 -0
  613. package/dist/production/src/model/consts/expirations.js +7 -0
  614. package/dist/production/src/model/consts/expirations.js.map +1 -0
  615. package/dist/production/src/model/dtos/Password.cjs.map +1 -1
  616. package/dist/production/src/model/dtos/Password.js.map +1 -1
  617. package/dist/production/src/model/mailing/UserMailer.cjs +10 -1
  618. package/dist/production/src/model/mailing/UserMailer.cjs.map +1 -1
  619. package/dist/production/src/model/mailing/UserMailer.js +10 -1
  620. package/dist/production/src/model/mailing/UserMailer.js.map +1 -1
  621. package/dist/production/src/model/mailing/templates/ExistingUserInvited.mustache.cjs.map +1 -1
  622. package/dist/production/src/model/mailing/templates/ExistingUserInvited.mustache.js.map +1 -1
  623. package/dist/production/src/model/mailing/templates/NewUserInvited.mustache.cjs.map +1 -1
  624. package/dist/production/src/model/mailing/templates/NewUserInvited.mustache.js.map +1 -1
  625. package/dist/production/src/model/mailing/templates/PasswordReset.mustache.cjs.map +1 -1
  626. package/dist/production/src/model/mailing/templates/PasswordReset.mustache.js.map +1 -1
  627. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs +17 -0
  628. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs.map +1 -0
  629. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.js +18 -0
  630. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.js.map +1 -0
  631. package/dist/production/src/model/mailing/type.cjs +9 -3
  632. package/dist/production/src/model/mailing/type.cjs.map +1 -1
  633. package/dist/production/src/model/mailing/type.js +9 -3
  634. package/dist/production/src/model/mailing/type.js.map +1 -1
  635. package/dist/production/src/model/queries/apiKey/ApiKeyQuery.cjs.map +1 -1
  636. package/dist/production/src/model/queries/apiKey/ApiKeyQuery.js.map +1 -1
  637. package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs +21 -0
  638. package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -0
  639. package/dist/production/src/model/queries/configuration/ConfigurationQuery.js +21 -0
  640. package/dist/production/src/model/queries/configuration/ConfigurationQuery.js.map +1 -0
  641. package/dist/production/src/model/queries/identity/IdentityQuery.cjs.map +1 -1
  642. package/dist/production/src/model/queries/identity/IdentityQuery.js.map +1 -1
  643. package/dist/production/src/model/queries/idp/IdentityProviderBySlugQuery.cjs.map +1 -1
  644. package/dist/production/src/model/queries/idp/IdentityProviderBySlugQuery.js.map +1 -1
  645. package/dist/production/src/model/queries/idp/IdentityProvidersQuery.cjs.map +1 -1
  646. package/dist/production/src/model/queries/idp/IdentityProvidersQuery.js.map +1 -1
  647. package/dist/production/src/model/queries/idp/helpers.cjs.map +1 -1
  648. package/dist/production/src/model/queries/idp/helpers.js.map +1 -1
  649. package/dist/production/src/model/queries/mailTemplate/MailTemplateListQuery.cjs.map +1 -1
  650. package/dist/production/src/model/queries/mailTemplate/MailTemplateListQuery.js.map +1 -1
  651. package/dist/production/src/model/queries/mailTemplate/MailTemplateQuery.cjs.map +1 -1
  652. package/dist/production/src/model/queries/mailTemplate/MailTemplateQuery.js.map +1 -1
  653. package/dist/production/src/model/queries/membership/ProjectMembersQuery.cjs.map +1 -1
  654. package/dist/production/src/model/queries/membership/ProjectMembersQuery.js.map +1 -1
  655. package/dist/production/src/model/queries/membership/ProjectMembershipByIdentityQuery.cjs.map +1 -1
  656. package/dist/production/src/model/queries/membership/ProjectMembershipByIdentityQuery.js.map +1 -1
  657. package/dist/production/src/model/queries/membership/ProjectRolesByIdentityQuery.cjs.map +1 -1
  658. package/dist/production/src/model/queries/membership/ProjectRolesByIdentityQuery.js.map +1 -1
  659. package/dist/production/src/model/queries/membership/ProjectSlugSpecification.cjs.map +1 -1
  660. package/dist/production/src/model/queries/membership/ProjectSlugSpecification.js.map +1 -1
  661. package/dist/production/src/model/queries/person/PersonByIdPQuery.cjs.map +1 -1
  662. package/dist/production/src/model/queries/person/PersonByIdPQuery.js.map +1 -1
  663. package/dist/production/src/model/queries/person/PersonByIdentityBatchQuery.cjs.map +1 -1
  664. package/dist/production/src/model/queries/person/PersonByIdentityBatchQuery.js.map +1 -1
  665. package/dist/production/src/model/queries/person/PersonQuery.cjs.map +1 -1
  666. package/dist/production/src/model/queries/person/PersonQuery.js.map +1 -1
  667. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.cjs +1 -1
  668. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.cjs.map +1 -1
  669. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.js +1 -1
  670. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.js.map +1 -1
  671. package/dist/production/src/model/queries/personToken/PersonTokenQuery.cjs +29 -0
  672. package/dist/production/src/model/queries/personToken/PersonTokenQuery.cjs.map +1 -0
  673. package/dist/production/src/model/queries/personToken/PersonTokenQuery.js +29 -0
  674. package/dist/production/src/model/queries/personToken/PersonTokenQuery.js.map +1 -0
  675. package/dist/production/src/model/queries/project/ProjectBySlugQuery.cjs.map +1 -1
  676. package/dist/production/src/model/queries/project/ProjectBySlugQuery.js.map +1 -1
  677. package/dist/production/src/model/queries/project/ProjectSecretsQuery.cjs.map +1 -1
  678. package/dist/production/src/model/queries/project/ProjectSecretsQuery.js.map +1 -1
  679. package/dist/production/src/model/queries/project/ProjectUpdateTimestampQuery.cjs.map +1 -1
  680. package/dist/production/src/model/queries/project/ProjectUpdateTimestampQuery.js.map +1 -1
  681. package/dist/production/src/model/queries/project/ProjectsByIdentityQuery.cjs.map +1 -1
  682. package/dist/production/src/model/queries/project/ProjectsByIdentityQuery.js.map +1 -1
  683. package/dist/production/src/model/queries/project/ProjectsQuery.cjs.map +1 -1
  684. package/dist/production/src/model/queries/project/ProjectsQuery.js.map +1 -1
  685. package/dist/production/src/model/service/ConfigurationManager.cjs +27 -0
  686. package/dist/production/src/model/service/ConfigurationManager.cjs.map +1 -0
  687. package/dist/production/src/model/service/ConfigurationManager.js +27 -0
  688. package/dist/production/src/model/service/ConfigurationManager.js.map +1 -0
  689. package/dist/production/src/model/service/EmailValidator.cjs.map +1 -1
  690. package/dist/production/src/model/service/EmailValidator.js.map +1 -1
  691. package/dist/production/src/model/service/IDPSignInManager.cjs +1 -1
  692. package/dist/production/src/model/service/IDPSignInManager.cjs.map +1 -1
  693. package/dist/production/src/model/service/IDPSignInManager.js +1 -1
  694. package/dist/production/src/model/service/IDPSignInManager.js.map +1 -1
  695. package/dist/production/src/model/service/InviteManager.cjs +7 -7
  696. package/dist/production/src/model/service/InviteManager.cjs.map +1 -1
  697. package/dist/production/src/model/service/InviteManager.js +6 -6
  698. package/dist/production/src/model/service/InviteManager.js.map +1 -1
  699. package/dist/production/src/model/service/MailTemplateManager.cjs.map +1 -1
  700. package/dist/production/src/model/service/MailTemplateManager.js.map +1 -1
  701. package/dist/production/src/model/service/MembershipValidator.cjs.map +1 -1
  702. package/dist/production/src/model/service/MembershipValidator.js.map +1 -1
  703. package/dist/production/src/model/service/OtpAuthenticator.cjs.map +1 -1
  704. package/dist/production/src/model/service/OtpAuthenticator.js.map +1 -1
  705. package/dist/production/src/model/service/OtpManager.cjs.map +1 -1
  706. package/dist/production/src/model/service/OtpManager.js.map +1 -1
  707. package/dist/production/src/model/service/PasswordChangeManager.cjs +1 -1
  708. package/dist/production/src/model/service/PasswordChangeManager.cjs.map +1 -1
  709. package/dist/production/src/model/service/PasswordChangeManager.js +1 -1
  710. package/dist/production/src/model/service/PasswordChangeManager.js.map +1 -1
  711. package/dist/production/src/model/service/PasswordResetManager.cjs +7 -15
  712. package/dist/production/src/model/service/PasswordResetManager.cjs.map +1 -1
  713. package/dist/production/src/model/service/PasswordResetManager.js +7 -15
  714. package/dist/production/src/model/service/PasswordResetManager.js.map +1 -1
  715. package/dist/production/src/model/service/PasswordlessSignInManager.cjs +135 -0
  716. package/dist/production/src/model/service/PasswordlessSignInManager.cjs.map +1 -0
  717. package/dist/production/src/model/service/PasswordlessSignInManager.js +135 -0
  718. package/dist/production/src/model/service/PasswordlessSignInManager.js.map +1 -0
  719. package/dist/production/src/model/service/PersonAccessManager.cjs.map +1 -1
  720. package/dist/production/src/model/service/PersonAccessManager.js.map +1 -1
  721. package/dist/production/src/model/service/PersonManager.cjs +7 -0
  722. package/dist/production/src/model/service/PersonManager.cjs.map +1 -1
  723. package/dist/production/src/model/service/PersonManager.js +7 -0
  724. package/dist/production/src/model/service/PersonManager.js.map +1 -1
  725. package/dist/production/src/model/service/ProjectManager.cjs +2 -2
  726. package/dist/production/src/model/service/ProjectManager.cjs.map +1 -1
  727. package/dist/production/src/model/service/ProjectManager.js +2 -2
  728. package/dist/production/src/model/service/ProjectManager.js.map +1 -1
  729. package/dist/production/src/model/service/ProjectMemberManager.cjs.map +1 -1
  730. package/dist/production/src/model/service/ProjectMemberManager.js.map +1 -1
  731. package/dist/production/src/model/service/RolesManager.cjs +1 -1
  732. package/dist/production/src/model/service/RolesManager.cjs.map +1 -1
  733. package/dist/production/src/model/service/RolesManager.js +1 -1
  734. package/dist/production/src/model/service/RolesManager.js.map +1 -1
  735. package/dist/production/src/model/service/SecretsManager.cjs.map +1 -1
  736. package/dist/production/src/model/service/SecretsManager.js.map +1 -1
  737. package/dist/production/src/model/service/SignInManager.cjs.map +1 -1
  738. package/dist/production/src/model/service/SignInManager.js.map +1 -1
  739. package/dist/production/src/model/service/SignUpManager.cjs +1 -1
  740. package/dist/production/src/model/service/SignUpManager.cjs.map +1 -1
  741. package/dist/production/src/model/service/SignUpManager.js +1 -1
  742. package/dist/production/src/model/service/SignUpManager.js.map +1 -1
  743. package/dist/production/src/model/service/apiKey/ApiKeyManager.cjs.map +1 -1
  744. package/dist/production/src/model/service/apiKey/ApiKeyManager.js.map +1 -1
  745. package/dist/production/src/model/service/apiKey/ApiKeyService.cjs.map +1 -1
  746. package/dist/production/src/model/service/apiKey/ApiKeyService.js.map +1 -1
  747. package/dist/production/src/model/service/helpers/getPreferredProject.cjs +13 -0
  748. package/dist/production/src/model/service/helpers/getPreferredProject.cjs.map +1 -0
  749. package/dist/production/src/model/service/helpers/getPreferredProject.js +13 -0
  750. package/dist/production/src/model/service/helpers/getPreferredProject.js.map +1 -0
  751. package/dist/production/src/model/service/idp/IDPHandlerRegistry.cjs.map +1 -1
  752. package/dist/production/src/model/service/idp/IDPHandlerRegistry.js.map +1 -1
  753. package/dist/production/src/model/service/idp/IDPManager.cjs.map +1 -1
  754. package/dist/production/src/model/service/idp/IDPManager.js.map +1 -1
  755. package/dist/production/src/model/service/idp/IDPResponseError.cjs.map +1 -1
  756. package/dist/production/src/model/service/idp/IDPResponseError.js.map +1 -1
  757. package/dist/production/src/model/service/idp/IDPValidationError.cjs.map +1 -1
  758. package/dist/production/src/model/service/idp/IDPValidationError.js.map +1 -1
  759. package/dist/production/src/model/service/idp/IdentityProviderNotFoundError.cjs.map +1 -1
  760. package/dist/production/src/model/service/idp/IdentityProviderNotFoundError.js.map +1 -1
  761. package/dist/production/src/model/service/idp/InvalidIDPConfigurationError.cjs.map +1 -1
  762. package/dist/production/src/model/service/idp/InvalidIDPConfigurationError.js.map +1 -1
  763. package/dist/production/src/model/service/idp/providers/AppleProvider.cjs +1 -1
  764. package/dist/production/src/model/service/idp/providers/AppleProvider.cjs.map +1 -1
  765. package/dist/production/src/model/service/idp/providers/AppleProvider.js +1 -1
  766. package/dist/production/src/model/service/idp/providers/AppleProvider.js.map +1 -1
  767. package/dist/production/src/model/service/idp/providers/FacebookProvider.cjs +1 -1
  768. package/dist/production/src/model/service/idp/providers/FacebookProvider.cjs.map +1 -1
  769. package/dist/production/src/model/service/idp/providers/FacebookProvider.js +1 -1
  770. package/dist/production/src/model/service/idp/providers/FacebookProvider.js.map +1 -1
  771. package/dist/production/src/model/service/idp/providers/OIDCHelpers.cjs +9 -5
  772. package/dist/production/src/model/service/idp/providers/OIDCHelpers.cjs.map +1 -1
  773. package/dist/production/src/model/service/idp/providers/OIDCHelpers.js +9 -5
  774. package/dist/production/src/model/service/idp/providers/OIDCHelpers.js.map +1 -1
  775. package/dist/production/src/model/service/idp/providers/OIDCProvider.cjs +9 -3
  776. package/dist/production/src/model/service/idp/providers/OIDCProvider.cjs.map +1 -1
  777. package/dist/production/src/model/service/idp/providers/OIDCProvider.js +9 -3
  778. package/dist/production/src/model/service/idp/providers/OIDCProvider.js.map +1 -1
  779. package/dist/production/src/model/service/idp/providers/OIDCTypes.cjs +6 -1
  780. package/dist/production/src/model/service/idp/providers/OIDCTypes.cjs.map +1 -1
  781. package/dist/production/src/model/service/idp/providers/OIDCTypes.js +6 -1
  782. package/dist/production/src/model/service/idp/providers/OIDCTypes.js.map +1 -1
  783. package/dist/production/src/model/service/idp/providers/helpers.cjs.map +1 -1
  784. package/dist/production/src/model/service/idp/providers/helpers.js.map +1 -1
  785. package/dist/production/src/model/service/membershipUtils.cjs.map +1 -1
  786. package/dist/production/src/model/service/membershipUtils.js.map +1 -1
  787. package/dist/production/src/model/type/ApiKey.cjs.map +1 -1
  788. package/dist/production/src/model/type/ApiKey.js.map +1 -1
  789. package/dist/production/src/model/utils/DatabaseContext.cjs.map +1 -1
  790. package/dist/production/src/model/utils/DatabaseContext.js.map +1 -1
  791. package/dist/production/src/model/utils/Response.cjs.map +1 -1
  792. package/dist/production/src/model/utils/Response.js.map +1 -1
  793. package/dist/production/src/model/utils/password.cjs.map +1 -1
  794. package/dist/production/src/model/utils/password.js.map +1 -1
  795. package/dist/production/src/model/utils/tokenUtils.cjs +39 -0
  796. package/dist/production/src/model/utils/tokenUtils.cjs.map +1 -1
  797. package/dist/production/src/model/utils/tokenUtils.js +40 -1
  798. package/dist/production/src/model/utils/tokenUtils.js.map +1 -1
  799. package/dist/production/src/resolvers/ResolverFactory.cjs +8 -1
  800. package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
  801. package/dist/production/src/resolvers/ResolverFactory.js +8 -1
  802. package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
  803. package/dist/production/src/resolvers/TenantResolverContextFactory.cjs.map +1 -1
  804. package/dist/production/src/resolvers/TenantResolverContextFactory.js.map +1 -1
  805. package/dist/production/src/resolvers/errorUtils.cjs.map +1 -1
  806. package/dist/production/src/resolvers/errorUtils.js.map +1 -1
  807. package/dist/production/src/resolvers/membershipUtils.cjs.map +1 -1
  808. package/dist/production/src/resolvers/membershipUtils.js.map +1 -1
  809. package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs.map +1 -1
  810. package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js.map +1 -1
  811. package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs.map +1 -1
  812. package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js.map +1 -1
  813. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs +41 -0
  814. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -0
  815. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js +41 -0
  816. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -0
  817. package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs.map +1 -1
  818. package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js.map +1 -1
  819. package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs.map +1 -1
  820. package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.js.map +1 -1
  821. package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs.map +1 -1
  822. package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.js.map +1 -1
  823. package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs.map +1 -1
  824. package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.js.map +1 -1
  825. package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs.map +1 -1
  826. package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js.map +1 -1
  827. package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs.map +1 -1
  828. package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js.map +1 -1
  829. package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs.map +1 -1
  830. package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.js.map +1 -1
  831. package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs.map +1 -1
  832. package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.js.map +1 -1
  833. package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs.map +1 -1
  834. package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.js.map +1 -1
  835. package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.cjs +4 -1
  836. package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.cjs.map +1 -1
  837. package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.js +4 -1
  838. package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.js.map +1 -1
  839. package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.cjs.map +1 -1
  840. package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.js.map +1 -1
  841. package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.cjs.map +1 -1
  842. package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.js.map +1 -1
  843. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs +83 -0
  844. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -0
  845. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js +83 -0
  846. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -0
  847. package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
  848. package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
  849. package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.cjs.map +1 -1
  850. package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.js.map +1 -1
  851. package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.cjs.map +1 -1
  852. package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.js.map +1 -1
  853. package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.cjs.map +1 -1
  854. package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.js.map +1 -1
  855. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs +52 -0
  856. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -0
  857. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js +52 -0
  858. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -0
  859. package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs.map +1 -1
  860. package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.js.map +1 -1
  861. package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs.map +1 -1
  862. package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js.map +1 -1
  863. package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs.map +1 -1
  864. package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.js.map +1 -1
  865. package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs.map +1 -1
  866. package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js.map +1 -1
  867. package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs.map +1 -1
  868. package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js.map +1 -1
  869. package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs.map +1 -1
  870. package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js.map +1 -1
  871. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs +34 -0
  872. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -0
  873. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js +34 -0
  874. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -0
  875. package/dist/production/src/resolvers/query/IDPQueryResolver.cjs.map +1 -1
  876. package/dist/production/src/resolvers/query/IDPQueryResolver.js.map +1 -1
  877. package/dist/production/src/resolvers/query/MailTemplateQueryResolver.cjs.map +1 -1
  878. package/dist/production/src/resolvers/query/MailTemplateQueryResolver.js.map +1 -1
  879. package/dist/production/src/resolvers/query/MeQueryResolver.cjs.map +1 -1
  880. package/dist/production/src/resolvers/query/MeQueryResolver.js.map +1 -1
  881. package/dist/production/src/resolvers/query/PersonQueryResolver.cjs.map +1 -1
  882. package/dist/production/src/resolvers/query/PersonQueryResolver.js.map +1 -1
  883. package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.cjs.map +1 -1
  884. package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.js.map +1 -1
  885. package/dist/production/src/resolvers/query/ProjectQueryResolver.cjs.map +1 -1
  886. package/dist/production/src/resolvers/query/ProjectQueryResolver.js.map +1 -1
  887. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.cjs +1 -0
  888. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.cjs.map +1 -1
  889. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.js +1 -0
  890. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.js.map +1 -1
  891. package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.cjs.map +1 -1
  892. package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.js.map +1 -1
  893. package/dist/production/src/resolvers/types/IdentityTypeResolver.cjs.map +1 -1
  894. package/dist/production/src/resolvers/types/IdentityTypeResolver.js.map +1 -1
  895. package/dist/production/src/resolvers/types/ProjectTypeResolver.cjs.map +1 -1
  896. package/dist/production/src/resolvers/types/ProjectTypeResolver.js.map +1 -1
  897. package/dist/production/src/schema/tenant.graphql.cjs +162 -10
  898. package/dist/production/src/schema/tenant.graphql.cjs.map +1 -1
  899. package/dist/production/src/schema/tenant.graphql.js +162 -10
  900. package/dist/production/src/schema/tenant.graphql.js.map +1 -1
  901. package/dist/production/src/utils/Mailer.cjs.map +1 -1
  902. package/dist/production/src/utils/Mailer.js.map +1 -1
  903. package/dist/production/src/utils/TemplateRenderer.cjs.map +1 -1
  904. package/dist/production/src/utils/TemplateRenderer.js.map +1 -1
  905. package/dist/production/src/utils/array.cjs.map +1 -1
  906. package/dist/production/src/utils/array.js.map +1 -1
  907. package/dist/production/src/utils/batchQuery.cjs.map +1 -1
  908. package/dist/production/src/utils/batchQuery.js.map +1 -1
  909. package/dist/tests/cases/integration/mocked/sql/{createPasswordResetSql.d.ts → createPersonTokenSql.d.ts} +3 -2
  910. package/dist/tests/cases/integration/mocked/sql/createPersonTokenSql.d.ts.map +1 -0
  911. package/dist/tests/cases/integration/mocked/sql/getPersonByEmailSql.d.ts.map +1 -1
  912. package/dist/tests/src/IdPMock.d.ts +2 -2
  913. package/dist/tests/src/IdPMock.d.ts.map +1 -1
  914. package/dist/tests/src/mailer.d.ts.map +1 -1
  915. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  916. package/dist/types/TenantContainer.d.ts +18 -0
  917. package/dist/types/TenantContainer.d.ts.map +1 -1
  918. package/dist/types/migrations/2024-08-26-120000-passwordless.d.ts +3 -0
  919. package/dist/types/migrations/2024-08-26-120000-passwordless.d.ts.map +1 -0
  920. package/dist/types/migrations/runner.d.ts.map +1 -1
  921. package/dist/types/migrations/snapshot.d.ts.map +1 -1
  922. package/dist/types/model/authorization/PermissionActions.d.ts +25 -0
  923. package/dist/types/model/authorization/PermissionActions.d.ts.map +1 -1
  924. package/dist/types/model/authorization/PermissionsFactory.d.ts.map +1 -1
  925. package/dist/types/model/commands/configuration/UpdateConfigurationCommand.d.ts +8 -0
  926. package/dist/types/model/commands/configuration/UpdateConfigurationCommand.d.ts.map +1 -0
  927. package/dist/types/model/commands/configuration/index.d.ts +2 -0
  928. package/dist/types/model/commands/configuration/index.d.ts.map +1 -0
  929. package/dist/types/model/commands/index.d.ts +2 -2
  930. package/dist/types/model/commands/index.d.ts.map +1 -1
  931. package/dist/types/model/commands/person/CreatePersonCommand.d.ts.map +1 -1
  932. package/dist/types/model/commands/person/TogglePersonPasswordlessCommand.d.ts +8 -0
  933. package/dist/types/model/commands/person/TogglePersonPasswordlessCommand.d.ts.map +1 -0
  934. package/dist/types/model/commands/person/index.d.ts +1 -0
  935. package/dist/types/model/commands/person/index.d.ts.map +1 -1
  936. package/dist/types/model/commands/personToken/ActivateOtpCommand.d.ts +8 -0
  937. package/dist/types/model/commands/personToken/ActivateOtpCommand.d.ts.map +1 -0
  938. package/dist/types/model/commands/personToken/CreatePersonTokenCommand.d.ts +19 -0
  939. package/dist/types/model/commands/personToken/CreatePersonTokenCommand.d.ts.map +1 -0
  940. package/dist/types/model/commands/personToken/IncreaseOtpAttemptCommand.d.ts +7 -0
  941. package/dist/types/model/commands/personToken/IncreaseOtpAttemptCommand.d.ts.map +1 -0
  942. package/dist/types/model/commands/personToken/InvalidateTokenCommand.d.ts +7 -0
  943. package/dist/types/model/commands/personToken/InvalidateTokenCommand.d.ts.map +1 -0
  944. package/dist/types/model/commands/{passwordReset → personToken}/ResetPasswordCommand.d.ts +3 -2
  945. package/dist/types/model/commands/personToken/ResetPasswordCommand.d.ts.map +1 -0
  946. package/dist/types/model/commands/personToken/SavePersonTokenCommand.d.ts +19 -0
  947. package/dist/types/model/commands/personToken/SavePersonTokenCommand.d.ts.map +1 -0
  948. package/dist/types/model/commands/personToken/index.d.ts +7 -0
  949. package/dist/types/model/commands/personToken/index.d.ts.map +1 -0
  950. package/dist/types/model/consts/expirations.d.ts +3 -0
  951. package/dist/types/model/consts/expirations.d.ts.map +1 -0
  952. package/dist/types/model/mailing/UserMailer.d.ts +10 -0
  953. package/dist/types/model/mailing/UserMailer.d.ts.map +1 -1
  954. package/dist/types/model/mailing/templates/PasswordlessSignIn.mustache.d.ts +3 -0
  955. package/dist/types/model/mailing/templates/PasswordlessSignIn.mustache.d.ts.map +1 -0
  956. package/dist/types/model/mailing/type.d.ts +2 -1
  957. package/dist/types/model/mailing/type.d.ts.map +1 -1
  958. package/dist/types/model/queries/configuration/ConfigurationQuery.d.ts +6 -0
  959. package/dist/types/model/queries/configuration/ConfigurationQuery.d.ts.map +1 -0
  960. package/dist/types/model/queries/configuration/index.d.ts +2 -0
  961. package/dist/types/model/queries/configuration/index.d.ts.map +1 -0
  962. package/dist/types/model/queries/index.d.ts +1 -0
  963. package/dist/types/model/queries/index.d.ts.map +1 -1
  964. package/dist/types/model/queries/person/PersonQueryBuilderFactory.d.ts.map +1 -1
  965. package/dist/types/model/queries/person/types.d.ts +1 -0
  966. package/dist/types/model/queries/person/types.d.ts.map +1 -1
  967. package/dist/types/model/queries/personToken/PersonTokenQuery.d.ts +12 -0
  968. package/dist/types/model/queries/personToken/PersonTokenQuery.d.ts.map +1 -0
  969. package/dist/types/model/service/ConfigurationManager.d.ts +9 -0
  970. package/dist/types/model/service/ConfigurationManager.d.ts.map +1 -0
  971. package/dist/types/model/service/IDPSignInManager.d.ts +1 -0
  972. package/dist/types/model/service/IDPSignInManager.d.ts.map +1 -1
  973. package/dist/types/model/service/InviteManager.d.ts.map +1 -1
  974. package/dist/types/model/service/PasswordResetManager.d.ts +1 -1
  975. package/dist/types/model/service/PasswordResetManager.d.ts.map +1 -1
  976. package/dist/types/model/service/PasswordlessSignInManager.d.ts +54 -0
  977. package/dist/types/model/service/PasswordlessSignInManager.d.ts.map +1 -0
  978. package/dist/types/model/service/PersonManager.d.ts +1 -0
  979. package/dist/types/model/service/PersonManager.d.ts.map +1 -1
  980. package/dist/types/model/service/PersonTokenManager.d.ts +3 -0
  981. package/dist/types/model/service/PersonTokenManager.d.ts.map +1 -0
  982. package/dist/types/model/service/helpers/getPreferredProject.d.ts +3 -0
  983. package/dist/types/model/service/helpers/getPreferredProject.d.ts.map +1 -0
  984. package/dist/types/model/service/idp/IdentityProviderHandler.d.ts +3 -3
  985. package/dist/types/model/service/idp/IdentityProviderHandler.d.ts.map +1 -1
  986. package/dist/types/model/service/idp/providers/AppleProvider.d.ts +10 -2
  987. package/dist/types/model/service/idp/providers/AppleProvider.d.ts.map +1 -1
  988. package/dist/types/model/service/idp/providers/FacebookProvider.d.ts +10 -2
  989. package/dist/types/model/service/idp/providers/FacebookProvider.d.ts.map +1 -1
  990. package/dist/types/model/service/idp/providers/OIDCHelpers.d.ts +4 -4
  991. package/dist/types/model/service/idp/providers/OIDCHelpers.d.ts.map +1 -1
  992. package/dist/types/model/service/idp/providers/OIDCProvider.d.ts +6 -2
  993. package/dist/types/model/service/idp/providers/OIDCProvider.d.ts.map +1 -1
  994. package/dist/types/model/service/idp/providers/OIDCTypes.d.ts +21 -5
  995. package/dist/types/model/service/idp/providers/OIDCTypes.d.ts.map +1 -1
  996. package/dist/types/model/type/PersonToken.d.ts +16 -0
  997. package/dist/types/model/type/PersonToken.d.ts.map +1 -0
  998. package/dist/types/model/type/index.d.ts +1 -0
  999. package/dist/types/model/type/index.d.ts.map +1 -1
  1000. package/dist/types/model/utils/tokenUtils.d.ts +8 -0
  1001. package/dist/types/model/utils/tokenUtils.d.ts.map +1 -1
  1002. package/dist/types/resolvers/ResolverFactory.d.ts +8 -0
  1003. package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
  1004. package/dist/types/resolvers/mutation/configuration/ConfigurationMutationResolver.d.ts +9 -0
  1005. package/dist/types/resolvers/mutation/configuration/ConfigurationMutationResolver.d.ts.map +1 -0
  1006. package/dist/types/resolvers/mutation/person/IDPMutationResolver.d.ts.map +1 -1
  1007. package/dist/types/resolvers/mutation/person/PasswordlessMutationResolver.d.ts +13 -0
  1008. package/dist/types/resolvers/mutation/person/PasswordlessMutationResolver.d.ts.map +1 -0
  1009. package/dist/types/resolvers/mutation/person/ResetPasswordMutationResolver.d.ts.map +1 -1
  1010. package/dist/types/resolvers/mutation/person/TogglePasswordlessMutationResolver.d.ts +13 -0
  1011. package/dist/types/resolvers/mutation/person/TogglePasswordlessMutationResolver.d.ts.map +1 -0
  1012. package/dist/types/resolvers/query/ConfigurationQueryResolver.d.ts +9 -0
  1013. package/dist/types/resolvers/query/ConfigurationQueryResolver.d.ts.map +1 -0
  1014. package/dist/types/resolvers/responseHelpers/PersonResponseFactory.d.ts.map +1 -1
  1015. package/dist/types/resolvers/types/ProjectTypeResolver.d.ts +3 -3
  1016. package/dist/types/schema/index.d.ts +362 -38
  1017. package/dist/types/schema/index.d.ts.map +1 -1
  1018. package/dist/types/schema/tenant.graphql.d.ts.map +1 -1
  1019. package/dist/types/tsconfig.tsbuildinfo +1 -1
  1020. package/dist/types/utils/batchQuery.d.ts.map +1 -1
  1021. package/{graphql-tenant.codegen.yml → graphql.codegen.yml} +1 -1
  1022. package/package.json +23 -27
  1023. package/src/TenantContainer.ts +18 -0
  1024. package/src/migrations/2024-08-26-120000-passwordless.ts +31 -0
  1025. package/src/migrations/runner.ts +2 -0
  1026. package/src/migrations/snapshot-template-end.txt +3 -0
  1027. package/src/migrations/snapshot.ts +33 -5
  1028. package/src/model/authorization/PermissionActions.ts +7 -0
  1029. package/src/model/authorization/PermissionsFactory.ts +5 -0
  1030. package/src/model/commands/configuration/UpdateConfigurationCommand.ts +26 -0
  1031. package/src/model/commands/configuration/index.ts +1 -0
  1032. package/src/model/commands/index.ts +2 -2
  1033. package/src/model/commands/person/CreatePersonCommand.ts +1 -0
  1034. package/src/model/commands/person/TogglePersonPasswordlessCommand.ts +18 -0
  1035. package/src/model/commands/person/index.ts +1 -0
  1036. package/src/model/commands/personToken/ActivateOtpCommand.ts +24 -0
  1037. package/src/model/commands/personToken/CreatePersonTokenCommand.ts +42 -0
  1038. package/src/model/commands/personToken/IncreaseOtpAttemptCommand.ts +23 -0
  1039. package/src/model/commands/personToken/InvalidateTokenCommand.ts +22 -0
  1040. package/src/model/commands/personToken/ResetPasswordCommand.ts +28 -0
  1041. package/src/model/commands/personToken/SavePersonTokenCommand.ts +42 -0
  1042. package/src/model/commands/personToken/index.ts +6 -0
  1043. package/src/model/consts/expirations.ts +2 -0
  1044. package/src/model/mailing/UserMailer.ts +14 -0
  1045. package/src/model/mailing/templates/PasswordlessSignIn.mustache.ts +15 -0
  1046. package/src/model/mailing/type.ts +3 -0
  1047. package/src/model/queries/configuration/ConfigurationQuery.ts +30 -0
  1048. package/src/model/queries/configuration/index.ts +1 -0
  1049. package/src/model/queries/index.ts +1 -0
  1050. package/src/model/queries/person/PersonQueryBuilderFactory.ts +1 -0
  1051. package/src/model/queries/person/types.ts +1 -0
  1052. package/src/model/queries/personToken/PersonTokenQuery.ts +35 -0
  1053. package/src/model/service/ConfigurationManager.ts +22 -0
  1054. package/src/model/service/IDPSignInManager.ts +7 -6
  1055. package/src/model/service/InviteManager.ts +5 -6
  1056. package/src/model/service/OtpAuthenticator.ts +1 -1
  1057. package/src/model/service/PasswordResetManager.ts +4 -10
  1058. package/src/model/service/PasswordlessSignInManager.ts +190 -0
  1059. package/src/model/service/PersonManager.ts +6 -0
  1060. package/src/model/service/PersonTokenManager.ts +2 -0
  1061. package/src/model/service/helpers/getPreferredProject.ts +11 -0
  1062. package/src/model/service/idp/IdentityProviderHandler.ts +3 -3
  1063. package/src/model/service/idp/providers/AppleProvider.ts +3 -3
  1064. package/src/model/service/idp/providers/FacebookProvider.ts +3 -3
  1065. package/src/model/service/idp/providers/OIDCHelpers.ts +11 -6
  1066. package/src/model/service/idp/providers/OIDCProvider.ts +10 -4
  1067. package/src/model/service/idp/providers/OIDCTypes.ts +5 -1
  1068. package/src/model/type/PersonToken.ts +21 -0
  1069. package/src/model/type/index.ts +1 -0
  1070. package/src/model/utils/tokenUtils.ts +47 -0
  1071. package/src/resolvers/ResolverFactory.ts +19 -0
  1072. package/src/resolvers/mutation/configuration/ConfigurationMutationResolver.ts +29 -0
  1073. package/src/resolvers/mutation/person/IDPMutationResolver.ts +4 -1
  1074. package/src/resolvers/mutation/person/PasswordlessMutationResolver.ts +81 -0
  1075. package/src/resolvers/mutation/person/ResetPasswordMutationResolver.ts +1 -10
  1076. package/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.ts +44 -0
  1077. package/src/resolvers/query/ConfigurationQueryResolver.ts +21 -0
  1078. package/src/resolvers/responseHelpers/PersonResponseFactory.ts +1 -0
  1079. package/src/resolvers/types/ProjectTypeResolver.ts +3 -3
  1080. package/src/schema/index.ts +362 -35
  1081. package/src/schema/tenant.graphql.ts +162 -10
  1082. package/tests/cases/integration/mocked/addProjectMemberMutation.test.ts +1 -1
  1083. package/tests/cases/integration/mocked/changeMyPasswordMutation.test.ts +2 -2
  1084. package/tests/cases/integration/mocked/changeMyProfileMutation.test.ts +2 -2
  1085. package/tests/cases/integration/mocked/changePasswordMutation.test.ts +1 -1
  1086. package/tests/cases/integration/mocked/changeProfileMutation.test.ts +2 -2
  1087. package/tests/cases/integration/mocked/confirmOtpMutation.test.ts +1 -1
  1088. package/tests/cases/integration/mocked/createApiKeyMutation.test.ts +1 -1
  1089. package/tests/cases/integration/mocked/createSessionKeyMutation.test.ts +1 -1
  1090. package/tests/cases/integration/mocked/disableApiKeyMutation.ts +1 -1
  1091. package/tests/cases/integration/mocked/inviteMutations.test.ts +3 -3
  1092. package/tests/cases/integration/mocked/listProjectMembersQuery.test.ts +1 -1
  1093. package/tests/cases/integration/mocked/personByIdQuery.test.ts +1 -1
  1094. package/tests/cases/integration/mocked/prepareOtpMutation.test.ts +3 -3
  1095. package/tests/cases/integration/mocked/removeProjectMemberMutation.test.ts +1 -1
  1096. package/tests/cases/integration/mocked/signInIdpMutation.test.ts +1 -1
  1097. package/tests/cases/integration/mocked/signInMutation.test.ts +1 -1
  1098. package/tests/cases/integration/mocked/signOutMutation.test.ts +1 -1
  1099. package/tests/cases/integration/mocked/signUpMutation.test.ts +1 -1
  1100. package/tests/cases/integration/mocked/sql/{createPasswordResetSql.ts → createPersonTokenSql.ts} +5 -3
  1101. package/tests/cases/integration/mocked/sql/getPersonByEmailSql.ts +2 -1
  1102. package/tests/cases/integration/mocked/sql/getPersonByIdSql.ts +1 -1
  1103. package/tests/cases/integration/mocked/sql/getPersonByIdentity.ts +1 -1
  1104. package/tests/cases/integration/mocked/sql/getPersonByIdpSql.ts +1 -1
  1105. package/tests/cases/integration/mocked/updateProjectMemberMutation.test.ts +1 -1
  1106. package/tests/cases/migrations/2020-06-08-134000-tenant-credentials.test.ts +5 -3
  1107. package/tests/cases/unit/authorization/membershipAwareAccessNode.test.ts +9 -9
  1108. package/tests/cases/unit/authorization/membershipMatcher.test.ts +10 -10
  1109. package/tests/src/IdPMock.ts +2 -2
  1110. package/tests/src/mailer.ts +3 -4
  1111. package/tests/src/testGraphql.ts +2 -2
  1112. package/dist/development/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.cjs +0 -30
  1113. package/dist/development/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.cjs.map +0 -1
  1114. package/dist/development/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.js +0 -30
  1115. package/dist/development/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.js.map +0 -1
  1116. package/dist/development/src/model/commands/passwordReset/ResetPasswordCommand.cjs +0 -38
  1117. package/dist/development/src/model/commands/passwordReset/ResetPasswordCommand.cjs.map +0 -1
  1118. package/dist/development/src/model/commands/passwordReset/ResetPasswordCommand.js +0 -38
  1119. package/dist/development/src/model/commands/passwordReset/ResetPasswordCommand.js.map +0 -1
  1120. package/dist/development/src/model/commands/passwordReset/SavePasswordResetRequestCommand.cjs +0 -24
  1121. package/dist/development/src/model/commands/passwordReset/SavePasswordResetRequestCommand.cjs.map +0 -1
  1122. package/dist/development/src/model/commands/passwordReset/SavePasswordResetRequestCommand.js +0 -24
  1123. package/dist/development/src/model/commands/passwordReset/SavePasswordResetRequestCommand.js.map +0 -1
  1124. package/dist/production/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.cjs +0 -30
  1125. package/dist/production/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.cjs.map +0 -1
  1126. package/dist/production/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.js +0 -30
  1127. package/dist/production/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.js.map +0 -1
  1128. package/dist/production/src/model/commands/passwordReset/ResetPasswordCommand.cjs +0 -38
  1129. package/dist/production/src/model/commands/passwordReset/ResetPasswordCommand.cjs.map +0 -1
  1130. package/dist/production/src/model/commands/passwordReset/ResetPasswordCommand.js +0 -38
  1131. package/dist/production/src/model/commands/passwordReset/ResetPasswordCommand.js.map +0 -1
  1132. package/dist/production/src/model/commands/passwordReset/SavePasswordResetRequestCommand.cjs +0 -24
  1133. package/dist/production/src/model/commands/passwordReset/SavePasswordResetRequestCommand.cjs.map +0 -1
  1134. package/dist/production/src/model/commands/passwordReset/SavePasswordResetRequestCommand.js +0 -24
  1135. package/dist/production/src/model/commands/passwordReset/SavePasswordResetRequestCommand.js.map +0 -1
  1136. package/dist/tests/cases/integration/mocked/sql/createPasswordResetSql.d.ts.map +0 -1
  1137. package/dist/tests/src/testTenantDb.d.ts +0 -31
  1138. package/dist/tests/src/testTenantDb.d.ts.map +0 -1
  1139. package/dist/types/model/commands/passwordReset/CreatePasswordResetRequestCommand.d.ts +0 -12
  1140. package/dist/types/model/commands/passwordReset/CreatePasswordResetRequestCommand.d.ts.map +0 -1
  1141. package/dist/types/model/commands/passwordReset/ResetPasswordCommand.d.ts.map +0 -1
  1142. package/dist/types/model/commands/passwordReset/SavePasswordResetRequestCommand.d.ts +0 -10
  1143. package/dist/types/model/commands/passwordReset/SavePasswordResetRequestCommand.d.ts.map +0 -1
  1144. package/dist/types/model/commands/passwordReset/index.d.ts +0 -4
  1145. package/dist/types/model/commands/passwordReset/index.d.ts.map +0 -1
  1146. package/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.ts +0 -25
  1147. package/src/model/commands/passwordReset/ResetPasswordCommand.ts +0 -57
  1148. package/src/model/commands/passwordReset/SavePasswordResetRequestCommand.ts +0 -28
  1149. package/src/model/commands/passwordReset/index.ts +0 -3
  1150. package/tests/src/testTenantDb.ts +0 -202
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ const sql = `
3
+ CREATE TYPE CONFIG_SINGLETON AS ENUM ('singleton');
4
+ CREATE TYPE CONFIG_POLICY AS ENUM ('always', 'never', 'optIn', 'optOut');
5
+ CREATE TABLE "config"
6
+ (
7
+ id CONFIG_SINGLETON PRIMARY KEY DEFAULT 'singleton',
8
+ passwordless_enabled CONFIG_POLICY NOT NULL DEFAULT 'never',
9
+ passwordless_url TEXT,
10
+ passwordless_expiration_minutes INTEGER NOT NULL DEFAULT 5
11
+ );
12
+ INSERT INTO "config" (id)
13
+ VALUES (DEFAULT);
14
+
15
+ ALTER TABLE person_password_reset
16
+ RENAME TO person_token;
17
+ CREATE TYPE PERSON_TOKEN_TYPE AS ENUM ('password_reset', 'passwordless');
18
+ ALTER TABLE person_token
19
+ ADD COLUMN type PERSON_TOKEN_TYPE NOT NULL DEFAULT 'password_reset',
20
+ ADD COLUMN otp_hash TEXT DEFAULT NULL,
21
+ ADD COLUMN otp_attempts INTEGER NOT NULL DEFAULT 0;
22
+
23
+ ALTER TABLE person
24
+ ADD COLUMN passwordless_enabled BOOLEAN DEFAULT NULL;
25
+
26
+ `;
27
+ async function _20240826120000passwordless(builder) {
28
+ builder.sql(sql);
29
+ }
30
+ module.exports = _20240826120000passwordless;
31
+ //# sourceMappingURL=2024-08-26-120000-passwordless.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-08-26-120000-passwordless.cjs","sources":["../../../../../packages/engine-tenant-api/src/migrations/2024-08-26-120000-passwordless.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE TYPE CONFIG_SINGLETON AS ENUM ('singleton');\nCREATE TYPE CONFIG_POLICY AS ENUM ('always', 'never', 'optIn', 'optOut');\nCREATE TABLE \"config\"\n(\n\tid CONFIG_SINGLETON PRIMARY KEY DEFAULT 'singleton',\n\tpasswordless_enabled CONFIG_POLICY NOT NULL DEFAULT 'never',\n\tpasswordless_url TEXT,\n\tpasswordless_expiration_minutes INTEGER NOT NULL DEFAULT 5\n);\nINSERT INTO \"config\" (id)\nVALUES (DEFAULT);\n\nALTER TABLE person_password_reset\n\tRENAME TO person_token;\nCREATE TYPE PERSON_TOKEN_TYPE AS ENUM ('password_reset', 'passwordless');\nALTER TABLE person_token\n\tADD COLUMN type PERSON_TOKEN_TYPE NOT NULL DEFAULT 'password_reset',\n\tADD COLUMN otp_hash TEXT DEFAULT NULL,\n\tADD COLUMN otp_attempts INTEGER NOT NULL DEFAULT 0;\n\nALTER TABLE person\n\tADD COLUMN passwordless_enabled BOOLEAN DEFAULT NULL;\n\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BZ,eAAA,4BAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -0,0 +1,32 @@
1
+ const sql = `
2
+ CREATE TYPE CONFIG_SINGLETON AS ENUM ('singleton');
3
+ CREATE TYPE CONFIG_POLICY AS ENUM ('always', 'never', 'optIn', 'optOut');
4
+ CREATE TABLE "config"
5
+ (
6
+ id CONFIG_SINGLETON PRIMARY KEY DEFAULT 'singleton',
7
+ passwordless_enabled CONFIG_POLICY NOT NULL DEFAULT 'never',
8
+ passwordless_url TEXT,
9
+ passwordless_expiration_minutes INTEGER NOT NULL DEFAULT 5
10
+ );
11
+ INSERT INTO "config" (id)
12
+ VALUES (DEFAULT);
13
+
14
+ ALTER TABLE person_password_reset
15
+ RENAME TO person_token;
16
+ CREATE TYPE PERSON_TOKEN_TYPE AS ENUM ('password_reset', 'passwordless');
17
+ ALTER TABLE person_token
18
+ ADD COLUMN type PERSON_TOKEN_TYPE NOT NULL DEFAULT 'password_reset',
19
+ ADD COLUMN otp_hash TEXT DEFAULT NULL,
20
+ ADD COLUMN otp_attempts INTEGER NOT NULL DEFAULT 0;
21
+
22
+ ALTER TABLE person
23
+ ADD COLUMN passwordless_enabled BOOLEAN DEFAULT NULL;
24
+
25
+ `;
26
+ async function _20240826120000passwordless(builder) {
27
+ builder.sql(sql);
28
+ }
29
+ export {
30
+ _20240826120000passwordless as default
31
+ };
32
+ //# sourceMappingURL=2024-08-26-120000-passwordless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-08-26-120000-passwordless.js","sources":["../../../../../packages/engine-tenant-api/src/migrations/2024-08-26-120000-passwordless.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE TYPE CONFIG_SINGLETON AS ENUM ('singleton');\nCREATE TYPE CONFIG_POLICY AS ENUM ('always', 'never', 'optIn', 'optOut');\nCREATE TABLE \"config\"\n(\n\tid CONFIG_SINGLETON PRIMARY KEY DEFAULT 'singleton',\n\tpasswordless_enabled CONFIG_POLICY NOT NULL DEFAULT 'never',\n\tpasswordless_url TEXT,\n\tpasswordless_expiration_minutes INTEGER NOT NULL DEFAULT 5\n);\nINSERT INTO \"config\" (id)\nVALUES (DEFAULT);\n\nALTER TABLE person_password_reset\n\tRENAME TO person_token;\nCREATE TYPE PERSON_TOKEN_TYPE AS ENUM ('password_reset', 'passwordless');\nALTER TABLE person_token\n\tADD COLUMN type PERSON_TOKEN_TYPE NOT NULL DEFAULT 'password_reset',\n\tADD COLUMN otp_hash TEXT DEFAULT NULL,\n\tADD COLUMN otp_attempts INTEGER NOT NULL DEFAULT 0;\n\nALTER TABLE person\n\tADD COLUMN passwordless_enabled BOOLEAN DEFAULT NULL;\n\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BZ,eAAA,4BAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -38,6 +38,7 @@ const _20230120135500PersonEmailNormalize = require("./2023-01-20-135500-person-
38
38
  const _20230603104000PersonDisabled = require("./2023-06-03-104000-person-disabled.cjs");
39
39
  const _20230901165000IdpReturnConfig = require("./2023-09-01-165000-idp-return-config.cjs");
40
40
  const _20240620140000MailReply = require("./2024-06-20-140000-mail-reply.cjs");
41
+ const _20240826120000Passwordless = require("./2024-08-26-120000-passwordless.cjs");
41
42
  const snapshot = require("./snapshot.cjs");
42
43
  require("../model/authorization/PermissionActions.cjs");
43
44
  require("@contember/authorization");
@@ -92,7 +93,8 @@ const migrations = {
92
93
  "2023-01-20-135500-person-email-normalize": _20230120135500PersonEmailNormalize,
93
94
  "2023-06-03-104000-person-disabled": _20230603104000PersonDisabled,
94
95
  "2023-09-01-165000-idp-return-config": _20230901165000IdpReturnConfig,
95
- "2024-06-20-140000-mail-reply": _20240620140000MailReply
96
+ "2024-06-20-140000-mail-reply": _20240620140000MailReply,
97
+ "2024-08-26-120000-passwordless": _20240826120000Passwordless
96
98
  };
97
99
  class TenantMigrationsRunner {
98
100
  constructor(db, schema, tenantCredentials, providers) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.cjs","sources":["../../../../../packages/engine-tenant-api/src/migrations/runner.ts"],"sourcesContent":["import { Connection, createDatabaseIfNotExists, DatabaseConfig, EventManager } from '@contember/database'\nimport { TenantMigrationArgs } from './types'\nimport { MigrationsRunner as DbMigrationsRunner, SnapshotMigrationResolver } from '@contember/database-migrations'\nimport _20180802174310init from './2018-08-02-174310-init'\nimport _20180903140621identityproject from './2018-09-03-140621-identity-project'\nimport _20181026165450setupapikey from './2018-10-26-165450-setup-api-key'\nimport _20181026175155variables from './2018-10-26-175155-variables'\nimport _20190218110949projectslug from './2019-02-18-110949-project-slug'\nimport _20190218160155sessionexpiration from './2019-02-18-160155-session-expiration'\nimport _20190503163729apikeydisabledat from './2019-05-03-163729-api-key-disabled-at'\nimport _20190814153300projectslugunique from './2019-08-14-153300-project-slug-unique'\nimport _20190906111000membership from './2019-09-06-111000-membership'\nimport _20190906111001dropoldmember from './2019-09-06-111001-drop-old-member'\nimport _20200129idenitynote from './2020-01-29-idenity-note'\nimport _20200417fixpersonindex from './2020-04-17-fix-person-index'\nimport _20200501170000apikeyindex from './2020-05-01-170000-api-key-index'\nimport _20200608134000tenantcredentials from './2020-06-08-134000-tenant-credentials'\nimport _20200807110000personotp from './2020-08-07-110000-person-otp'\nimport _20200817162200mailtemplates from './2020-08-17-162200-mail-templates'\nimport _20200821143400personpasswordreset from './2020-08-21-143400-person-password-reset'\nimport _20200907094200identityprovider from './2020-09-07-094200-identity-provider'\nimport _20210328134000timestamp from './2021-03-28-134000-timestamp'\nimport _20210726105000projectconfig from './2021-07-26-105000-project-config'\nimport _20210726132000projectsecrets from './2021-07-26-132000-project-secrets'\nimport _20210727174000projectaliasindex from './2021-07-27-174000-project-alias-index'\nimport _20211124130000personpasswordnull from './2021-11-24-130000-person-password-null'\nimport _20211124161500mailtemplateprojectnull from './2021-11-24-161500-mail-template-project-null'\nimport _20220104144000personuniqueidentity from './2022-01-04-144000-person-unique-identity'\nimport _20220209111800fixcrypted from './2022-02-09-111800-fix-crypted'\nimport _20220211153000idpautosignup from './2022-02-11-153000-idp-auto-sign-up'\nimport _20220629105000personidp from './2022-06-29-105000-person-idp'\nimport _20220707135000personemailoptuniq from './2022-07-07-135000-person-email-opt-uniq'\nimport _20220707141000persondisplayname from './2022-07-07-141000-person-display-name'\nimport _20220714145000personloginoptions from './2022-07-14-145000-person-login-options'\nimport _20221108projectupdatenotification from './2022-11-08-project-update-notification'\nimport _20230120135500personemailnormalize from './2023-01-20-135500-person-email-normalize'\nimport _20230603104000persondisabled from './2023-06-03-104000-person-disabled'\nimport _20230901165000idpreturnconfig from './2023-09-01-165000-idp-return-config'\nimport _20240620140000mailreply from './2024-06-20-140000-mail-reply'\n\nimport snapshot from './snapshot'\nimport { computeTokenHash, Providers } from '../model'\nimport { Logger } from '@contember/logger'\n\nexport interface TenantCredentials {\n\tloginToken?: string\n\trootEmail?: string\n\trootToken?: string\n\trootTokenHash?: string\n\trootPassword?: string\n}\n\nconst migrations = {\n\t'2018-08-02-174310-init': _20180802174310init,\n\t'2018-09-03-140621-identity-project': _20180903140621identityproject,\n\t'2018-10-26-165450-setup-api-key': _20181026165450setupapikey,\n\t'2018-10-26-175155-variables': _20181026175155variables,\n\t'2019-02-18-110949-project-slug': _20190218110949projectslug,\n\t'2019-02-18-160155-session-expiration': _20190218160155sessionexpiration,\n\t'2019-05-03-163729-api-key-disabled-at': _20190503163729apikeydisabledat,\n\t'2019-08-14-153300-project-slug-unique': _20190814153300projectslugunique,\n\t'2019-09-06-111000-membership': _20190906111000membership,\n\t'2019-09-06-111001-drop-old-member': _20190906111001dropoldmember,\n\t'2020-01-29-idenity-note': _20200129idenitynote,\n\t'2020-04-17-fix-person-index': _20200417fixpersonindex,\n\t'2020-05-01-170000-api-key-index': _20200501170000apikeyindex,\n\t'2020-06-08-134000-tenant-credentials': _20200608134000tenantcredentials,\n\t'2020-08-07-110000-person-otp': _20200807110000personotp,\n\t'2020-08-17-162200-mail-templates': _20200817162200mailtemplates,\n\t'2020-08-21-143400-person-password-reset': _20200821143400personpasswordreset,\n\t'2020-09-07-094200-identity-provider': _20200907094200identityprovider,\n\t'2021-03-28-134000-timestamp': _20210328134000timestamp,\n\t'2021-07-26-105000-project-config': _20210726105000projectconfig,\n\t'2021-07-26-132000-project-secrets': _20210726132000projectsecrets,\n\t'2021-07-27-174000-project-alias-index': _20210727174000projectaliasindex,\n\t'2021-11-24-130000-person-password-null': _20211124130000personpasswordnull,\n\t'2021-11-24-161500-mail-template-project-null': _20211124161500mailtemplateprojectnull,\n\t'2022-01-04-144000-person-unique-identity': _20220104144000personuniqueidentity,\n\t'2022-02-09-111800-fix-crypted': _20220209111800fixcrypted,\n\t'2022-02-11-153000-idp-auto-sign-up': _20220211153000idpautosignup,\n\t'2022-06-29-105000-person-idp': _20220629105000personidp,\n\t'2022-07-07-135000-person-email-opt-uniq': _20220707135000personemailoptuniq,\n\t'2022-07-07-141000-person-display-name': _20220707141000persondisplayname,\n\t'2022-07-14-145000-person-login-options': _20220714145000personloginoptions,\n\t'2022-11-08-project-update-notification': _20221108projectupdatenotification,\n\t'2023-01-20-135500-person-email-normalize': _20230120135500personemailnormalize,\n\t'2023-06-03-104000-person-disabled': _20230603104000persondisabled,\n\t'2023-09-01-165000-idp-return-config': _20230901165000idpreturnconfig,\n\t'2024-06-20-140000-mail-reply': _20240620140000mailreply,\n}\n\nexport class TenantMigrationsRunner {\n\tconstructor(\n\t\tprivate readonly db: DatabaseConfig,\n\t\tprivate readonly schema: string,\n\t\tprivate readonly tenantCredentials: TenantCredentials,\n\t\tprivate readonly providers: Pick<Providers, 'bcrypt' | 'uuid'>,\n\t) {\n\t}\n\n\tpublic async run(logger: Logger): Promise<{ name: string }[]> {\n\t\tawait createDatabaseIfNotExists(this.db, message => typeof message === 'string' ? logger.warn(message) : logger.error(message))\n\t\tconst connection = Connection.createSingle(this.db, err => logger.error(err))\n\t\tconst result = await connection.scope(async connection => {\n\t\t\tconst migrationsResolver = new SnapshotMigrationResolver(snapshot, migrations)\n\n\t\t\tconst innerRunner = new DbMigrationsRunner<TenantMigrationArgs>(connection, this.schema, migrationsResolver)\n\t\t\treturn await innerRunner.migrate(message => logger.warn(message), {\n\t\t\t\tgetCredentials: async () => ({\n\t\t\t\t\tloginTokenHash: this.tenantCredentials.loginToken ? computeTokenHash(this.tenantCredentials.loginToken) : undefined,\n\t\t\t\t\trootTokenHash: this.tenantCredentials.rootTokenHash\n\t\t\t\t\t\t?? (this.tenantCredentials.rootToken ? computeTokenHash(this.tenantCredentials.rootToken) : undefined),\n\t\t\t\t\trootEmail: this.tenantCredentials.rootEmail,\n\t\t\t\t\trootPasswordBcrypted: this.tenantCredentials.rootPassword ? await this.providers.bcrypt(this.tenantCredentials.rootPassword) : undefined,\n\t\t\t\t}),\n\t\t\t\tproviders: this.providers,\n\t\t\t})\n\t\t})\n\t\tawait connection.end()\n\t\treturn result\n\t}\n}\n"],"names":["_20180802174310init","_20180903140621identityproject","_20181026165450setupapikey","_20181026175155variables","_20190218110949projectslug","_20190218160155sessionexpiration","_20190503163729apikeydisabledat","_20190814153300projectslugunique","_20190906111000membership","_20190906111001dropoldmember","_20200129idenitynote","_20200417fixpersonindex","_20200501170000apikeyindex","_20200608134000tenantcredentials","_20200807110000personotp","_20200817162200mailtemplates","_20200821143400personpasswordreset","_20200907094200identityprovider","_20210328134000timestamp","_20210726105000projectconfig","_20210726132000projectsecrets","_20210727174000projectaliasindex","_20211124130000personpasswordnull","_20211124161500mailtemplateprojectnull","_20220104144000personuniqueidentity","_20220209111800fixcrypted","_20220211153000idpautosignup","_20220629105000personidp","_20220707135000personemailoptuniq","_20220707141000persondisplayname","_20220714145000personloginoptions","_20221108projectupdatenotification","_20230120135500personemailnormalize","_20230603104000persondisabled","_20230901165000idpreturnconfig","_20240620140000mailreply","createDatabaseIfNotExists","Connection","connection","SnapshotMigrationResolver","DbMigrationsRunner","computeTokenHash"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,MAAM,aAAa;AAAA,EAClB,0BAA0BA;AAAAA,EAC1B,sCAAsCC;AAAAA,EACtC,mCAAmCC;AAAAA,EACnC,+BAA+BC;AAAAA,EAC/B,kCAAkCC;AAAAA,EAClC,wCAAwCC;AAAAA,EACxC,yCAAyCC;AAAAA,EACzC,yCAAyCC;AAAAA,EACzC,gCAAgCC;AAAAA,EAChC,qCAAqCC;AAAAA,EACrC,2BAA2BC;AAAAA,EAC3B,+BAA+BC;AAAAA,EAC/B,mCAAmCC;AAAAA,EACnC,wCAAwCC;AAAAA,EACxC,gCAAgCC;AAAAA,EAChC,oCAAoCC;AAAAA,EACpC,2CAA2CC;AAAAA,EAC3C,uCAAuCC;AAAAA,EACvC,+BAA+BC;AAAAA,EAC/B,oCAAoCC;AAAAA,EACpC,qCAAqCC;AAAAA,EACrC,yCAAyCC;AAAAA,EACzC,0CAA0CC;AAAAA,EAC1C,gDAAgDC;AAAAA,EAChD,4CAA4CC;AAAAA,EAC5C,iCAAiCC;AAAAA,EACjC,sCAAsCC;AAAAA,EACtC,gCAAgCC;AAAAA,EAChC,2CAA2CC;AAAAA,EAC3C,yCAAyCC;AAAAA,EACzC,0CAA0CC;AAAAA,EAC1C,0CAA0CC;AAAAA,EAC1C,4CAA4CC;AAAAA,EAC5C,qCAAqCC;AAAAA,EACrC,uCAAuCC;AAAAA,EACvC,gCAAgCC;AACjC;AAEO,MAAM,uBAAuB;AAAA,EACnC,YACkB,IACA,QACA,mBACA,WAChB;AAJgB,SAAA,KAAA;AACA,SAAA,SAAA;AACA,SAAA,oBAAA;AACA,SAAA,YAAA;AAAA,EAElB;AAAA,EAEA,MAAa,IAAI,QAA6C;AAC7D,UAAMC,SAAAA,0BAA0B,KAAK,IAAI,CAAA,YAAW,OAAO,YAAY,WAAW,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,OAAO,CAAC;AACxH,UAAA,aAAaC,SAAAA,WAAW,aAAa,KAAK,IAAI,CAAO,QAAA,OAAO,MAAM,GAAG,CAAC;AAC5E,UAAM,SAAS,MAAM,WAAW,MAAM,OAAMC,gBAAc;AACzD,YAAM,qBAAqB,IAAIC,mBAAAA,0BAA0B,UAAU,UAAU;AAE7E,YAAM,cAAc,IAAIC,oCAAwCF,aAAY,KAAK,QAAQ,kBAAkB;AAC3G,aAAO,MAAM,YAAY,QAAQ,aAAW,OAAO,KAAK,OAAO,GAAG;AAAA,QACjE,gBAAgB,aAAa;AAAA,UAC5B,gBAAgB,KAAK,kBAAkB,aAAaG,WAAAA,iBAAiB,KAAK,kBAAkB,UAAU,IAAI;AAAA,UAC1G,eAAe,KAAK,kBAAkB,kBACjC,KAAK,kBAAkB,YAAYA,WAAAA,iBAAiB,KAAK,kBAAkB,SAAS,IAAI;AAAA,UAC7F,WAAW,KAAK,kBAAkB;AAAA,UAClC,sBAAsB,KAAK,kBAAkB,eAAe,MAAM,KAAK,UAAU,OAAO,KAAK,kBAAkB,YAAY,IAAI;AAAA,QAAA;AAAA,QAEhI,WAAW,KAAK;AAAA,MAAA,CAChB;AAAA,IAAA,CACD;AACD,UAAM,WAAW;AACV,WAAA;AAAA,EACR;AACD;;"}
1
+ {"version":3,"file":"runner.cjs","sources":["../../../../../packages/engine-tenant-api/src/migrations/runner.ts"],"sourcesContent":["import { Connection, createDatabaseIfNotExists, DatabaseConfig, EventManager } from '@contember/database'\nimport { TenantMigrationArgs } from './types'\nimport { MigrationsRunner as DbMigrationsRunner, SnapshotMigrationResolver } from '@contember/database-migrations'\nimport _20180802174310init from './2018-08-02-174310-init'\nimport _20180903140621identityproject from './2018-09-03-140621-identity-project'\nimport _20181026165450setupapikey from './2018-10-26-165450-setup-api-key'\nimport _20181026175155variables from './2018-10-26-175155-variables'\nimport _20190218110949projectslug from './2019-02-18-110949-project-slug'\nimport _20190218160155sessionexpiration from './2019-02-18-160155-session-expiration'\nimport _20190503163729apikeydisabledat from './2019-05-03-163729-api-key-disabled-at'\nimport _20190814153300projectslugunique from './2019-08-14-153300-project-slug-unique'\nimport _20190906111000membership from './2019-09-06-111000-membership'\nimport _20190906111001dropoldmember from './2019-09-06-111001-drop-old-member'\nimport _20200129idenitynote from './2020-01-29-idenity-note'\nimport _20200417fixpersonindex from './2020-04-17-fix-person-index'\nimport _20200501170000apikeyindex from './2020-05-01-170000-api-key-index'\nimport _20200608134000tenantcredentials from './2020-06-08-134000-tenant-credentials'\nimport _20200807110000personotp from './2020-08-07-110000-person-otp'\nimport _20200817162200mailtemplates from './2020-08-17-162200-mail-templates'\nimport _20200821143400personpasswordreset from './2020-08-21-143400-person-password-reset'\nimport _20200907094200identityprovider from './2020-09-07-094200-identity-provider'\nimport _20210328134000timestamp from './2021-03-28-134000-timestamp'\nimport _20210726105000projectconfig from './2021-07-26-105000-project-config'\nimport _20210726132000projectsecrets from './2021-07-26-132000-project-secrets'\nimport _20210727174000projectaliasindex from './2021-07-27-174000-project-alias-index'\nimport _20211124130000personpasswordnull from './2021-11-24-130000-person-password-null'\nimport _20211124161500mailtemplateprojectnull from './2021-11-24-161500-mail-template-project-null'\nimport _20220104144000personuniqueidentity from './2022-01-04-144000-person-unique-identity'\nimport _20220209111800fixcrypted from './2022-02-09-111800-fix-crypted'\nimport _20220211153000idpautosignup from './2022-02-11-153000-idp-auto-sign-up'\nimport _20220629105000personidp from './2022-06-29-105000-person-idp'\nimport _20220707135000personemailoptuniq from './2022-07-07-135000-person-email-opt-uniq'\nimport _20220707141000persondisplayname from './2022-07-07-141000-person-display-name'\nimport _20220714145000personloginoptions from './2022-07-14-145000-person-login-options'\nimport _20221108projectupdatenotification from './2022-11-08-project-update-notification'\nimport _20230120135500personemailnormalize from './2023-01-20-135500-person-email-normalize'\nimport _20230603104000persondisabled from './2023-06-03-104000-person-disabled'\nimport _20230901165000idpreturnconfig from './2023-09-01-165000-idp-return-config'\nimport _20240620140000mailreply from './2024-06-20-140000-mail-reply'\nimport _20240826120000passwordless from './2024-08-26-120000-passwordless'\n\nimport snapshot from './snapshot'\nimport { computeTokenHash, Providers } from '../model'\nimport { Logger } from '@contember/logger'\n\nexport interface TenantCredentials {\n\tloginToken?: string\n\trootEmail?: string\n\trootToken?: string\n\trootTokenHash?: string\n\trootPassword?: string\n}\n\nconst migrations = {\n\t'2018-08-02-174310-init': _20180802174310init,\n\t'2018-09-03-140621-identity-project': _20180903140621identityproject,\n\t'2018-10-26-165450-setup-api-key': _20181026165450setupapikey,\n\t'2018-10-26-175155-variables': _20181026175155variables,\n\t'2019-02-18-110949-project-slug': _20190218110949projectslug,\n\t'2019-02-18-160155-session-expiration': _20190218160155sessionexpiration,\n\t'2019-05-03-163729-api-key-disabled-at': _20190503163729apikeydisabledat,\n\t'2019-08-14-153300-project-slug-unique': _20190814153300projectslugunique,\n\t'2019-09-06-111000-membership': _20190906111000membership,\n\t'2019-09-06-111001-drop-old-member': _20190906111001dropoldmember,\n\t'2020-01-29-idenity-note': _20200129idenitynote,\n\t'2020-04-17-fix-person-index': _20200417fixpersonindex,\n\t'2020-05-01-170000-api-key-index': _20200501170000apikeyindex,\n\t'2020-06-08-134000-tenant-credentials': _20200608134000tenantcredentials,\n\t'2020-08-07-110000-person-otp': _20200807110000personotp,\n\t'2020-08-17-162200-mail-templates': _20200817162200mailtemplates,\n\t'2020-08-21-143400-person-password-reset': _20200821143400personpasswordreset,\n\t'2020-09-07-094200-identity-provider': _20200907094200identityprovider,\n\t'2021-03-28-134000-timestamp': _20210328134000timestamp,\n\t'2021-07-26-105000-project-config': _20210726105000projectconfig,\n\t'2021-07-26-132000-project-secrets': _20210726132000projectsecrets,\n\t'2021-07-27-174000-project-alias-index': _20210727174000projectaliasindex,\n\t'2021-11-24-130000-person-password-null': _20211124130000personpasswordnull,\n\t'2021-11-24-161500-mail-template-project-null': _20211124161500mailtemplateprojectnull,\n\t'2022-01-04-144000-person-unique-identity': _20220104144000personuniqueidentity,\n\t'2022-02-09-111800-fix-crypted': _20220209111800fixcrypted,\n\t'2022-02-11-153000-idp-auto-sign-up': _20220211153000idpautosignup,\n\t'2022-06-29-105000-person-idp': _20220629105000personidp,\n\t'2022-07-07-135000-person-email-opt-uniq': _20220707135000personemailoptuniq,\n\t'2022-07-07-141000-person-display-name': _20220707141000persondisplayname,\n\t'2022-07-14-145000-person-login-options': _20220714145000personloginoptions,\n\t'2022-11-08-project-update-notification': _20221108projectupdatenotification,\n\t'2023-01-20-135500-person-email-normalize': _20230120135500personemailnormalize,\n\t'2023-06-03-104000-person-disabled': _20230603104000persondisabled,\n\t'2023-09-01-165000-idp-return-config': _20230901165000idpreturnconfig,\n\t'2024-06-20-140000-mail-reply': _20240620140000mailreply,\n\t'2024-08-26-120000-passwordless': _20240826120000passwordless,\n}\n\nexport class TenantMigrationsRunner {\n\tconstructor(\n\t\tprivate readonly db: DatabaseConfig,\n\t\tprivate readonly schema: string,\n\t\tprivate readonly tenantCredentials: TenantCredentials,\n\t\tprivate readonly providers: Pick<Providers, 'bcrypt' | 'uuid'>,\n\t) {\n\t}\n\n\tpublic async run(logger: Logger): Promise<{ name: string }[]> {\n\t\tawait createDatabaseIfNotExists(this.db, message => typeof message === 'string' ? logger.warn(message) : logger.error(message))\n\t\tconst connection = Connection.createSingle(this.db, err => logger.error(err))\n\t\tconst result = await connection.scope(async connection => {\n\t\t\tconst migrationsResolver = new SnapshotMigrationResolver(snapshot, migrations)\n\n\t\t\tconst innerRunner = new DbMigrationsRunner<TenantMigrationArgs>(connection, this.schema, migrationsResolver)\n\t\t\treturn await innerRunner.migrate(message => logger.warn(message), {\n\t\t\t\tgetCredentials: async () => ({\n\t\t\t\t\tloginTokenHash: this.tenantCredentials.loginToken ? computeTokenHash(this.tenantCredentials.loginToken) : undefined,\n\t\t\t\t\trootTokenHash: this.tenantCredentials.rootTokenHash\n\t\t\t\t\t\t?? (this.tenantCredentials.rootToken ? computeTokenHash(this.tenantCredentials.rootToken) : undefined),\n\t\t\t\t\trootEmail: this.tenantCredentials.rootEmail,\n\t\t\t\t\trootPasswordBcrypted: this.tenantCredentials.rootPassword ? await this.providers.bcrypt(this.tenantCredentials.rootPassword) : undefined,\n\t\t\t\t}),\n\t\t\t\tproviders: this.providers,\n\t\t\t})\n\t\t})\n\t\tawait connection.end()\n\t\treturn result\n\t}\n}\n"],"names":["_20180802174310init","_20180903140621identityproject","_20181026165450setupapikey","_20181026175155variables","_20190218110949projectslug","_20190218160155sessionexpiration","_20190503163729apikeydisabledat","_20190814153300projectslugunique","_20190906111000membership","_20190906111001dropoldmember","_20200129idenitynote","_20200417fixpersonindex","_20200501170000apikeyindex","_20200608134000tenantcredentials","_20200807110000personotp","_20200817162200mailtemplates","_20200821143400personpasswordreset","_20200907094200identityprovider","_20210328134000timestamp","_20210726105000projectconfig","_20210726132000projectsecrets","_20210727174000projectaliasindex","_20211124130000personpasswordnull","_20211124161500mailtemplateprojectnull","_20220104144000personuniqueidentity","_20220209111800fixcrypted","_20220211153000idpautosignup","_20220629105000personidp","_20220707135000personemailoptuniq","_20220707141000persondisplayname","_20220714145000personloginoptions","_20221108projectupdatenotification","_20230120135500personemailnormalize","_20230603104000persondisabled","_20230901165000idpreturnconfig","_20240620140000mailreply","_20240826120000passwordless","createDatabaseIfNotExists","Connection","connection","SnapshotMigrationResolver","DbMigrationsRunner","computeTokenHash"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,MAAM,aAAa;AAAA,EAClB,0BAA0BA;AAAAA,EAC1B,sCAAsCC;AAAAA,EACtC,mCAAmCC;AAAAA,EACnC,+BAA+BC;AAAAA,EAC/B,kCAAkCC;AAAAA,EAClC,wCAAwCC;AAAAA,EACxC,yCAAyCC;AAAAA,EACzC,yCAAyCC;AAAAA,EACzC,gCAAgCC;AAAAA,EAChC,qCAAqCC;AAAAA,EACrC,2BAA2BC;AAAAA,EAC3B,+BAA+BC;AAAAA,EAC/B,mCAAmCC;AAAAA,EACnC,wCAAwCC;AAAAA,EACxC,gCAAgCC;AAAAA,EAChC,oCAAoCC;AAAAA,EACpC,2CAA2CC;AAAAA,EAC3C,uCAAuCC;AAAAA,EACvC,+BAA+BC;AAAAA,EAC/B,oCAAoCC;AAAAA,EACpC,qCAAqCC;AAAAA,EACrC,yCAAyCC;AAAAA,EACzC,0CAA0CC;AAAAA,EAC1C,gDAAgDC;AAAAA,EAChD,4CAA4CC;AAAAA,EAC5C,iCAAiCC;AAAAA,EACjC,sCAAsCC;AAAAA,EACtC,gCAAgCC;AAAAA,EAChC,2CAA2CC;AAAAA,EAC3C,yCAAyCC;AAAAA,EACzC,0CAA0CC;AAAAA,EAC1C,0CAA0CC;AAAAA,EAC1C,4CAA4CC;AAAAA,EAC5C,qCAAqCC;AAAAA,EACrC,uCAAuCC;AAAAA,EACvC,gCAAgCC;AAAAA,EAChC,kCAAkCC;AACnC;AAEO,MAAM,uBAAuB;AAAA,EACnC,YACkB,IACA,QACA,mBACA,WAChB;AAJgB,SAAA,KAAA;AACA,SAAA,SAAA;AACA,SAAA,oBAAA;AACA,SAAA,YAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,IAAI,QAA6C;AAC7D,UAAMC,SAAAA,0BAA0B,KAAK,IAAI,CAAA,YAAW,OAAO,YAAY,WAAW,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,OAAO,CAAC;AACxH,UAAA,aAAaC,SAAAA,WAAW,aAAa,KAAK,IAAI,CAAO,QAAA,OAAO,MAAM,GAAG,CAAC;AAC5E,UAAM,SAAS,MAAM,WAAW,MAAM,OAAMC,gBAAc;AACzD,YAAM,qBAAqB,IAAIC,6CAA0B,UAAU,UAAU;AAE7E,YAAM,cAAc,IAAIC,mBAAA,iBAAwCF,aAAY,KAAK,QAAQ,kBAAkB;AAC3G,aAAO,MAAM,YAAY,QAAQ,aAAW,OAAO,KAAK,OAAO,GAAG;AAAA,QACjE,gBAAgB,aAAa;AAAA,UAC5B,gBAAgB,KAAK,kBAAkB,aAAaG,WAAAA,iBAAiB,KAAK,kBAAkB,UAAU,IAAI;AAAA,UAC1G,eAAe,KAAK,kBAAkB,kBACjC,KAAK,kBAAkB,YAAYA,WAAAA,iBAAiB,KAAK,kBAAkB,SAAS,IAAI;AAAA,UAC7F,WAAW,KAAK,kBAAkB;AAAA,UAClC,sBAAsB,KAAK,kBAAkB,eAAe,MAAM,KAAK,UAAU,OAAO,KAAK,kBAAkB,YAAY,IAAI;AAAA,QAAA;AAAA,QAEhI,WAAW,KAAK;AAAA,MAAA,CAChB;AAAA,IAAA,CACD;AACD,UAAM,WAAW,IAAI;AACd,WAAA;AAAA,EAAA;AAET;;"}
@@ -36,6 +36,7 @@ import _20230120135500personemailnormalize from "./2023-01-20-135500-person-emai
36
36
  import _20230603104000persondisabled from "./2023-06-03-104000-person-disabled.js";
37
37
  import _20230901165000idpreturnconfig from "./2023-09-01-165000-idp-return-config.js";
38
38
  import _20240620140000mailreply from "./2024-06-20-140000-mail-reply.js";
39
+ import _20240826120000passwordless from "./2024-08-26-120000-passwordless.js";
39
40
  import snapshot from "./snapshot.js";
40
41
  import "../model/authorization/PermissionActions.js";
41
42
  import "@contember/authorization";
@@ -90,7 +91,8 @@ const migrations = {
90
91
  "2023-01-20-135500-person-email-normalize": _20230120135500personemailnormalize,
91
92
  "2023-06-03-104000-person-disabled": _20230603104000persondisabled,
92
93
  "2023-09-01-165000-idp-return-config": _20230901165000idpreturnconfig,
93
- "2024-06-20-140000-mail-reply": _20240620140000mailreply
94
+ "2024-06-20-140000-mail-reply": _20240620140000mailreply,
95
+ "2024-08-26-120000-passwordless": _20240826120000passwordless
94
96
  };
95
97
  class TenantMigrationsRunner {
96
98
  constructor(db, schema, tenantCredentials, providers) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sources":["../../../../../packages/engine-tenant-api/src/migrations/runner.ts"],"sourcesContent":["import { Connection, createDatabaseIfNotExists, DatabaseConfig, EventManager } from '@contember/database'\nimport { TenantMigrationArgs } from './types'\nimport { MigrationsRunner as DbMigrationsRunner, SnapshotMigrationResolver } from '@contember/database-migrations'\nimport _20180802174310init from './2018-08-02-174310-init'\nimport _20180903140621identityproject from './2018-09-03-140621-identity-project'\nimport _20181026165450setupapikey from './2018-10-26-165450-setup-api-key'\nimport _20181026175155variables from './2018-10-26-175155-variables'\nimport _20190218110949projectslug from './2019-02-18-110949-project-slug'\nimport _20190218160155sessionexpiration from './2019-02-18-160155-session-expiration'\nimport _20190503163729apikeydisabledat from './2019-05-03-163729-api-key-disabled-at'\nimport _20190814153300projectslugunique from './2019-08-14-153300-project-slug-unique'\nimport _20190906111000membership from './2019-09-06-111000-membership'\nimport _20190906111001dropoldmember from './2019-09-06-111001-drop-old-member'\nimport _20200129idenitynote from './2020-01-29-idenity-note'\nimport _20200417fixpersonindex from './2020-04-17-fix-person-index'\nimport _20200501170000apikeyindex from './2020-05-01-170000-api-key-index'\nimport _20200608134000tenantcredentials from './2020-06-08-134000-tenant-credentials'\nimport _20200807110000personotp from './2020-08-07-110000-person-otp'\nimport _20200817162200mailtemplates from './2020-08-17-162200-mail-templates'\nimport _20200821143400personpasswordreset from './2020-08-21-143400-person-password-reset'\nimport _20200907094200identityprovider from './2020-09-07-094200-identity-provider'\nimport _20210328134000timestamp from './2021-03-28-134000-timestamp'\nimport _20210726105000projectconfig from './2021-07-26-105000-project-config'\nimport _20210726132000projectsecrets from './2021-07-26-132000-project-secrets'\nimport _20210727174000projectaliasindex from './2021-07-27-174000-project-alias-index'\nimport _20211124130000personpasswordnull from './2021-11-24-130000-person-password-null'\nimport _20211124161500mailtemplateprojectnull from './2021-11-24-161500-mail-template-project-null'\nimport _20220104144000personuniqueidentity from './2022-01-04-144000-person-unique-identity'\nimport _20220209111800fixcrypted from './2022-02-09-111800-fix-crypted'\nimport _20220211153000idpautosignup from './2022-02-11-153000-idp-auto-sign-up'\nimport _20220629105000personidp from './2022-06-29-105000-person-idp'\nimport _20220707135000personemailoptuniq from './2022-07-07-135000-person-email-opt-uniq'\nimport _20220707141000persondisplayname from './2022-07-07-141000-person-display-name'\nimport _20220714145000personloginoptions from './2022-07-14-145000-person-login-options'\nimport _20221108projectupdatenotification from './2022-11-08-project-update-notification'\nimport _20230120135500personemailnormalize from './2023-01-20-135500-person-email-normalize'\nimport _20230603104000persondisabled from './2023-06-03-104000-person-disabled'\nimport _20230901165000idpreturnconfig from './2023-09-01-165000-idp-return-config'\nimport _20240620140000mailreply from './2024-06-20-140000-mail-reply'\n\nimport snapshot from './snapshot'\nimport { computeTokenHash, Providers } from '../model'\nimport { Logger } from '@contember/logger'\n\nexport interface TenantCredentials {\n\tloginToken?: string\n\trootEmail?: string\n\trootToken?: string\n\trootTokenHash?: string\n\trootPassword?: string\n}\n\nconst migrations = {\n\t'2018-08-02-174310-init': _20180802174310init,\n\t'2018-09-03-140621-identity-project': _20180903140621identityproject,\n\t'2018-10-26-165450-setup-api-key': _20181026165450setupapikey,\n\t'2018-10-26-175155-variables': _20181026175155variables,\n\t'2019-02-18-110949-project-slug': _20190218110949projectslug,\n\t'2019-02-18-160155-session-expiration': _20190218160155sessionexpiration,\n\t'2019-05-03-163729-api-key-disabled-at': _20190503163729apikeydisabledat,\n\t'2019-08-14-153300-project-slug-unique': _20190814153300projectslugunique,\n\t'2019-09-06-111000-membership': _20190906111000membership,\n\t'2019-09-06-111001-drop-old-member': _20190906111001dropoldmember,\n\t'2020-01-29-idenity-note': _20200129idenitynote,\n\t'2020-04-17-fix-person-index': _20200417fixpersonindex,\n\t'2020-05-01-170000-api-key-index': _20200501170000apikeyindex,\n\t'2020-06-08-134000-tenant-credentials': _20200608134000tenantcredentials,\n\t'2020-08-07-110000-person-otp': _20200807110000personotp,\n\t'2020-08-17-162200-mail-templates': _20200817162200mailtemplates,\n\t'2020-08-21-143400-person-password-reset': _20200821143400personpasswordreset,\n\t'2020-09-07-094200-identity-provider': _20200907094200identityprovider,\n\t'2021-03-28-134000-timestamp': _20210328134000timestamp,\n\t'2021-07-26-105000-project-config': _20210726105000projectconfig,\n\t'2021-07-26-132000-project-secrets': _20210726132000projectsecrets,\n\t'2021-07-27-174000-project-alias-index': _20210727174000projectaliasindex,\n\t'2021-11-24-130000-person-password-null': _20211124130000personpasswordnull,\n\t'2021-11-24-161500-mail-template-project-null': _20211124161500mailtemplateprojectnull,\n\t'2022-01-04-144000-person-unique-identity': _20220104144000personuniqueidentity,\n\t'2022-02-09-111800-fix-crypted': _20220209111800fixcrypted,\n\t'2022-02-11-153000-idp-auto-sign-up': _20220211153000idpautosignup,\n\t'2022-06-29-105000-person-idp': _20220629105000personidp,\n\t'2022-07-07-135000-person-email-opt-uniq': _20220707135000personemailoptuniq,\n\t'2022-07-07-141000-person-display-name': _20220707141000persondisplayname,\n\t'2022-07-14-145000-person-login-options': _20220714145000personloginoptions,\n\t'2022-11-08-project-update-notification': _20221108projectupdatenotification,\n\t'2023-01-20-135500-person-email-normalize': _20230120135500personemailnormalize,\n\t'2023-06-03-104000-person-disabled': _20230603104000persondisabled,\n\t'2023-09-01-165000-idp-return-config': _20230901165000idpreturnconfig,\n\t'2024-06-20-140000-mail-reply': _20240620140000mailreply,\n}\n\nexport class TenantMigrationsRunner {\n\tconstructor(\n\t\tprivate readonly db: DatabaseConfig,\n\t\tprivate readonly schema: string,\n\t\tprivate readonly tenantCredentials: TenantCredentials,\n\t\tprivate readonly providers: Pick<Providers, 'bcrypt' | 'uuid'>,\n\t) {\n\t}\n\n\tpublic async run(logger: Logger): Promise<{ name: string }[]> {\n\t\tawait createDatabaseIfNotExists(this.db, message => typeof message === 'string' ? logger.warn(message) : logger.error(message))\n\t\tconst connection = Connection.createSingle(this.db, err => logger.error(err))\n\t\tconst result = await connection.scope(async connection => {\n\t\t\tconst migrationsResolver = new SnapshotMigrationResolver(snapshot, migrations)\n\n\t\t\tconst innerRunner = new DbMigrationsRunner<TenantMigrationArgs>(connection, this.schema, migrationsResolver)\n\t\t\treturn await innerRunner.migrate(message => logger.warn(message), {\n\t\t\t\tgetCredentials: async () => ({\n\t\t\t\t\tloginTokenHash: this.tenantCredentials.loginToken ? computeTokenHash(this.tenantCredentials.loginToken) : undefined,\n\t\t\t\t\trootTokenHash: this.tenantCredentials.rootTokenHash\n\t\t\t\t\t\t?? (this.tenantCredentials.rootToken ? computeTokenHash(this.tenantCredentials.rootToken) : undefined),\n\t\t\t\t\trootEmail: this.tenantCredentials.rootEmail,\n\t\t\t\t\trootPasswordBcrypted: this.tenantCredentials.rootPassword ? await this.providers.bcrypt(this.tenantCredentials.rootPassword) : undefined,\n\t\t\t\t}),\n\t\t\t\tproviders: this.providers,\n\t\t\t})\n\t\t})\n\t\tawait connection.end()\n\t\treturn result\n\t}\n}\n"],"names":["connection","DbMigrationsRunner"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,MAAM,aAAa;AAAA,EAClB,0BAA0B;AAAA,EAC1B,sCAAsC;AAAA,EACtC,mCAAmC;AAAA,EACnC,+BAA+B;AAAA,EAC/B,kCAAkC;AAAA,EAClC,wCAAwC;AAAA,EACxC,yCAAyC;AAAA,EACzC,yCAAyC;AAAA,EACzC,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,2BAA2B;AAAA,EAC3B,+BAA+B;AAAA,EAC/B,mCAAmC;AAAA,EACnC,wCAAwC;AAAA,EACxC,gCAAgC;AAAA,EAChC,oCAAoC;AAAA,EACpC,2CAA2C;AAAA,EAC3C,uCAAuC;AAAA,EACvC,+BAA+B;AAAA,EAC/B,oCAAoC;AAAA,EACpC,qCAAqC;AAAA,EACrC,yCAAyC;AAAA,EACzC,0CAA0C;AAAA,EAC1C,gDAAgD;AAAA,EAChD,4CAA4C;AAAA,EAC5C,iCAAiC;AAAA,EACjC,sCAAsC;AAAA,EACtC,gCAAgC;AAAA,EAChC,2CAA2C;AAAA,EAC3C,yCAAyC;AAAA,EACzC,0CAA0C;AAAA,EAC1C,0CAA0C;AAAA,EAC1C,4CAA4C;AAAA,EAC5C,qCAAqC;AAAA,EACrC,uCAAuC;AAAA,EACvC,gCAAgC;AACjC;AAEO,MAAM,uBAAuB;AAAA,EACnC,YACkB,IACA,QACA,mBACA,WAChB;AAJgB,SAAA,KAAA;AACA,SAAA,SAAA;AACA,SAAA,oBAAA;AACA,SAAA,YAAA;AAAA,EAElB;AAAA,EAEA,MAAa,IAAI,QAA6C;AAC7D,UAAM,0BAA0B,KAAK,IAAI,CAAA,YAAW,OAAO,YAAY,WAAW,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,OAAO,CAAC;AACxH,UAAA,aAAa,WAAW,aAAa,KAAK,IAAI,CAAO,QAAA,OAAO,MAAM,GAAG,CAAC;AAC5E,UAAM,SAAS,MAAM,WAAW,MAAM,OAAMA,gBAAc;AACzD,YAAM,qBAAqB,IAAI,0BAA0B,UAAU,UAAU;AAE7E,YAAM,cAAc,IAAIC,iBAAwCD,aAAY,KAAK,QAAQ,kBAAkB;AAC3G,aAAO,MAAM,YAAY,QAAQ,aAAW,OAAO,KAAK,OAAO,GAAG;AAAA,QACjE,gBAAgB,aAAa;AAAA,UAC5B,gBAAgB,KAAK,kBAAkB,aAAa,iBAAiB,KAAK,kBAAkB,UAAU,IAAI;AAAA,UAC1G,eAAe,KAAK,kBAAkB,kBACjC,KAAK,kBAAkB,YAAY,iBAAiB,KAAK,kBAAkB,SAAS,IAAI;AAAA,UAC7F,WAAW,KAAK,kBAAkB;AAAA,UAClC,sBAAsB,KAAK,kBAAkB,eAAe,MAAM,KAAK,UAAU,OAAO,KAAK,kBAAkB,YAAY,IAAI;AAAA,QAAA;AAAA,QAEhI,WAAW,KAAK;AAAA,MAAA,CAChB;AAAA,IAAA,CACD;AACD,UAAM,WAAW;AACV,WAAA;AAAA,EACR;AACD;"}
1
+ {"version":3,"file":"runner.js","sources":["../../../../../packages/engine-tenant-api/src/migrations/runner.ts"],"sourcesContent":["import { Connection, createDatabaseIfNotExists, DatabaseConfig, EventManager } from '@contember/database'\nimport { TenantMigrationArgs } from './types'\nimport { MigrationsRunner as DbMigrationsRunner, SnapshotMigrationResolver } from '@contember/database-migrations'\nimport _20180802174310init from './2018-08-02-174310-init'\nimport _20180903140621identityproject from './2018-09-03-140621-identity-project'\nimport _20181026165450setupapikey from './2018-10-26-165450-setup-api-key'\nimport _20181026175155variables from './2018-10-26-175155-variables'\nimport _20190218110949projectslug from './2019-02-18-110949-project-slug'\nimport _20190218160155sessionexpiration from './2019-02-18-160155-session-expiration'\nimport _20190503163729apikeydisabledat from './2019-05-03-163729-api-key-disabled-at'\nimport _20190814153300projectslugunique from './2019-08-14-153300-project-slug-unique'\nimport _20190906111000membership from './2019-09-06-111000-membership'\nimport _20190906111001dropoldmember from './2019-09-06-111001-drop-old-member'\nimport _20200129idenitynote from './2020-01-29-idenity-note'\nimport _20200417fixpersonindex from './2020-04-17-fix-person-index'\nimport _20200501170000apikeyindex from './2020-05-01-170000-api-key-index'\nimport _20200608134000tenantcredentials from './2020-06-08-134000-tenant-credentials'\nimport _20200807110000personotp from './2020-08-07-110000-person-otp'\nimport _20200817162200mailtemplates from './2020-08-17-162200-mail-templates'\nimport _20200821143400personpasswordreset from './2020-08-21-143400-person-password-reset'\nimport _20200907094200identityprovider from './2020-09-07-094200-identity-provider'\nimport _20210328134000timestamp from './2021-03-28-134000-timestamp'\nimport _20210726105000projectconfig from './2021-07-26-105000-project-config'\nimport _20210726132000projectsecrets from './2021-07-26-132000-project-secrets'\nimport _20210727174000projectaliasindex from './2021-07-27-174000-project-alias-index'\nimport _20211124130000personpasswordnull from './2021-11-24-130000-person-password-null'\nimport _20211124161500mailtemplateprojectnull from './2021-11-24-161500-mail-template-project-null'\nimport _20220104144000personuniqueidentity from './2022-01-04-144000-person-unique-identity'\nimport _20220209111800fixcrypted from './2022-02-09-111800-fix-crypted'\nimport _20220211153000idpautosignup from './2022-02-11-153000-idp-auto-sign-up'\nimport _20220629105000personidp from './2022-06-29-105000-person-idp'\nimport _20220707135000personemailoptuniq from './2022-07-07-135000-person-email-opt-uniq'\nimport _20220707141000persondisplayname from './2022-07-07-141000-person-display-name'\nimport _20220714145000personloginoptions from './2022-07-14-145000-person-login-options'\nimport _20221108projectupdatenotification from './2022-11-08-project-update-notification'\nimport _20230120135500personemailnormalize from './2023-01-20-135500-person-email-normalize'\nimport _20230603104000persondisabled from './2023-06-03-104000-person-disabled'\nimport _20230901165000idpreturnconfig from './2023-09-01-165000-idp-return-config'\nimport _20240620140000mailreply from './2024-06-20-140000-mail-reply'\nimport _20240826120000passwordless from './2024-08-26-120000-passwordless'\n\nimport snapshot from './snapshot'\nimport { computeTokenHash, Providers } from '../model'\nimport { Logger } from '@contember/logger'\n\nexport interface TenantCredentials {\n\tloginToken?: string\n\trootEmail?: string\n\trootToken?: string\n\trootTokenHash?: string\n\trootPassword?: string\n}\n\nconst migrations = {\n\t'2018-08-02-174310-init': _20180802174310init,\n\t'2018-09-03-140621-identity-project': _20180903140621identityproject,\n\t'2018-10-26-165450-setup-api-key': _20181026165450setupapikey,\n\t'2018-10-26-175155-variables': _20181026175155variables,\n\t'2019-02-18-110949-project-slug': _20190218110949projectslug,\n\t'2019-02-18-160155-session-expiration': _20190218160155sessionexpiration,\n\t'2019-05-03-163729-api-key-disabled-at': _20190503163729apikeydisabledat,\n\t'2019-08-14-153300-project-slug-unique': _20190814153300projectslugunique,\n\t'2019-09-06-111000-membership': _20190906111000membership,\n\t'2019-09-06-111001-drop-old-member': _20190906111001dropoldmember,\n\t'2020-01-29-idenity-note': _20200129idenitynote,\n\t'2020-04-17-fix-person-index': _20200417fixpersonindex,\n\t'2020-05-01-170000-api-key-index': _20200501170000apikeyindex,\n\t'2020-06-08-134000-tenant-credentials': _20200608134000tenantcredentials,\n\t'2020-08-07-110000-person-otp': _20200807110000personotp,\n\t'2020-08-17-162200-mail-templates': _20200817162200mailtemplates,\n\t'2020-08-21-143400-person-password-reset': _20200821143400personpasswordreset,\n\t'2020-09-07-094200-identity-provider': _20200907094200identityprovider,\n\t'2021-03-28-134000-timestamp': _20210328134000timestamp,\n\t'2021-07-26-105000-project-config': _20210726105000projectconfig,\n\t'2021-07-26-132000-project-secrets': _20210726132000projectsecrets,\n\t'2021-07-27-174000-project-alias-index': _20210727174000projectaliasindex,\n\t'2021-11-24-130000-person-password-null': _20211124130000personpasswordnull,\n\t'2021-11-24-161500-mail-template-project-null': _20211124161500mailtemplateprojectnull,\n\t'2022-01-04-144000-person-unique-identity': _20220104144000personuniqueidentity,\n\t'2022-02-09-111800-fix-crypted': _20220209111800fixcrypted,\n\t'2022-02-11-153000-idp-auto-sign-up': _20220211153000idpautosignup,\n\t'2022-06-29-105000-person-idp': _20220629105000personidp,\n\t'2022-07-07-135000-person-email-opt-uniq': _20220707135000personemailoptuniq,\n\t'2022-07-07-141000-person-display-name': _20220707141000persondisplayname,\n\t'2022-07-14-145000-person-login-options': _20220714145000personloginoptions,\n\t'2022-11-08-project-update-notification': _20221108projectupdatenotification,\n\t'2023-01-20-135500-person-email-normalize': _20230120135500personemailnormalize,\n\t'2023-06-03-104000-person-disabled': _20230603104000persondisabled,\n\t'2023-09-01-165000-idp-return-config': _20230901165000idpreturnconfig,\n\t'2024-06-20-140000-mail-reply': _20240620140000mailreply,\n\t'2024-08-26-120000-passwordless': _20240826120000passwordless,\n}\n\nexport class TenantMigrationsRunner {\n\tconstructor(\n\t\tprivate readonly db: DatabaseConfig,\n\t\tprivate readonly schema: string,\n\t\tprivate readonly tenantCredentials: TenantCredentials,\n\t\tprivate readonly providers: Pick<Providers, 'bcrypt' | 'uuid'>,\n\t) {\n\t}\n\n\tpublic async run(logger: Logger): Promise<{ name: string }[]> {\n\t\tawait createDatabaseIfNotExists(this.db, message => typeof message === 'string' ? logger.warn(message) : logger.error(message))\n\t\tconst connection = Connection.createSingle(this.db, err => logger.error(err))\n\t\tconst result = await connection.scope(async connection => {\n\t\t\tconst migrationsResolver = new SnapshotMigrationResolver(snapshot, migrations)\n\n\t\t\tconst innerRunner = new DbMigrationsRunner<TenantMigrationArgs>(connection, this.schema, migrationsResolver)\n\t\t\treturn await innerRunner.migrate(message => logger.warn(message), {\n\t\t\t\tgetCredentials: async () => ({\n\t\t\t\t\tloginTokenHash: this.tenantCredentials.loginToken ? computeTokenHash(this.tenantCredentials.loginToken) : undefined,\n\t\t\t\t\trootTokenHash: this.tenantCredentials.rootTokenHash\n\t\t\t\t\t\t?? (this.tenantCredentials.rootToken ? computeTokenHash(this.tenantCredentials.rootToken) : undefined),\n\t\t\t\t\trootEmail: this.tenantCredentials.rootEmail,\n\t\t\t\t\trootPasswordBcrypted: this.tenantCredentials.rootPassword ? await this.providers.bcrypt(this.tenantCredentials.rootPassword) : undefined,\n\t\t\t\t}),\n\t\t\t\tproviders: this.providers,\n\t\t\t})\n\t\t})\n\t\tawait connection.end()\n\t\treturn result\n\t}\n}\n"],"names":["connection","DbMigrationsRunner"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,MAAM,aAAa;AAAA,EAClB,0BAA0B;AAAA,EAC1B,sCAAsC;AAAA,EACtC,mCAAmC;AAAA,EACnC,+BAA+B;AAAA,EAC/B,kCAAkC;AAAA,EAClC,wCAAwC;AAAA,EACxC,yCAAyC;AAAA,EACzC,yCAAyC;AAAA,EACzC,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,2BAA2B;AAAA,EAC3B,+BAA+B;AAAA,EAC/B,mCAAmC;AAAA,EACnC,wCAAwC;AAAA,EACxC,gCAAgC;AAAA,EAChC,oCAAoC;AAAA,EACpC,2CAA2C;AAAA,EAC3C,uCAAuC;AAAA,EACvC,+BAA+B;AAAA,EAC/B,oCAAoC;AAAA,EACpC,qCAAqC;AAAA,EACrC,yCAAyC;AAAA,EACzC,0CAA0C;AAAA,EAC1C,gDAAgD;AAAA,EAChD,4CAA4C;AAAA,EAC5C,iCAAiC;AAAA,EACjC,sCAAsC;AAAA,EACtC,gCAAgC;AAAA,EAChC,2CAA2C;AAAA,EAC3C,yCAAyC;AAAA,EACzC,0CAA0C;AAAA,EAC1C,0CAA0C;AAAA,EAC1C,4CAA4C;AAAA,EAC5C,qCAAqC;AAAA,EACrC,uCAAuC;AAAA,EACvC,gCAAgC;AAAA,EAChC,kCAAkC;AACnC;AAEO,MAAM,uBAAuB;AAAA,EACnC,YACkB,IACA,QACA,mBACA,WAChB;AAJgB,SAAA,KAAA;AACA,SAAA,SAAA;AACA,SAAA,oBAAA;AACA,SAAA,YAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,IAAI,QAA6C;AAC7D,UAAM,0BAA0B,KAAK,IAAI,CAAA,YAAW,OAAO,YAAY,WAAW,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,OAAO,CAAC;AACxH,UAAA,aAAa,WAAW,aAAa,KAAK,IAAI,CAAO,QAAA,OAAO,MAAM,GAAG,CAAC;AAC5E,UAAM,SAAS,MAAM,WAAW,MAAM,OAAMA,gBAAc;AACzD,YAAM,qBAAqB,IAAI,0BAA0B,UAAU,UAAU;AAE7E,YAAM,cAAc,IAAIC,iBAAwCD,aAAY,KAAK,QAAQ,kBAAkB;AAC3G,aAAO,MAAM,YAAY,QAAQ,aAAW,OAAO,KAAK,OAAO,GAAG;AAAA,QACjE,gBAAgB,aAAa;AAAA,UAC5B,gBAAgB,KAAK,kBAAkB,aAAa,iBAAiB,KAAK,kBAAkB,UAAU,IAAI;AAAA,UAC1G,eAAe,KAAK,kBAAkB,kBACjC,KAAK,kBAAkB,YAAY,iBAAiB,KAAK,kBAAkB,SAAS,IAAI;AAAA,UAC7F,WAAW,KAAK,kBAAkB;AAAA,UAClC,sBAAsB,KAAK,kBAAkB,eAAe,MAAM,KAAK,UAAU,OAAO,KAAK,kBAAkB,YAAY,IAAI;AAAA,QAAA;AAAA,QAEhI,WAAW,KAAK;AAAA,MAAA,CAChB;AAAA,IAAA,CACD;AACD,UAAM,WAAW,IAAI;AACd,WAAA;AAAA,EAAA;AAET;"}
@@ -2,6 +2,19 @@
2
2
  const tenantCredentials = require("./tenantCredentials.cjs");
3
3
  async function snapshot(builder, args) {
4
4
  builder.sql(`
5
+ CREATE TYPE "config_policy" AS ENUM (
6
+ 'always',
7
+ 'never',
8
+ 'optIn',
9
+ 'optOut'
10
+ );
11
+ CREATE TYPE "config_singleton" AS ENUM (
12
+ 'singleton'
13
+ );
14
+ CREATE TYPE "person_token_type" AS ENUM (
15
+ 'password_reset',
16
+ 'passwordless'
17
+ );
5
18
  CREATE FUNCTION "project_deleted"() RETURNS "trigger"
6
19
  LANGUAGE "plpgsql"
7
20
  AS $$
@@ -38,6 +51,12 @@ CREATE TABLE "api_key" (
38
51
  "expiration" integer,
39
52
  "disabled_at" timestamp with time zone
40
53
  );
54
+ CREATE TABLE "config" (
55
+ "id" "config_singleton" DEFAULT 'singleton'::"config_singleton" NOT NULL,
56
+ "passwordless_enabled" "config_policy" DEFAULT 'never'::"config_policy" NOT NULL,
57
+ "passwordless_url" "text",
58
+ "passwordless_expiration_minutes" integer DEFAULT 5 NOT NULL
59
+ );
41
60
  CREATE TABLE "identity" (
42
61
  "id" "uuid" NOT NULL,
43
62
  "parent_id" "uuid",
@@ -75,6 +94,7 @@ CREATE TABLE "person" (
75
94
  "name" "text",
76
95
  "idp_only" boolean DEFAULT false NOT NULL,
77
96
  "disabled_at" timestamp with time zone,
97
+ "passwordless_enabled" boolean,
78
98
  CONSTRAINT "idp_only_no_email" CHECK ((("idp_only" = false) OR (("idp_only" = true) AND ("email" IS NULL))))
79
99
  );
80
100
  CREATE TABLE "person_identity_provider" (
@@ -84,13 +104,16 @@ CREATE TABLE "person_identity_provider" (
84
104
  "created_at" timestamp with time zone DEFAULT "now"() NOT NULL,
85
105
  "external_identifier" "text" NOT NULL
86
106
  );
87
- CREATE TABLE "person_password_reset" (
107
+ CREATE TABLE "person_token" (
88
108
  "id" "uuid" NOT NULL,
89
109
  "token_hash" "text" NOT NULL,
90
110
  "person_id" "uuid" NOT NULL,
91
111
  "expires_at" timestamp with time zone NOT NULL,
92
112
  "created_at" timestamp with time zone NOT NULL,
93
- "used_at" timestamp with time zone
113
+ "used_at" timestamp with time zone,
114
+ "type" "person_token_type" DEFAULT 'password_reset'::"person_token_type" NOT NULL,
115
+ "otp_hash" "text",
116
+ "otp_attempts" integer DEFAULT 0 NOT NULL
94
117
  );
95
118
  CREATE TABLE "project" (
96
119
  "id" "uuid" NOT NULL,
@@ -122,6 +145,8 @@ CREATE TABLE "project_secret" (
122
145
  );
123
146
  ALTER TABLE ONLY "api_key"
124
147
  ADD CONSTRAINT "api_key_id" PRIMARY KEY ("id");
148
+ ALTER TABLE ONLY "config"
149
+ ADD CONSTRAINT "config_pkey" PRIMARY KEY ("id");
125
150
  ALTER TABLE ONLY "person"
126
151
  ADD CONSTRAINT "email_unique" UNIQUE ("email");
127
152
  ALTER TABLE ONLY "identity"
@@ -138,7 +163,7 @@ ALTER TABLE ONLY "person"
138
163
  ADD CONSTRAINT "person_identity_id_key" UNIQUE ("identity_id");
139
164
  ALTER TABLE ONLY "person_identity_provider"
140
165
  ADD CONSTRAINT "person_identity_provider_pkey" PRIMARY KEY ("id");
141
- ALTER TABLE ONLY "person_password_reset"
166
+ ALTER TABLE ONLY "person_token"
142
167
  ADD CONSTRAINT "person_password_reset_id" PRIMARY KEY ("id");
143
168
  ALTER TABLE ONLY "project"
144
169
  ADD CONSTRAINT "project_id" PRIMARY KEY ("id");
@@ -159,7 +184,7 @@ CREATE INDEX "mail_template_project_index" ON "mail_template" USING "btree" ("pr
159
184
  CREATE INDEX "person_identity_id" ON "person" USING "btree" ("identity_id");
160
185
  CREATE UNIQUE INDEX "person_identity_provider_identifier" ON "person_identity_provider" USING "btree" ("identity_provider_id", "external_identifier");
161
186
  CREATE INDEX "person_identity_provider_person_id" ON "person_identity_provider" USING "btree" ("person_id");
162
- CREATE UNIQUE INDEX "person_password_reset_token" ON "person_password_reset" USING "btree" ("token_hash");
187
+ CREATE UNIQUE INDEX "person_password_reset_token" ON "person_token" USING "btree" ("token_hash");
163
188
  CREATE INDEX "project_alias" ON "project" USING "gin" ((("config" -> 'alias'::"text")));
164
189
  CREATE INDEX "project_membership_identity_index" ON "project_membership" USING "btree" ("identity_id");
165
190
  CREATE UNIQUE INDEX "project_membership_unique" ON "project_membership" USING "btree" ("project_id", "identity_id", "role");
@@ -181,7 +206,7 @@ ALTER TABLE ONLY "person_identity_provider"
181
206
  ADD CONSTRAINT "person_identity_provider_idp" FOREIGN KEY ("identity_provider_id") REFERENCES "identity_provider"("id") ON DELETE CASCADE;
182
207
  ALTER TABLE ONLY "person_identity_provider"
183
208
  ADD CONSTRAINT "person_identity_provider_person" FOREIGN KEY ("person_id") REFERENCES "person"("id") ON DELETE CASCADE;
184
- ALTER TABLE ONLY "person_password_reset"
209
+ ALTER TABLE ONLY "person_token"
185
210
  ADD CONSTRAINT "person_password_reset_person" FOREIGN KEY ("person_id") REFERENCES "person"("id") ON DELETE CASCADE;
186
211
  ALTER TABLE ONLY "project_membership"
187
212
  ADD CONSTRAINT "project_membership_identity" FOREIGN KEY ("identity_id") REFERENCES "identity"("id") ON DELETE CASCADE;
@@ -191,6 +216,9 @@ ALTER TABLE ONLY "project_membership_variable"
191
216
  ADD CONSTRAINT "project_membership_variable_membership" FOREIGN KEY ("membership_id") REFERENCES "project_membership"("id") ON DELETE CASCADE;
192
217
  ALTER TABLE ONLY "project_secret"
193
218
  ADD CONSTRAINT "project_secret_project" FOREIGN KEY ("project_id") REFERENCES "project"("id") ON DELETE CASCADE;
219
+ INSERT INTO "config" (id)
220
+ VALUES (DEFAULT);
221
+
194
222
  DO LANGUAGE plpgsql
195
223
  $$
196
224
  BEGIN
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.cjs","sources":["../../../../../packages/engine-tenant-api/src/migrations/snapshot.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { TenantMigrationArgs } from './types'\nimport { createCredentials } from './tenantCredentials'\n\nexport default async function (builder: MigrationBuilder, args: TenantMigrationArgs) {\n\tbuilder.sql(`\nCREATE FUNCTION \"project_deleted\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tPERFORM pg_notify('project_updated', old.id::text);\n\tRETURN NULL;\nEND;\n$$;\nCREATE FUNCTION \"project_secret_updated\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tUPDATE project SET updated_at = 'now' WHERE id = COALESCE(new.project_id, old.project_id);\n\tPERFORM pg_notify('project_updated', COALESCE(new.project_id, old.project_id)::TEXT);\n\tRETURN NULL;\nEND;\n$$;\nCREATE FUNCTION \"project_updated\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tNEW.updated_at = 'now';\n\tPERFORM pg_notify('project_updated', new.id::text);\n\tRETURN new;\nEND;\n$$;\nCREATE TABLE \"api_key\" (\n \"id\" \"uuid\" NOT NULL,\n \"token_hash\" \"text\" NOT NULL,\n \"type\" \"text\" NOT NULL,\n \"identity_id\" \"uuid\" NOT NULL,\n \"expires_at\" timestamp with time zone,\n \"created_at\" timestamp with time zone NOT NULL,\n \"expiration\" integer,\n \"disabled_at\" timestamp with time zone\n);\nCREATE TABLE \"identity\" (\n \"id\" \"uuid\" NOT NULL,\n \"parent_id\" \"uuid\",\n \"roles\" \"jsonb\" NOT NULL,\n \"description\" \"text\",\n \"created_at\" timestamp with time zone NOT NULL\n);\nCREATE TABLE \"identity_provider\" (\n \"id\" \"uuid\" NOT NULL,\n \"slug\" \"text\" NOT NULL,\n \"type\" \"text\" NOT NULL,\n \"configuration\" \"jsonb\" NOT NULL,\n \"disabled_at\" timestamp with time zone,\n \"auto_sign_up\" boolean DEFAULT false NOT NULL,\n \"exclusive\" boolean DEFAULT false,\n \"init_returns_config\" boolean DEFAULT false NOT NULL\n);\nCREATE TABLE \"mail_template\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\",\n \"mail_type\" \"text\" NOT NULL,\n \"variant\" \"text\" NOT NULL,\n \"subject\" \"text\" NOT NULL,\n \"content\" \"text\" NOT NULL,\n \"use_layout\" boolean NOT NULL,\n \"reply_to\" \"text\"\n);\nCREATE TABLE \"person\" (\n \"id\" \"uuid\" NOT NULL,\n \"email\" \"text\",\n \"password_hash\" \"text\",\n \"identity_id\" \"uuid\" NOT NULL,\n \"otp_uri\" \"text\",\n \"otp_activated_at\" timestamp with time zone,\n \"name\" \"text\",\n \"idp_only\" boolean DEFAULT false NOT NULL,\n \"disabled_at\" timestamp with time zone,\n CONSTRAINT \"idp_only_no_email\" CHECK (((\"idp_only\" = false) OR ((\"idp_only\" = true) AND (\"email\" IS NULL))))\n);\nCREATE TABLE \"person_identity_provider\" (\n \"id\" \"uuid\" NOT NULL,\n \"person_id\" \"uuid\" NOT NULL,\n \"identity_provider_id\" \"uuid\" NOT NULL,\n \"created_at\" timestamp with time zone DEFAULT \"now\"() NOT NULL,\n \"external_identifier\" \"text\" NOT NULL\n);\nCREATE TABLE \"person_password_reset\" (\n \"id\" \"uuid\" NOT NULL,\n \"token_hash\" \"text\" NOT NULL,\n \"person_id\" \"uuid\" NOT NULL,\n \"expires_at\" timestamp with time zone NOT NULL,\n \"created_at\" timestamp with time zone NOT NULL,\n \"used_at\" timestamp with time zone\n);\nCREATE TABLE \"project\" (\n \"id\" \"uuid\" NOT NULL,\n \"name\" \"text\" NOT NULL,\n \"slug\" \"text\" NOT NULL,\n \"config\" \"jsonb\" DEFAULT '{}'::\"jsonb\" NOT NULL,\n \"updated_at\" timestamp with time zone DEFAULT \"now\"() NOT NULL\n);\nCREATE TABLE \"project_membership\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\" NOT NULL,\n \"identity_id\" \"uuid\" NOT NULL,\n \"role\" \"text\" NOT NULL\n);\nCREATE TABLE \"project_membership_variable\" (\n \"id\" \"uuid\" NOT NULL,\n \"membership_id\" \"uuid\" NOT NULL,\n \"variable\" \"text\" NOT NULL,\n \"value\" \"jsonb\" NOT NULL\n);\nCREATE TABLE \"project_secret\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\" NOT NULL,\n \"key\" \"text\" NOT NULL,\n \"created_at\" timestamp with time zone NOT NULL,\n \"updated_at\" timestamp with time zone NOT NULL,\n \"value\" \"bytea\" NOT NULL,\n \"version\" smallint NOT NULL\n);\nALTER TABLE ONLY \"api_key\"\n ADD CONSTRAINT \"api_key_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"email_unique\" UNIQUE (\"email\");\nALTER TABLE ONLY \"identity\"\n ADD CONSTRAINT \"identity_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"identity_provider\"\n ADD CONSTRAINT \"identity_provider_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"identity_provider\"\n ADD CONSTRAINT \"identity_provider_slug_key\" UNIQUE (\"slug\");\nALTER TABLE ONLY \"mail_template\"\n ADD CONSTRAINT \"mail_template_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_identity_id_key\" UNIQUE (\"identity_id\");\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person_password_reset\"\n ADD CONSTRAINT \"person_password_reset_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project\"\n ADD CONSTRAINT \"project_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_unique\" UNIQUE (\"membership_id\", \"variable\");\nALTER TABLE ONLY \"project_secret\"\n ADD CONSTRAINT \"project_secret_pkey\" PRIMARY KEY (\"id\");\nCREATE INDEX \"api_key_identity_id\" ON \"api_key\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"api_key_token_hash\" ON \"api_key\" USING \"btree\" (\"token_hash\");\nCREATE INDEX \"identity_parent_id\" ON \"identity\" USING \"btree\" (\"parent_id\");\nCREATE UNIQUE INDEX \"mail_template_identifier\" ON \"mail_template\" USING \"btree\" (\"project_id\", \"mail_type\", \"variant\") WHERE (\"project_id\" IS NOT NULL);\nCREATE UNIQUE INDEX \"mail_template_identifier_global\" ON \"mail_template\" USING \"btree\" (\"mail_type\", \"variant\") WHERE (\"project_id\" IS NULL);\nCREATE INDEX \"mail_template_project_index\" ON \"mail_template\" USING \"btree\" (\"project_id\");\nCREATE INDEX \"person_identity_id\" ON \"person\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"person_identity_provider_identifier\" ON \"person_identity_provider\" USING \"btree\" (\"identity_provider_id\", \"external_identifier\");\nCREATE INDEX \"person_identity_provider_person_id\" ON \"person_identity_provider\" USING \"btree\" (\"person_id\");\nCREATE UNIQUE INDEX \"person_password_reset_token\" ON \"person_password_reset\" USING \"btree\" (\"token_hash\");\nCREATE INDEX \"project_alias\" ON \"project\" USING \"gin\" (((\"config\" -> 'alias'::\"text\")));\nCREATE INDEX \"project_membership_identity_index\" ON \"project_membership\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"project_membership_unique\" ON \"project_membership\" USING \"btree\" (\"project_id\", \"identity_id\", \"role\");\nCREATE INDEX \"project_secret_project_index\" ON \"project_secret\" USING \"btree\" (\"project_id\");\nCREATE UNIQUE INDEX \"project_secret_unique\" ON \"project_secret\" USING \"btree\" (\"project_id\", \"key\");\nCREATE UNIQUE INDEX \"project_slug\" ON \"project\" USING \"btree\" (\"slug\");\nCREATE TRIGGER \"project_deleted\" AFTER DELETE ON \"project\" FOR EACH ROW EXECUTE FUNCTION \"project_deleted\"();\nCREATE TRIGGER \"project_secret_updated\" AFTER INSERT OR DELETE OR UPDATE ON \"project_secret\" FOR EACH ROW EXECUTE FUNCTION \"project_secret_updated\"();\nCREATE TRIGGER \"project_updated\" BEFORE INSERT OR UPDATE OF \"name\", \"slug\", \"config\" ON \"project\" FOR EACH ROW EXECUTE FUNCTION \"project_updated\"();\nALTER TABLE ONLY \"api_key\"\n ADD CONSTRAINT \"api_key_identity_id_fkey\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"identity\"\n ADD CONSTRAINT \"identity_parent_id_fkey\" FOREIGN KEY (\"parent_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"mail_template\"\n ADD CONSTRAINT \"mail_template_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_identity_id_fkey\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_idp\" FOREIGN KEY (\"identity_provider_id\") REFERENCES \"identity_provider\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_person\" FOREIGN KEY (\"person_id\") REFERENCES \"person\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person_password_reset\"\n ADD CONSTRAINT \"person_password_reset_person\" FOREIGN KEY (\"person_id\") REFERENCES \"person\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_identity\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_membership\" FOREIGN KEY (\"membership_id\") REFERENCES \"project_membership\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_secret\"\n ADD CONSTRAINT \"project_secret_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nDO LANGUAGE plpgsql\n$$\n\tBEGIN\n\t\tEXECUTE FORMAT('ALTER FUNCTION project_secret_updated() SET SEARCH_PATH = %s', QUOTE_IDENT(CURRENT_SCHEMA()));\n\tEND\n$$;\n`)\n\n\tawait createCredentials(builder, args)\n}\n"],"names":["createCredentials"],"mappings":";;AAIA,eAAA,SAA+B,SAA2B,MAA2B;AACpF,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAoMZ;AAEM,QAAAA,kBAAA,kBAAkB,SAAS,IAAI;AACtC;;"}
1
+ {"version":3,"file":"snapshot.cjs","sources":["../../../../../packages/engine-tenant-api/src/migrations/snapshot.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { TenantMigrationArgs } from './types'\nimport { createCredentials } from './tenantCredentials'\n\nexport default async function (builder: MigrationBuilder, args: TenantMigrationArgs) {\n\tbuilder.sql(`\nCREATE TYPE \"config_policy\" AS ENUM (\n 'always',\n 'never',\n 'optIn',\n 'optOut'\n);\nCREATE TYPE \"config_singleton\" AS ENUM (\n 'singleton'\n);\nCREATE TYPE \"person_token_type\" AS ENUM (\n 'password_reset',\n 'passwordless'\n);\nCREATE FUNCTION \"project_deleted\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tPERFORM pg_notify('project_updated', old.id::text);\n\tRETURN NULL;\nEND;\n$$;\nCREATE FUNCTION \"project_secret_updated\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tUPDATE project SET updated_at = 'now' WHERE id = COALESCE(new.project_id, old.project_id);\n\tPERFORM pg_notify('project_updated', COALESCE(new.project_id, old.project_id)::TEXT);\n\tRETURN NULL;\nEND;\n$$;\nCREATE FUNCTION \"project_updated\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tNEW.updated_at = 'now';\n\tPERFORM pg_notify('project_updated', new.id::text);\n\tRETURN new;\nEND;\n$$;\nCREATE TABLE \"api_key\" (\n \"id\" \"uuid\" NOT NULL,\n \"token_hash\" \"text\" NOT NULL,\n \"type\" \"text\" NOT NULL,\n \"identity_id\" \"uuid\" NOT NULL,\n \"expires_at\" timestamp with time zone,\n \"created_at\" timestamp with time zone NOT NULL,\n \"expiration\" integer,\n \"disabled_at\" timestamp with time zone\n);\nCREATE TABLE \"config\" (\n \"id\" \"config_singleton\" DEFAULT 'singleton'::\"config_singleton\" NOT NULL,\n \"passwordless_enabled\" \"config_policy\" DEFAULT 'never'::\"config_policy\" NOT NULL,\n \"passwordless_url\" \"text\",\n \"passwordless_expiration_minutes\" integer DEFAULT 5 NOT NULL\n);\nCREATE TABLE \"identity\" (\n \"id\" \"uuid\" NOT NULL,\n \"parent_id\" \"uuid\",\n \"roles\" \"jsonb\" NOT NULL,\n \"description\" \"text\",\n \"created_at\" timestamp with time zone NOT NULL\n);\nCREATE TABLE \"identity_provider\" (\n \"id\" \"uuid\" NOT NULL,\n \"slug\" \"text\" NOT NULL,\n \"type\" \"text\" NOT NULL,\n \"configuration\" \"jsonb\" NOT NULL,\n \"disabled_at\" timestamp with time zone,\n \"auto_sign_up\" boolean DEFAULT false NOT NULL,\n \"exclusive\" boolean DEFAULT false,\n \"init_returns_config\" boolean DEFAULT false NOT NULL\n);\nCREATE TABLE \"mail_template\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\",\n \"mail_type\" \"text\" NOT NULL,\n \"variant\" \"text\" NOT NULL,\n \"subject\" \"text\" NOT NULL,\n \"content\" \"text\" NOT NULL,\n \"use_layout\" boolean NOT NULL,\n \"reply_to\" \"text\"\n);\nCREATE TABLE \"person\" (\n \"id\" \"uuid\" NOT NULL,\n \"email\" \"text\",\n \"password_hash\" \"text\",\n \"identity_id\" \"uuid\" NOT NULL,\n \"otp_uri\" \"text\",\n \"otp_activated_at\" timestamp with time zone,\n \"name\" \"text\",\n \"idp_only\" boolean DEFAULT false NOT NULL,\n \"disabled_at\" timestamp with time zone,\n \"passwordless_enabled\" boolean,\n CONSTRAINT \"idp_only_no_email\" CHECK (((\"idp_only\" = false) OR ((\"idp_only\" = true) AND (\"email\" IS NULL))))\n);\nCREATE TABLE \"person_identity_provider\" (\n \"id\" \"uuid\" NOT NULL,\n \"person_id\" \"uuid\" NOT NULL,\n \"identity_provider_id\" \"uuid\" NOT NULL,\n \"created_at\" timestamp with time zone DEFAULT \"now\"() NOT NULL,\n \"external_identifier\" \"text\" NOT NULL\n);\nCREATE TABLE \"person_token\" (\n \"id\" \"uuid\" NOT NULL,\n \"token_hash\" \"text\" NOT NULL,\n \"person_id\" \"uuid\" NOT NULL,\n \"expires_at\" timestamp with time zone NOT NULL,\n \"created_at\" timestamp with time zone NOT NULL,\n \"used_at\" timestamp with time zone,\n \"type\" \"person_token_type\" DEFAULT 'password_reset'::\"person_token_type\" NOT NULL,\n \"otp_hash\" \"text\",\n \"otp_attempts\" integer DEFAULT 0 NOT NULL\n);\nCREATE TABLE \"project\" (\n \"id\" \"uuid\" NOT NULL,\n \"name\" \"text\" NOT NULL,\n \"slug\" \"text\" NOT NULL,\n \"config\" \"jsonb\" DEFAULT '{}'::\"jsonb\" NOT NULL,\n \"updated_at\" timestamp with time zone DEFAULT \"now\"() NOT NULL\n);\nCREATE TABLE \"project_membership\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\" NOT NULL,\n \"identity_id\" \"uuid\" NOT NULL,\n \"role\" \"text\" NOT NULL\n);\nCREATE TABLE \"project_membership_variable\" (\n \"id\" \"uuid\" NOT NULL,\n \"membership_id\" \"uuid\" NOT NULL,\n \"variable\" \"text\" NOT NULL,\n \"value\" \"jsonb\" NOT NULL\n);\nCREATE TABLE \"project_secret\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\" NOT NULL,\n \"key\" \"text\" NOT NULL,\n \"created_at\" timestamp with time zone NOT NULL,\n \"updated_at\" timestamp with time zone NOT NULL,\n \"value\" \"bytea\" NOT NULL,\n \"version\" smallint NOT NULL\n);\nALTER TABLE ONLY \"api_key\"\n ADD CONSTRAINT \"api_key_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"config\"\n ADD CONSTRAINT \"config_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"email_unique\" UNIQUE (\"email\");\nALTER TABLE ONLY \"identity\"\n ADD CONSTRAINT \"identity_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"identity_provider\"\n ADD CONSTRAINT \"identity_provider_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"identity_provider\"\n ADD CONSTRAINT \"identity_provider_slug_key\" UNIQUE (\"slug\");\nALTER TABLE ONLY \"mail_template\"\n ADD CONSTRAINT \"mail_template_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_identity_id_key\" UNIQUE (\"identity_id\");\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person_token\"\n ADD CONSTRAINT \"person_password_reset_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project\"\n ADD CONSTRAINT \"project_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_unique\" UNIQUE (\"membership_id\", \"variable\");\nALTER TABLE ONLY \"project_secret\"\n ADD CONSTRAINT \"project_secret_pkey\" PRIMARY KEY (\"id\");\nCREATE INDEX \"api_key_identity_id\" ON \"api_key\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"api_key_token_hash\" ON \"api_key\" USING \"btree\" (\"token_hash\");\nCREATE INDEX \"identity_parent_id\" ON \"identity\" USING \"btree\" (\"parent_id\");\nCREATE UNIQUE INDEX \"mail_template_identifier\" ON \"mail_template\" USING \"btree\" (\"project_id\", \"mail_type\", \"variant\") WHERE (\"project_id\" IS NOT NULL);\nCREATE UNIQUE INDEX \"mail_template_identifier_global\" ON \"mail_template\" USING \"btree\" (\"mail_type\", \"variant\") WHERE (\"project_id\" IS NULL);\nCREATE INDEX \"mail_template_project_index\" ON \"mail_template\" USING \"btree\" (\"project_id\");\nCREATE INDEX \"person_identity_id\" ON \"person\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"person_identity_provider_identifier\" ON \"person_identity_provider\" USING \"btree\" (\"identity_provider_id\", \"external_identifier\");\nCREATE INDEX \"person_identity_provider_person_id\" ON \"person_identity_provider\" USING \"btree\" (\"person_id\");\nCREATE UNIQUE INDEX \"person_password_reset_token\" ON \"person_token\" USING \"btree\" (\"token_hash\");\nCREATE INDEX \"project_alias\" ON \"project\" USING \"gin\" (((\"config\" -> 'alias'::\"text\")));\nCREATE INDEX \"project_membership_identity_index\" ON \"project_membership\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"project_membership_unique\" ON \"project_membership\" USING \"btree\" (\"project_id\", \"identity_id\", \"role\");\nCREATE INDEX \"project_secret_project_index\" ON \"project_secret\" USING \"btree\" (\"project_id\");\nCREATE UNIQUE INDEX \"project_secret_unique\" ON \"project_secret\" USING \"btree\" (\"project_id\", \"key\");\nCREATE UNIQUE INDEX \"project_slug\" ON \"project\" USING \"btree\" (\"slug\");\nCREATE TRIGGER \"project_deleted\" AFTER DELETE ON \"project\" FOR EACH ROW EXECUTE FUNCTION \"project_deleted\"();\nCREATE TRIGGER \"project_secret_updated\" AFTER INSERT OR DELETE OR UPDATE ON \"project_secret\" FOR EACH ROW EXECUTE FUNCTION \"project_secret_updated\"();\nCREATE TRIGGER \"project_updated\" BEFORE INSERT OR UPDATE OF \"name\", \"slug\", \"config\" ON \"project\" FOR EACH ROW EXECUTE FUNCTION \"project_updated\"();\nALTER TABLE ONLY \"api_key\"\n ADD CONSTRAINT \"api_key_identity_id_fkey\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"identity\"\n ADD CONSTRAINT \"identity_parent_id_fkey\" FOREIGN KEY (\"parent_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"mail_template\"\n ADD CONSTRAINT \"mail_template_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_identity_id_fkey\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_idp\" FOREIGN KEY (\"identity_provider_id\") REFERENCES \"identity_provider\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_person\" FOREIGN KEY (\"person_id\") REFERENCES \"person\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person_token\"\n ADD CONSTRAINT \"person_password_reset_person\" FOREIGN KEY (\"person_id\") REFERENCES \"person\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_identity\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_membership\" FOREIGN KEY (\"membership_id\") REFERENCES \"project_membership\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_secret\"\n ADD CONSTRAINT \"project_secret_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nINSERT INTO \"config\" (id)\nVALUES (DEFAULT);\n\nDO LANGUAGE plpgsql\n$$\n\tBEGIN\n\t\tEXECUTE FORMAT('ALTER FUNCTION project_secret_updated() SET SEARCH_PATH = %s', QUOTE_IDENT(CURRENT_SCHEMA()));\n\tEND\n$$;\n`)\n\n\tawait createCredentials(builder, args)\n}\n"],"names":["createCredentials"],"mappings":";;AAIA,eAAA,SAA+B,SAA2B,MAA2B;AACpF,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAgOZ;AAEM,QAAAA,kBAAA,kBAAkB,SAAS,IAAI;AACtC;;"}
@@ -1,6 +1,19 @@
1
1
  import { createCredentials } from "./tenantCredentials.js";
2
2
  async function snapshot(builder, args) {
3
3
  builder.sql(`
4
+ CREATE TYPE "config_policy" AS ENUM (
5
+ 'always',
6
+ 'never',
7
+ 'optIn',
8
+ 'optOut'
9
+ );
10
+ CREATE TYPE "config_singleton" AS ENUM (
11
+ 'singleton'
12
+ );
13
+ CREATE TYPE "person_token_type" AS ENUM (
14
+ 'password_reset',
15
+ 'passwordless'
16
+ );
4
17
  CREATE FUNCTION "project_deleted"() RETURNS "trigger"
5
18
  LANGUAGE "plpgsql"
6
19
  AS $$
@@ -37,6 +50,12 @@ CREATE TABLE "api_key" (
37
50
  "expiration" integer,
38
51
  "disabled_at" timestamp with time zone
39
52
  );
53
+ CREATE TABLE "config" (
54
+ "id" "config_singleton" DEFAULT 'singleton'::"config_singleton" NOT NULL,
55
+ "passwordless_enabled" "config_policy" DEFAULT 'never'::"config_policy" NOT NULL,
56
+ "passwordless_url" "text",
57
+ "passwordless_expiration_minutes" integer DEFAULT 5 NOT NULL
58
+ );
40
59
  CREATE TABLE "identity" (
41
60
  "id" "uuid" NOT NULL,
42
61
  "parent_id" "uuid",
@@ -74,6 +93,7 @@ CREATE TABLE "person" (
74
93
  "name" "text",
75
94
  "idp_only" boolean DEFAULT false NOT NULL,
76
95
  "disabled_at" timestamp with time zone,
96
+ "passwordless_enabled" boolean,
77
97
  CONSTRAINT "idp_only_no_email" CHECK ((("idp_only" = false) OR (("idp_only" = true) AND ("email" IS NULL))))
78
98
  );
79
99
  CREATE TABLE "person_identity_provider" (
@@ -83,13 +103,16 @@ CREATE TABLE "person_identity_provider" (
83
103
  "created_at" timestamp with time zone DEFAULT "now"() NOT NULL,
84
104
  "external_identifier" "text" NOT NULL
85
105
  );
86
- CREATE TABLE "person_password_reset" (
106
+ CREATE TABLE "person_token" (
87
107
  "id" "uuid" NOT NULL,
88
108
  "token_hash" "text" NOT NULL,
89
109
  "person_id" "uuid" NOT NULL,
90
110
  "expires_at" timestamp with time zone NOT NULL,
91
111
  "created_at" timestamp with time zone NOT NULL,
92
- "used_at" timestamp with time zone
112
+ "used_at" timestamp with time zone,
113
+ "type" "person_token_type" DEFAULT 'password_reset'::"person_token_type" NOT NULL,
114
+ "otp_hash" "text",
115
+ "otp_attempts" integer DEFAULT 0 NOT NULL
93
116
  );
94
117
  CREATE TABLE "project" (
95
118
  "id" "uuid" NOT NULL,
@@ -121,6 +144,8 @@ CREATE TABLE "project_secret" (
121
144
  );
122
145
  ALTER TABLE ONLY "api_key"
123
146
  ADD CONSTRAINT "api_key_id" PRIMARY KEY ("id");
147
+ ALTER TABLE ONLY "config"
148
+ ADD CONSTRAINT "config_pkey" PRIMARY KEY ("id");
124
149
  ALTER TABLE ONLY "person"
125
150
  ADD CONSTRAINT "email_unique" UNIQUE ("email");
126
151
  ALTER TABLE ONLY "identity"
@@ -137,7 +162,7 @@ ALTER TABLE ONLY "person"
137
162
  ADD CONSTRAINT "person_identity_id_key" UNIQUE ("identity_id");
138
163
  ALTER TABLE ONLY "person_identity_provider"
139
164
  ADD CONSTRAINT "person_identity_provider_pkey" PRIMARY KEY ("id");
140
- ALTER TABLE ONLY "person_password_reset"
165
+ ALTER TABLE ONLY "person_token"
141
166
  ADD CONSTRAINT "person_password_reset_id" PRIMARY KEY ("id");
142
167
  ALTER TABLE ONLY "project"
143
168
  ADD CONSTRAINT "project_id" PRIMARY KEY ("id");
@@ -158,7 +183,7 @@ CREATE INDEX "mail_template_project_index" ON "mail_template" USING "btree" ("pr
158
183
  CREATE INDEX "person_identity_id" ON "person" USING "btree" ("identity_id");
159
184
  CREATE UNIQUE INDEX "person_identity_provider_identifier" ON "person_identity_provider" USING "btree" ("identity_provider_id", "external_identifier");
160
185
  CREATE INDEX "person_identity_provider_person_id" ON "person_identity_provider" USING "btree" ("person_id");
161
- CREATE UNIQUE INDEX "person_password_reset_token" ON "person_password_reset" USING "btree" ("token_hash");
186
+ CREATE UNIQUE INDEX "person_password_reset_token" ON "person_token" USING "btree" ("token_hash");
162
187
  CREATE INDEX "project_alias" ON "project" USING "gin" ((("config" -> 'alias'::"text")));
163
188
  CREATE INDEX "project_membership_identity_index" ON "project_membership" USING "btree" ("identity_id");
164
189
  CREATE UNIQUE INDEX "project_membership_unique" ON "project_membership" USING "btree" ("project_id", "identity_id", "role");
@@ -180,7 +205,7 @@ ALTER TABLE ONLY "person_identity_provider"
180
205
  ADD CONSTRAINT "person_identity_provider_idp" FOREIGN KEY ("identity_provider_id") REFERENCES "identity_provider"("id") ON DELETE CASCADE;
181
206
  ALTER TABLE ONLY "person_identity_provider"
182
207
  ADD CONSTRAINT "person_identity_provider_person" FOREIGN KEY ("person_id") REFERENCES "person"("id") ON DELETE CASCADE;
183
- ALTER TABLE ONLY "person_password_reset"
208
+ ALTER TABLE ONLY "person_token"
184
209
  ADD CONSTRAINT "person_password_reset_person" FOREIGN KEY ("person_id") REFERENCES "person"("id") ON DELETE CASCADE;
185
210
  ALTER TABLE ONLY "project_membership"
186
211
  ADD CONSTRAINT "project_membership_identity" FOREIGN KEY ("identity_id") REFERENCES "identity"("id") ON DELETE CASCADE;
@@ -190,6 +215,9 @@ ALTER TABLE ONLY "project_membership_variable"
190
215
  ADD CONSTRAINT "project_membership_variable_membership" FOREIGN KEY ("membership_id") REFERENCES "project_membership"("id") ON DELETE CASCADE;
191
216
  ALTER TABLE ONLY "project_secret"
192
217
  ADD CONSTRAINT "project_secret_project" FOREIGN KEY ("project_id") REFERENCES "project"("id") ON DELETE CASCADE;
218
+ INSERT INTO "config" (id)
219
+ VALUES (DEFAULT);
220
+
193
221
  DO LANGUAGE plpgsql
194
222
  $$
195
223
  BEGIN
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sources":["../../../../../packages/engine-tenant-api/src/migrations/snapshot.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { TenantMigrationArgs } from './types'\nimport { createCredentials } from './tenantCredentials'\n\nexport default async function (builder: MigrationBuilder, args: TenantMigrationArgs) {\n\tbuilder.sql(`\nCREATE FUNCTION \"project_deleted\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tPERFORM pg_notify('project_updated', old.id::text);\n\tRETURN NULL;\nEND;\n$$;\nCREATE FUNCTION \"project_secret_updated\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tUPDATE project SET updated_at = 'now' WHERE id = COALESCE(new.project_id, old.project_id);\n\tPERFORM pg_notify('project_updated', COALESCE(new.project_id, old.project_id)::TEXT);\n\tRETURN NULL;\nEND;\n$$;\nCREATE FUNCTION \"project_updated\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tNEW.updated_at = 'now';\n\tPERFORM pg_notify('project_updated', new.id::text);\n\tRETURN new;\nEND;\n$$;\nCREATE TABLE \"api_key\" (\n \"id\" \"uuid\" NOT NULL,\n \"token_hash\" \"text\" NOT NULL,\n \"type\" \"text\" NOT NULL,\n \"identity_id\" \"uuid\" NOT NULL,\n \"expires_at\" timestamp with time zone,\n \"created_at\" timestamp with time zone NOT NULL,\n \"expiration\" integer,\n \"disabled_at\" timestamp with time zone\n);\nCREATE TABLE \"identity\" (\n \"id\" \"uuid\" NOT NULL,\n \"parent_id\" \"uuid\",\n \"roles\" \"jsonb\" NOT NULL,\n \"description\" \"text\",\n \"created_at\" timestamp with time zone NOT NULL\n);\nCREATE TABLE \"identity_provider\" (\n \"id\" \"uuid\" NOT NULL,\n \"slug\" \"text\" NOT NULL,\n \"type\" \"text\" NOT NULL,\n \"configuration\" \"jsonb\" NOT NULL,\n \"disabled_at\" timestamp with time zone,\n \"auto_sign_up\" boolean DEFAULT false NOT NULL,\n \"exclusive\" boolean DEFAULT false,\n \"init_returns_config\" boolean DEFAULT false NOT NULL\n);\nCREATE TABLE \"mail_template\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\",\n \"mail_type\" \"text\" NOT NULL,\n \"variant\" \"text\" NOT NULL,\n \"subject\" \"text\" NOT NULL,\n \"content\" \"text\" NOT NULL,\n \"use_layout\" boolean NOT NULL,\n \"reply_to\" \"text\"\n);\nCREATE TABLE \"person\" (\n \"id\" \"uuid\" NOT NULL,\n \"email\" \"text\",\n \"password_hash\" \"text\",\n \"identity_id\" \"uuid\" NOT NULL,\n \"otp_uri\" \"text\",\n \"otp_activated_at\" timestamp with time zone,\n \"name\" \"text\",\n \"idp_only\" boolean DEFAULT false NOT NULL,\n \"disabled_at\" timestamp with time zone,\n CONSTRAINT \"idp_only_no_email\" CHECK (((\"idp_only\" = false) OR ((\"idp_only\" = true) AND (\"email\" IS NULL))))\n);\nCREATE TABLE \"person_identity_provider\" (\n \"id\" \"uuid\" NOT NULL,\n \"person_id\" \"uuid\" NOT NULL,\n \"identity_provider_id\" \"uuid\" NOT NULL,\n \"created_at\" timestamp with time zone DEFAULT \"now\"() NOT NULL,\n \"external_identifier\" \"text\" NOT NULL\n);\nCREATE TABLE \"person_password_reset\" (\n \"id\" \"uuid\" NOT NULL,\n \"token_hash\" \"text\" NOT NULL,\n \"person_id\" \"uuid\" NOT NULL,\n \"expires_at\" timestamp with time zone NOT NULL,\n \"created_at\" timestamp with time zone NOT NULL,\n \"used_at\" timestamp with time zone\n);\nCREATE TABLE \"project\" (\n \"id\" \"uuid\" NOT NULL,\n \"name\" \"text\" NOT NULL,\n \"slug\" \"text\" NOT NULL,\n \"config\" \"jsonb\" DEFAULT '{}'::\"jsonb\" NOT NULL,\n \"updated_at\" timestamp with time zone DEFAULT \"now\"() NOT NULL\n);\nCREATE TABLE \"project_membership\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\" NOT NULL,\n \"identity_id\" \"uuid\" NOT NULL,\n \"role\" \"text\" NOT NULL\n);\nCREATE TABLE \"project_membership_variable\" (\n \"id\" \"uuid\" NOT NULL,\n \"membership_id\" \"uuid\" NOT NULL,\n \"variable\" \"text\" NOT NULL,\n \"value\" \"jsonb\" NOT NULL\n);\nCREATE TABLE \"project_secret\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\" NOT NULL,\n \"key\" \"text\" NOT NULL,\n \"created_at\" timestamp with time zone NOT NULL,\n \"updated_at\" timestamp with time zone NOT NULL,\n \"value\" \"bytea\" NOT NULL,\n \"version\" smallint NOT NULL\n);\nALTER TABLE ONLY \"api_key\"\n ADD CONSTRAINT \"api_key_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"email_unique\" UNIQUE (\"email\");\nALTER TABLE ONLY \"identity\"\n ADD CONSTRAINT \"identity_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"identity_provider\"\n ADD CONSTRAINT \"identity_provider_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"identity_provider\"\n ADD CONSTRAINT \"identity_provider_slug_key\" UNIQUE (\"slug\");\nALTER TABLE ONLY \"mail_template\"\n ADD CONSTRAINT \"mail_template_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_identity_id_key\" UNIQUE (\"identity_id\");\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person_password_reset\"\n ADD CONSTRAINT \"person_password_reset_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project\"\n ADD CONSTRAINT \"project_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_unique\" UNIQUE (\"membership_id\", \"variable\");\nALTER TABLE ONLY \"project_secret\"\n ADD CONSTRAINT \"project_secret_pkey\" PRIMARY KEY (\"id\");\nCREATE INDEX \"api_key_identity_id\" ON \"api_key\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"api_key_token_hash\" ON \"api_key\" USING \"btree\" (\"token_hash\");\nCREATE INDEX \"identity_parent_id\" ON \"identity\" USING \"btree\" (\"parent_id\");\nCREATE UNIQUE INDEX \"mail_template_identifier\" ON \"mail_template\" USING \"btree\" (\"project_id\", \"mail_type\", \"variant\") WHERE (\"project_id\" IS NOT NULL);\nCREATE UNIQUE INDEX \"mail_template_identifier_global\" ON \"mail_template\" USING \"btree\" (\"mail_type\", \"variant\") WHERE (\"project_id\" IS NULL);\nCREATE INDEX \"mail_template_project_index\" ON \"mail_template\" USING \"btree\" (\"project_id\");\nCREATE INDEX \"person_identity_id\" ON \"person\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"person_identity_provider_identifier\" ON \"person_identity_provider\" USING \"btree\" (\"identity_provider_id\", \"external_identifier\");\nCREATE INDEX \"person_identity_provider_person_id\" ON \"person_identity_provider\" USING \"btree\" (\"person_id\");\nCREATE UNIQUE INDEX \"person_password_reset_token\" ON \"person_password_reset\" USING \"btree\" (\"token_hash\");\nCREATE INDEX \"project_alias\" ON \"project\" USING \"gin\" (((\"config\" -> 'alias'::\"text\")));\nCREATE INDEX \"project_membership_identity_index\" ON \"project_membership\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"project_membership_unique\" ON \"project_membership\" USING \"btree\" (\"project_id\", \"identity_id\", \"role\");\nCREATE INDEX \"project_secret_project_index\" ON \"project_secret\" USING \"btree\" (\"project_id\");\nCREATE UNIQUE INDEX \"project_secret_unique\" ON \"project_secret\" USING \"btree\" (\"project_id\", \"key\");\nCREATE UNIQUE INDEX \"project_slug\" ON \"project\" USING \"btree\" (\"slug\");\nCREATE TRIGGER \"project_deleted\" AFTER DELETE ON \"project\" FOR EACH ROW EXECUTE FUNCTION \"project_deleted\"();\nCREATE TRIGGER \"project_secret_updated\" AFTER INSERT OR DELETE OR UPDATE ON \"project_secret\" FOR EACH ROW EXECUTE FUNCTION \"project_secret_updated\"();\nCREATE TRIGGER \"project_updated\" BEFORE INSERT OR UPDATE OF \"name\", \"slug\", \"config\" ON \"project\" FOR EACH ROW EXECUTE FUNCTION \"project_updated\"();\nALTER TABLE ONLY \"api_key\"\n ADD CONSTRAINT \"api_key_identity_id_fkey\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"identity\"\n ADD CONSTRAINT \"identity_parent_id_fkey\" FOREIGN KEY (\"parent_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"mail_template\"\n ADD CONSTRAINT \"mail_template_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_identity_id_fkey\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_idp\" FOREIGN KEY (\"identity_provider_id\") REFERENCES \"identity_provider\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_person\" FOREIGN KEY (\"person_id\") REFERENCES \"person\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person_password_reset\"\n ADD CONSTRAINT \"person_password_reset_person\" FOREIGN KEY (\"person_id\") REFERENCES \"person\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_identity\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_membership\" FOREIGN KEY (\"membership_id\") REFERENCES \"project_membership\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_secret\"\n ADD CONSTRAINT \"project_secret_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nDO LANGUAGE plpgsql\n$$\n\tBEGIN\n\t\tEXECUTE FORMAT('ALTER FUNCTION project_secret_updated() SET SEARCH_PATH = %s', QUOTE_IDENT(CURRENT_SCHEMA()));\n\tEND\n$$;\n`)\n\n\tawait createCredentials(builder, args)\n}\n"],"names":[],"mappings":";AAIA,eAAA,SAA+B,SAA2B,MAA2B;AACpF,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAoMZ;AAEM,QAAA,kBAAkB,SAAS,IAAI;AACtC;"}
1
+ {"version":3,"file":"snapshot.js","sources":["../../../../../packages/engine-tenant-api/src/migrations/snapshot.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { TenantMigrationArgs } from './types'\nimport { createCredentials } from './tenantCredentials'\n\nexport default async function (builder: MigrationBuilder, args: TenantMigrationArgs) {\n\tbuilder.sql(`\nCREATE TYPE \"config_policy\" AS ENUM (\n 'always',\n 'never',\n 'optIn',\n 'optOut'\n);\nCREATE TYPE \"config_singleton\" AS ENUM (\n 'singleton'\n);\nCREATE TYPE \"person_token_type\" AS ENUM (\n 'password_reset',\n 'passwordless'\n);\nCREATE FUNCTION \"project_deleted\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tPERFORM pg_notify('project_updated', old.id::text);\n\tRETURN NULL;\nEND;\n$$;\nCREATE FUNCTION \"project_secret_updated\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tUPDATE project SET updated_at = 'now' WHERE id = COALESCE(new.project_id, old.project_id);\n\tPERFORM pg_notify('project_updated', COALESCE(new.project_id, old.project_id)::TEXT);\n\tRETURN NULL;\nEND;\n$$;\nCREATE FUNCTION \"project_updated\"() RETURNS \"trigger\"\n LANGUAGE \"plpgsql\"\n AS $$\nBEGIN\n\tNEW.updated_at = 'now';\n\tPERFORM pg_notify('project_updated', new.id::text);\n\tRETURN new;\nEND;\n$$;\nCREATE TABLE \"api_key\" (\n \"id\" \"uuid\" NOT NULL,\n \"token_hash\" \"text\" NOT NULL,\n \"type\" \"text\" NOT NULL,\n \"identity_id\" \"uuid\" NOT NULL,\n \"expires_at\" timestamp with time zone,\n \"created_at\" timestamp with time zone NOT NULL,\n \"expiration\" integer,\n \"disabled_at\" timestamp with time zone\n);\nCREATE TABLE \"config\" (\n \"id\" \"config_singleton\" DEFAULT 'singleton'::\"config_singleton\" NOT NULL,\n \"passwordless_enabled\" \"config_policy\" DEFAULT 'never'::\"config_policy\" NOT NULL,\n \"passwordless_url\" \"text\",\n \"passwordless_expiration_minutes\" integer DEFAULT 5 NOT NULL\n);\nCREATE TABLE \"identity\" (\n \"id\" \"uuid\" NOT NULL,\n \"parent_id\" \"uuid\",\n \"roles\" \"jsonb\" NOT NULL,\n \"description\" \"text\",\n \"created_at\" timestamp with time zone NOT NULL\n);\nCREATE TABLE \"identity_provider\" (\n \"id\" \"uuid\" NOT NULL,\n \"slug\" \"text\" NOT NULL,\n \"type\" \"text\" NOT NULL,\n \"configuration\" \"jsonb\" NOT NULL,\n \"disabled_at\" timestamp with time zone,\n \"auto_sign_up\" boolean DEFAULT false NOT NULL,\n \"exclusive\" boolean DEFAULT false,\n \"init_returns_config\" boolean DEFAULT false NOT NULL\n);\nCREATE TABLE \"mail_template\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\",\n \"mail_type\" \"text\" NOT NULL,\n \"variant\" \"text\" NOT NULL,\n \"subject\" \"text\" NOT NULL,\n \"content\" \"text\" NOT NULL,\n \"use_layout\" boolean NOT NULL,\n \"reply_to\" \"text\"\n);\nCREATE TABLE \"person\" (\n \"id\" \"uuid\" NOT NULL,\n \"email\" \"text\",\n \"password_hash\" \"text\",\n \"identity_id\" \"uuid\" NOT NULL,\n \"otp_uri\" \"text\",\n \"otp_activated_at\" timestamp with time zone,\n \"name\" \"text\",\n \"idp_only\" boolean DEFAULT false NOT NULL,\n \"disabled_at\" timestamp with time zone,\n \"passwordless_enabled\" boolean,\n CONSTRAINT \"idp_only_no_email\" CHECK (((\"idp_only\" = false) OR ((\"idp_only\" = true) AND (\"email\" IS NULL))))\n);\nCREATE TABLE \"person_identity_provider\" (\n \"id\" \"uuid\" NOT NULL,\n \"person_id\" \"uuid\" NOT NULL,\n \"identity_provider_id\" \"uuid\" NOT NULL,\n \"created_at\" timestamp with time zone DEFAULT \"now\"() NOT NULL,\n \"external_identifier\" \"text\" NOT NULL\n);\nCREATE TABLE \"person_token\" (\n \"id\" \"uuid\" NOT NULL,\n \"token_hash\" \"text\" NOT NULL,\n \"person_id\" \"uuid\" NOT NULL,\n \"expires_at\" timestamp with time zone NOT NULL,\n \"created_at\" timestamp with time zone NOT NULL,\n \"used_at\" timestamp with time zone,\n \"type\" \"person_token_type\" DEFAULT 'password_reset'::\"person_token_type\" NOT NULL,\n \"otp_hash\" \"text\",\n \"otp_attempts\" integer DEFAULT 0 NOT NULL\n);\nCREATE TABLE \"project\" (\n \"id\" \"uuid\" NOT NULL,\n \"name\" \"text\" NOT NULL,\n \"slug\" \"text\" NOT NULL,\n \"config\" \"jsonb\" DEFAULT '{}'::\"jsonb\" NOT NULL,\n \"updated_at\" timestamp with time zone DEFAULT \"now\"() NOT NULL\n);\nCREATE TABLE \"project_membership\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\" NOT NULL,\n \"identity_id\" \"uuid\" NOT NULL,\n \"role\" \"text\" NOT NULL\n);\nCREATE TABLE \"project_membership_variable\" (\n \"id\" \"uuid\" NOT NULL,\n \"membership_id\" \"uuid\" NOT NULL,\n \"variable\" \"text\" NOT NULL,\n \"value\" \"jsonb\" NOT NULL\n);\nCREATE TABLE \"project_secret\" (\n \"id\" \"uuid\" NOT NULL,\n \"project_id\" \"uuid\" NOT NULL,\n \"key\" \"text\" NOT NULL,\n \"created_at\" timestamp with time zone NOT NULL,\n \"updated_at\" timestamp with time zone NOT NULL,\n \"value\" \"bytea\" NOT NULL,\n \"version\" smallint NOT NULL\n);\nALTER TABLE ONLY \"api_key\"\n ADD CONSTRAINT \"api_key_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"config\"\n ADD CONSTRAINT \"config_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"email_unique\" UNIQUE (\"email\");\nALTER TABLE ONLY \"identity\"\n ADD CONSTRAINT \"identity_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"identity_provider\"\n ADD CONSTRAINT \"identity_provider_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"identity_provider\"\n ADD CONSTRAINT \"identity_provider_slug_key\" UNIQUE (\"slug\");\nALTER TABLE ONLY \"mail_template\"\n ADD CONSTRAINT \"mail_template_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_identity_id_key\" UNIQUE (\"identity_id\");\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"person_token\"\n ADD CONSTRAINT \"person_password_reset_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project\"\n ADD CONSTRAINT \"project_id\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_pkey\" PRIMARY KEY (\"id\");\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_unique\" UNIQUE (\"membership_id\", \"variable\");\nALTER TABLE ONLY \"project_secret\"\n ADD CONSTRAINT \"project_secret_pkey\" PRIMARY KEY (\"id\");\nCREATE INDEX \"api_key_identity_id\" ON \"api_key\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"api_key_token_hash\" ON \"api_key\" USING \"btree\" (\"token_hash\");\nCREATE INDEX \"identity_parent_id\" ON \"identity\" USING \"btree\" (\"parent_id\");\nCREATE UNIQUE INDEX \"mail_template_identifier\" ON \"mail_template\" USING \"btree\" (\"project_id\", \"mail_type\", \"variant\") WHERE (\"project_id\" IS NOT NULL);\nCREATE UNIQUE INDEX \"mail_template_identifier_global\" ON \"mail_template\" USING \"btree\" (\"mail_type\", \"variant\") WHERE (\"project_id\" IS NULL);\nCREATE INDEX \"mail_template_project_index\" ON \"mail_template\" USING \"btree\" (\"project_id\");\nCREATE INDEX \"person_identity_id\" ON \"person\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"person_identity_provider_identifier\" ON \"person_identity_provider\" USING \"btree\" (\"identity_provider_id\", \"external_identifier\");\nCREATE INDEX \"person_identity_provider_person_id\" ON \"person_identity_provider\" USING \"btree\" (\"person_id\");\nCREATE UNIQUE INDEX \"person_password_reset_token\" ON \"person_token\" USING \"btree\" (\"token_hash\");\nCREATE INDEX \"project_alias\" ON \"project\" USING \"gin\" (((\"config\" -> 'alias'::\"text\")));\nCREATE INDEX \"project_membership_identity_index\" ON \"project_membership\" USING \"btree\" (\"identity_id\");\nCREATE UNIQUE INDEX \"project_membership_unique\" ON \"project_membership\" USING \"btree\" (\"project_id\", \"identity_id\", \"role\");\nCREATE INDEX \"project_secret_project_index\" ON \"project_secret\" USING \"btree\" (\"project_id\");\nCREATE UNIQUE INDEX \"project_secret_unique\" ON \"project_secret\" USING \"btree\" (\"project_id\", \"key\");\nCREATE UNIQUE INDEX \"project_slug\" ON \"project\" USING \"btree\" (\"slug\");\nCREATE TRIGGER \"project_deleted\" AFTER DELETE ON \"project\" FOR EACH ROW EXECUTE FUNCTION \"project_deleted\"();\nCREATE TRIGGER \"project_secret_updated\" AFTER INSERT OR DELETE OR UPDATE ON \"project_secret\" FOR EACH ROW EXECUTE FUNCTION \"project_secret_updated\"();\nCREATE TRIGGER \"project_updated\" BEFORE INSERT OR UPDATE OF \"name\", \"slug\", \"config\" ON \"project\" FOR EACH ROW EXECUTE FUNCTION \"project_updated\"();\nALTER TABLE ONLY \"api_key\"\n ADD CONSTRAINT \"api_key_identity_id_fkey\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"identity\"\n ADD CONSTRAINT \"identity_parent_id_fkey\" FOREIGN KEY (\"parent_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"mail_template\"\n ADD CONSTRAINT \"mail_template_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person\"\n ADD CONSTRAINT \"person_identity_id_fkey\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\");\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_idp\" FOREIGN KEY (\"identity_provider_id\") REFERENCES \"identity_provider\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person_identity_provider\"\n ADD CONSTRAINT \"person_identity_provider_person\" FOREIGN KEY (\"person_id\") REFERENCES \"person\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"person_token\"\n ADD CONSTRAINT \"person_password_reset_person\" FOREIGN KEY (\"person_id\") REFERENCES \"person\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_identity\" FOREIGN KEY (\"identity_id\") REFERENCES \"identity\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership\"\n ADD CONSTRAINT \"project_membership_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_membership_variable\"\n ADD CONSTRAINT \"project_membership_variable_membership\" FOREIGN KEY (\"membership_id\") REFERENCES \"project_membership\"(\"id\") ON DELETE CASCADE;\nALTER TABLE ONLY \"project_secret\"\n ADD CONSTRAINT \"project_secret_project\" FOREIGN KEY (\"project_id\") REFERENCES \"project\"(\"id\") ON DELETE CASCADE;\nINSERT INTO \"config\" (id)\nVALUES (DEFAULT);\n\nDO LANGUAGE plpgsql\n$$\n\tBEGIN\n\t\tEXECUTE FORMAT('ALTER FUNCTION project_secret_updated() SET SEARCH_PATH = %s', QUOTE_IDENT(CURRENT_SCHEMA()));\n\tEND\n$$;\n`)\n\n\tawait createCredentials(builder, args)\n}\n"],"names":[],"mappings":";AAIA,eAAA,SAA+B,SAA2B,MAA2B;AACpF,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAgOZ;AAEM,QAAA,kBAAkB,SAAS,IAAI;AACtC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tenantCredentials.cjs","sources":["../../../../../packages/engine-tenant-api/src/migrations/tenantCredentials.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { TenantMigrationArgs } from './types'\n\nexport const createCredentials = async (builder: MigrationBuilder, args: TenantMigrationArgs) => {\n\tconst credentials = await args.getCredentials()\n\tif (credentials.loginTokenHash) {\n\t\tconst tokenHash = credentials.loginTokenHash\n\t\tbuilder.sql(`\n\t\t\tWITH identity AS (\n\t\t\t INSERT INTO identity(id, parent_id, roles, description, created_at)\n\t\t\t\tVALUES (${escapeValue(args.providers.uuid())}, NULL, '[\"login\"]'::JSONB, 'Login key', now()) RETURNING id\n\t\t\t)\n\t\t\tINSERT INTO api_key (id, token_hash, type, identity_id, disabled_at, expires_at, expiration, created_at)\n\t\t\tSELECT ${escapeValue(args.providers.uuid())}, ${escapeValue(tokenHash)}, 'permanent', identity.id, NULL, NULL, NULL, now()\n\t\t\tFROM identity\n\t\t\t`)\n\t}\n\n\tif (!credentials.rootTokenHash) {\n\t\tthrow 'Please specify a root token using CONTEMBER_ROOT_TOKEN env variable.'\n\t}\n\n\tif (credentials.rootEmail && !credentials.rootPasswordBcrypted) {\n\t\tthrow 'Please specify a root password using CONTEMBER_ROOT_PASSWORD env variable.'\n\t}\n\tconst rootEmail = credentials.rootPasswordBcrypted ? credentials.rootEmail || 'root@localhost' : null\n\tconst rootPasswordHash = credentials.rootPasswordBcrypted || null\n\n\tconst rootTokenHash = credentials.rootTokenHash\n\n\tbuilder.sql(`\n\t\t\tWITH identity AS (\n\t\t\t\tINSERT INTO identity(id, parent_id, roles, description, created_at)\n\t\t\t\tVALUES (\n\t\t\t\t\t\t${escapeValue(args.providers.uuid())},\n\t\t\t\t\t\tNULL,\n\t\t\t\t\t\t'[\"super_admin\"]'::JSONB\n\t\t\t\t\t\t\t|| (CASE WHEN ${escapeValue(rootEmail)} IS NOT NULL THEN '[\"person\"]'::JSONB ELSE '[]'::JSONB END),\n\t\t\t\t\t\t'Superadmin',\n\t\t\t\t\t\tnow()\n\t\t\t\t\t) RETURNING id\n\t\t\t),\n\t\t\tperson AS (\n\t\t\t\tINSERT INTO person(id, email, password_hash, identity_id)\n\t\t\t\tSELECT ${escapeValue(args.providers.uuid())}, ${escapeValue(rootEmail)}, ${escapeValue(rootPasswordHash)}, identity.id\n\t\t\t\tFROM identity\n\t\t\t\tWHERE ${escapeValue(rootEmail)} IS NOT NULL\n\t\t\t RETURNING id\n\t\t\t),\n\t\t\tapi_key AS (\n\t\t\t\tINSERT INTO api_key (id, token_hash, type, identity_id, disabled_at, expires_at, expiration, created_at)\n\t\t\t\tSELECT ${escapeValue(args.providers.uuid())}, ${escapeValue(rootTokenHash)}, 'permanent', identity.id, NULL, NULL, NULL, now()\n\t\t\t\tFROM identity WHERE ${escapeValue(rootTokenHash)} IS NOT NULL\n\t\t\t RETURNING id\n\t\t\t)\n\t\t\tSELECT * FROM person, api_key\n\t\t`)\n}\n"],"names":["escapeValue"],"mappings":";;;AAGa,MAAA,oBAAoB,OAAO,SAA2B,SAA8B;AAC1F,QAAA,cAAc,MAAM,KAAK;AAC/B,MAAI,YAAY,gBAAgB;AAC/B,UAAM,YAAY,YAAY;AAC9B,YAAQ,IAAI;AAAA;AAAA;AAAA,cAGAA,mBAAY,YAAA,KAAK,UAAU,KAAM,CAAA,CAAC;AAAA;AAAA;AAAA,YAGpCA,mBAAA,YAAY,KAAK,UAAU,KAAM,CAAA,CAAC,KAAKA,+BAAY,SAAS,CAAC;AAAA;AAAA,IAErE;AAAA,EACH;AAEI,MAAA,CAAC,YAAY,eAAe;AACzB,UAAA;AAAA,EACP;AAEA,MAAI,YAAY,aAAa,CAAC,YAAY,sBAAsB;AACzD,UAAA;AAAA,EACP;AACA,QAAM,YAAY,YAAY,uBAAuB,YAAY,aAAa,mBAAmB;AAC3F,QAAA,mBAAmB,YAAY,wBAAwB;AAE7D,QAAM,gBAAgB,YAAY;AAElC,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA,QAILA,mBAAY,YAAA,KAAK,UAAU,KAAM,CAAA,CAAC;AAAA;AAAA;AAAA,uBAGnBA,mBAAAA,YAAY,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAOhCA,mBAAY,YAAA,KAAK,UAAU,KAAM,CAAA,CAAC,KAAKA,mBAAA,YAAY,SAAS,CAAC,KAAKA,mBAAA,YAAY,gBAAgB,CAAC;AAAA;AAAA,YAEhGA,mBAAAA,YAAY,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,aAKrBA,mBAAA,YAAY,KAAK,UAAU,KAAM,CAAA,CAAC,KAAKA,+BAAY,aAAa,CAAC;AAAA,0BACpDA,mBAAAA,YAAY,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA,GAIjD;AACH;;"}
1
+ {"version":3,"file":"tenantCredentials.cjs","sources":["../../../../../packages/engine-tenant-api/src/migrations/tenantCredentials.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { TenantMigrationArgs } from './types'\n\nexport const createCredentials = async (builder: MigrationBuilder, args: TenantMigrationArgs) => {\n\tconst credentials = await args.getCredentials()\n\tif (credentials.loginTokenHash) {\n\t\tconst tokenHash = credentials.loginTokenHash\n\t\tbuilder.sql(`\n\t\t\tWITH identity AS (\n\t\t\t INSERT INTO identity(id, parent_id, roles, description, created_at)\n\t\t\t\tVALUES (${escapeValue(args.providers.uuid())}, NULL, '[\"login\"]'::JSONB, 'Login key', now()) RETURNING id\n\t\t\t)\n\t\t\tINSERT INTO api_key (id, token_hash, type, identity_id, disabled_at, expires_at, expiration, created_at)\n\t\t\tSELECT ${escapeValue(args.providers.uuid())}, ${escapeValue(tokenHash)}, 'permanent', identity.id, NULL, NULL, NULL, now()\n\t\t\tFROM identity\n\t\t\t`)\n\t}\n\n\tif (!credentials.rootTokenHash) {\n\t\tthrow 'Please specify a root token using CONTEMBER_ROOT_TOKEN env variable.'\n\t}\n\n\tif (credentials.rootEmail && !credentials.rootPasswordBcrypted) {\n\t\tthrow 'Please specify a root password using CONTEMBER_ROOT_PASSWORD env variable.'\n\t}\n\tconst rootEmail = credentials.rootPasswordBcrypted ? credentials.rootEmail || 'root@localhost' : null\n\tconst rootPasswordHash = credentials.rootPasswordBcrypted || null\n\n\tconst rootTokenHash = credentials.rootTokenHash\n\n\tbuilder.sql(`\n\t\t\tWITH identity AS (\n\t\t\t\tINSERT INTO identity(id, parent_id, roles, description, created_at)\n\t\t\t\tVALUES (\n\t\t\t\t\t\t${escapeValue(args.providers.uuid())},\n\t\t\t\t\t\tNULL,\n\t\t\t\t\t\t'[\"super_admin\"]'::JSONB\n\t\t\t\t\t\t\t|| (CASE WHEN ${escapeValue(rootEmail)} IS NOT NULL THEN '[\"person\"]'::JSONB ELSE '[]'::JSONB END),\n\t\t\t\t\t\t'Superadmin',\n\t\t\t\t\t\tnow()\n\t\t\t\t\t) RETURNING id\n\t\t\t),\n\t\t\tperson AS (\n\t\t\t\tINSERT INTO person(id, email, password_hash, identity_id)\n\t\t\t\tSELECT ${escapeValue(args.providers.uuid())}, ${escapeValue(rootEmail)}, ${escapeValue(rootPasswordHash)}, identity.id\n\t\t\t\tFROM identity\n\t\t\t\tWHERE ${escapeValue(rootEmail)} IS NOT NULL\n\t\t\t RETURNING id\n\t\t\t),\n\t\t\tapi_key AS (\n\t\t\t\tINSERT INTO api_key (id, token_hash, type, identity_id, disabled_at, expires_at, expiration, created_at)\n\t\t\t\tSELECT ${escapeValue(args.providers.uuid())}, ${escapeValue(rootTokenHash)}, 'permanent', identity.id, NULL, NULL, NULL, now()\n\t\t\t\tFROM identity WHERE ${escapeValue(rootTokenHash)} IS NOT NULL\n\t\t\t RETURNING id\n\t\t\t)\n\t\t\tSELECT * FROM person, api_key\n\t\t`)\n}\n"],"names":["escapeValue"],"mappings":";;;AAGa,MAAA,oBAAoB,OAAO,SAA2B,SAA8B;AAC1F,QAAA,cAAc,MAAM,KAAK,eAAe;AAC9C,MAAI,YAAY,gBAAgB;AAC/B,UAAM,YAAY,YAAY;AAC9B,YAAQ,IAAI;AAAA;AAAA;AAAA,cAGAA,mBAAY,YAAA,KAAK,UAAU,KAAM,CAAA,CAAC;AAAA;AAAA;AAAA,YAGpCA,mBAAA,YAAY,KAAK,UAAU,KAAM,CAAA,CAAC,KAAKA,+BAAY,SAAS,CAAC;AAAA;AAAA,IAErE;AAAA,EAAA;AAGC,MAAA,CAAC,YAAY,eAAe;AACzB,UAAA;AAAA,EAAA;AAGP,MAAI,YAAY,aAAa,CAAC,YAAY,sBAAsB;AACzD,UAAA;AAAA,EAAA;AAEP,QAAM,YAAY,YAAY,uBAAuB,YAAY,aAAa,mBAAmB;AAC3F,QAAA,mBAAmB,YAAY,wBAAwB;AAE7D,QAAM,gBAAgB,YAAY;AAElC,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA,QAILA,mBAAY,YAAA,KAAK,UAAU,KAAM,CAAA,CAAC;AAAA;AAAA;AAAA,uBAGnBA,mBAAAA,YAAY,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAOhCA,mBAAY,YAAA,KAAK,UAAU,KAAM,CAAA,CAAC,KAAKA,mBAAA,YAAY,SAAS,CAAC,KAAKA,mBAAA,YAAY,gBAAgB,CAAC;AAAA;AAAA,YAEhGA,mBAAAA,YAAY,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,aAKrBA,mBAAA,YAAY,KAAK,UAAU,KAAM,CAAA,CAAC,KAAKA,+BAAY,aAAa,CAAC;AAAA,0BACpDA,mBAAAA,YAAY,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA,GAIjD;AACH;;"}