@contember/engine-tenant-api 2.0.0-alpha.13 → 2.0.0-alpha.15

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 (526) 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/migrations/2024-08-26-120000-passwordless.cjs +31 -0
  10. package/dist/development/src/migrations/2024-08-26-120000-passwordless.cjs.map +1 -0
  11. package/dist/development/src/migrations/2024-08-26-120000-passwordless.js +32 -0
  12. package/dist/development/src/migrations/2024-08-26-120000-passwordless.js.map +1 -0
  13. package/dist/development/src/migrations/runner.cjs +3 -1
  14. package/dist/development/src/migrations/runner.cjs.map +1 -1
  15. package/dist/development/src/migrations/runner.js +3 -1
  16. package/dist/development/src/migrations/runner.js.map +1 -1
  17. package/dist/development/src/migrations/snapshot.cjs +33 -5
  18. package/dist/development/src/migrations/snapshot.cjs.map +1 -1
  19. package/dist/development/src/migrations/snapshot.js +33 -5
  20. package/dist/development/src/migrations/snapshot.js.map +1 -1
  21. package/dist/development/src/model/authorization/PermissionActions.cjs +5 -0
  22. package/dist/development/src/model/authorization/PermissionActions.cjs.map +1 -1
  23. package/dist/development/src/model/authorization/PermissionActions.js +5 -0
  24. package/dist/development/src/model/authorization/PermissionActions.js.map +1 -1
  25. package/dist/development/src/model/authorization/PermissionsFactory.cjs +5 -0
  26. package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  27. package/dist/development/src/model/authorization/PermissionsFactory.js +5 -0
  28. package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
  29. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs +20 -0
  30. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -0
  31. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js +20 -0
  32. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -0
  33. package/dist/development/src/model/commands/person/CreatePersonCommand.cjs +2 -1
  34. package/dist/development/src/model/commands/person/CreatePersonCommand.cjs.map +1 -1
  35. package/dist/development/src/model/commands/person/CreatePersonCommand.js +2 -1
  36. package/dist/development/src/model/commands/person/CreatePersonCommand.js.map +1 -1
  37. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.cjs +18 -0
  38. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.cjs.map +1 -0
  39. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.js +18 -0
  40. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.js.map +1 -0
  41. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.cjs +20 -0
  42. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.cjs.map +1 -0
  43. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.js +20 -0
  44. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.js.map +1 -0
  45. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.cjs +33 -0
  46. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.cjs.map +1 -0
  47. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.js +33 -0
  48. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.js.map +1 -0
  49. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs +19 -0
  50. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs.map +1 -0
  51. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.js +19 -0
  52. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.js.map +1 -0
  53. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.cjs +19 -0
  54. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.cjs.map +1 -0
  55. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.js +19 -0
  56. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.js.map +1 -0
  57. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs +28 -0
  58. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -0
  59. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.js +28 -0
  60. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.js.map +1 -0
  61. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.cjs +28 -0
  62. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.cjs.map +1 -0
  63. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.js +28 -0
  64. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.js.map +1 -0
  65. package/dist/development/src/model/consts/expirations.cjs +7 -0
  66. package/dist/development/src/model/consts/expirations.cjs.map +1 -0
  67. package/dist/development/src/model/consts/expirations.js +7 -0
  68. package/dist/development/src/model/consts/expirations.js.map +1 -0
  69. package/dist/development/src/model/mailing/UserMailer.cjs +10 -1
  70. package/dist/development/src/model/mailing/UserMailer.cjs.map +1 -1
  71. package/dist/development/src/model/mailing/UserMailer.js +10 -1
  72. package/dist/development/src/model/mailing/UserMailer.js.map +1 -1
  73. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs +17 -0
  74. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs.map +1 -0
  75. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.js +18 -0
  76. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.js.map +1 -0
  77. package/dist/development/src/model/mailing/type.cjs +9 -3
  78. package/dist/development/src/model/mailing/type.cjs.map +1 -1
  79. package/dist/development/src/model/mailing/type.js +9 -3
  80. package/dist/development/src/model/mailing/type.js.map +1 -1
  81. package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs +21 -0
  82. package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -0
  83. package/dist/development/src/model/queries/configuration/ConfigurationQuery.js +21 -0
  84. package/dist/development/src/model/queries/configuration/ConfigurationQuery.js.map +1 -0
  85. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.cjs +1 -1
  86. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.cjs.map +1 -1
  87. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.js +1 -1
  88. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.js.map +1 -1
  89. package/dist/development/src/model/queries/personToken/PersonTokenQuery.cjs +29 -0
  90. package/dist/development/src/model/queries/personToken/PersonTokenQuery.cjs.map +1 -0
  91. package/dist/development/src/model/queries/personToken/PersonTokenQuery.js +29 -0
  92. package/dist/development/src/model/queries/personToken/PersonTokenQuery.js.map +1 -0
  93. package/dist/development/src/model/service/ConfigurationManager.cjs +27 -0
  94. package/dist/development/src/model/service/ConfigurationManager.cjs.map +1 -0
  95. package/dist/development/src/model/service/ConfigurationManager.js +27 -0
  96. package/dist/development/src/model/service/ConfigurationManager.js.map +1 -0
  97. package/dist/development/src/model/service/InviteManager.cjs +7 -7
  98. package/dist/development/src/model/service/InviteManager.cjs.map +1 -1
  99. package/dist/development/src/model/service/InviteManager.js +6 -6
  100. package/dist/development/src/model/service/InviteManager.js.map +1 -1
  101. package/dist/development/src/model/service/PasswordChangeManager.cjs +1 -1
  102. package/dist/development/src/model/service/PasswordChangeManager.js +1 -1
  103. package/dist/development/src/model/service/PasswordResetManager.cjs +7 -15
  104. package/dist/development/src/model/service/PasswordResetManager.cjs.map +1 -1
  105. package/dist/development/src/model/service/PasswordResetManager.js +7 -15
  106. package/dist/development/src/model/service/PasswordResetManager.js.map +1 -1
  107. package/dist/development/src/model/service/PasswordlessSignInManager.cjs +135 -0
  108. package/dist/development/src/model/service/PasswordlessSignInManager.cjs.map +1 -0
  109. package/dist/development/src/model/service/PasswordlessSignInManager.js +135 -0
  110. package/dist/development/src/model/service/PasswordlessSignInManager.js.map +1 -0
  111. package/dist/development/src/model/service/PersonManager.cjs +7 -0
  112. package/dist/development/src/model/service/PersonManager.cjs.map +1 -1
  113. package/dist/development/src/model/service/PersonManager.js +7 -0
  114. package/dist/development/src/model/service/PersonManager.js.map +1 -1
  115. package/dist/development/src/model/service/ProjectManager.cjs +2 -2
  116. package/dist/development/src/model/service/ProjectManager.js +2 -2
  117. package/dist/development/src/model/service/RolesManager.cjs +1 -1
  118. package/dist/development/src/model/service/RolesManager.js +1 -1
  119. package/dist/development/src/model/service/SignUpManager.cjs +1 -1
  120. package/dist/development/src/model/service/SignUpManager.js +1 -1
  121. package/dist/development/src/model/service/helpers/getPreferredProject.cjs +13 -0
  122. package/dist/development/src/model/service/helpers/getPreferredProject.cjs.map +1 -0
  123. package/dist/development/src/model/service/helpers/getPreferredProject.js +13 -0
  124. package/dist/development/src/model/service/helpers/getPreferredProject.js.map +1 -0
  125. package/dist/development/src/model/service/idp/providers/OIDCProvider.cjs +2 -1
  126. package/dist/development/src/model/service/idp/providers/OIDCProvider.cjs.map +1 -1
  127. package/dist/development/src/model/service/idp/providers/OIDCProvider.js +2 -1
  128. package/dist/development/src/model/service/idp/providers/OIDCProvider.js.map +1 -1
  129. package/dist/development/src/model/service/idp/providers/OIDCTypes.cjs +2 -1
  130. package/dist/development/src/model/service/idp/providers/OIDCTypes.cjs.map +1 -1
  131. package/dist/development/src/model/service/idp/providers/OIDCTypes.js +2 -1
  132. package/dist/development/src/model/service/idp/providers/OIDCTypes.js.map +1 -1
  133. package/dist/development/src/model/utils/tokenUtils.cjs +39 -0
  134. package/dist/development/src/model/utils/tokenUtils.cjs.map +1 -1
  135. package/dist/development/src/model/utils/tokenUtils.js +40 -1
  136. package/dist/development/src/model/utils/tokenUtils.js.map +1 -1
  137. package/dist/development/src/resolvers/ResolverFactory.cjs +8 -1
  138. package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
  139. package/dist/development/src/resolvers/ResolverFactory.js +8 -1
  140. package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
  141. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs +41 -0
  142. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -0
  143. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js +41 -0
  144. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -0
  145. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs +83 -0
  146. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -0
  147. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js +83 -0
  148. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -0
  149. package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
  150. package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
  151. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs +52 -0
  152. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -0
  153. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js +52 -0
  154. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -0
  155. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs +34 -0
  156. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -0
  157. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js +34 -0
  158. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -0
  159. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.cjs +1 -0
  160. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.cjs.map +1 -1
  161. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.js +1 -0
  162. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.js.map +1 -1
  163. package/dist/development/src/schema/tenant.graphql.cjs +161 -10
  164. package/dist/development/src/schema/tenant.graphql.cjs.map +1 -1
  165. package/dist/development/src/schema/tenant.graphql.js +161 -10
  166. package/dist/development/src/schema/tenant.graphql.js.map +1 -1
  167. package/dist/production/index.cjs +18 -6
  168. package/dist/production/index.cjs.map +1 -1
  169. package/dist/production/index.js +20 -8
  170. package/dist/production/index.js.map +1 -1
  171. package/dist/production/src/TenantContainer.cjs +7 -1
  172. package/dist/production/src/TenantContainer.cjs.map +1 -1
  173. package/dist/production/src/TenantContainer.js +7 -1
  174. package/dist/production/src/TenantContainer.js.map +1 -1
  175. package/dist/production/src/migrations/2024-08-26-120000-passwordless.cjs +31 -0
  176. package/dist/production/src/migrations/2024-08-26-120000-passwordless.cjs.map +1 -0
  177. package/dist/production/src/migrations/2024-08-26-120000-passwordless.js +32 -0
  178. package/dist/production/src/migrations/2024-08-26-120000-passwordless.js.map +1 -0
  179. package/dist/production/src/migrations/runner.cjs +3 -1
  180. package/dist/production/src/migrations/runner.cjs.map +1 -1
  181. package/dist/production/src/migrations/runner.js +3 -1
  182. package/dist/production/src/migrations/runner.js.map +1 -1
  183. package/dist/production/src/migrations/snapshot.cjs +33 -5
  184. package/dist/production/src/migrations/snapshot.cjs.map +1 -1
  185. package/dist/production/src/migrations/snapshot.js +33 -5
  186. package/dist/production/src/migrations/snapshot.js.map +1 -1
  187. package/dist/production/src/model/authorization/PermissionActions.cjs +5 -0
  188. package/dist/production/src/model/authorization/PermissionActions.cjs.map +1 -1
  189. package/dist/production/src/model/authorization/PermissionActions.js +5 -0
  190. package/dist/production/src/model/authorization/PermissionActions.js.map +1 -1
  191. package/dist/production/src/model/authorization/PermissionsFactory.cjs +5 -0
  192. package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  193. package/dist/production/src/model/authorization/PermissionsFactory.js +5 -0
  194. package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
  195. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs +20 -0
  196. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -0
  197. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js +20 -0
  198. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -0
  199. package/dist/production/src/model/commands/person/CreatePersonCommand.cjs +2 -1
  200. package/dist/production/src/model/commands/person/CreatePersonCommand.cjs.map +1 -1
  201. package/dist/production/src/model/commands/person/CreatePersonCommand.js +2 -1
  202. package/dist/production/src/model/commands/person/CreatePersonCommand.js.map +1 -1
  203. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.cjs +18 -0
  204. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.cjs.map +1 -0
  205. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.js +18 -0
  206. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.js.map +1 -0
  207. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.cjs +20 -0
  208. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.cjs.map +1 -0
  209. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.js +20 -0
  210. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.js.map +1 -0
  211. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.cjs +33 -0
  212. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.cjs.map +1 -0
  213. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.js +33 -0
  214. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.js.map +1 -0
  215. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs +19 -0
  216. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs.map +1 -0
  217. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.js +19 -0
  218. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.js.map +1 -0
  219. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.cjs +19 -0
  220. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.cjs.map +1 -0
  221. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.js +19 -0
  222. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.js.map +1 -0
  223. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs +28 -0
  224. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -0
  225. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.js +28 -0
  226. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.js.map +1 -0
  227. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.cjs +28 -0
  228. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.cjs.map +1 -0
  229. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.js +28 -0
  230. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.js.map +1 -0
  231. package/dist/production/src/model/consts/expirations.cjs +7 -0
  232. package/dist/production/src/model/consts/expirations.cjs.map +1 -0
  233. package/dist/production/src/model/consts/expirations.js +7 -0
  234. package/dist/production/src/model/consts/expirations.js.map +1 -0
  235. package/dist/production/src/model/mailing/UserMailer.cjs +10 -1
  236. package/dist/production/src/model/mailing/UserMailer.cjs.map +1 -1
  237. package/dist/production/src/model/mailing/UserMailer.js +10 -1
  238. package/dist/production/src/model/mailing/UserMailer.js.map +1 -1
  239. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs +17 -0
  240. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs.map +1 -0
  241. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.js +18 -0
  242. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.js.map +1 -0
  243. package/dist/production/src/model/mailing/type.cjs +9 -3
  244. package/dist/production/src/model/mailing/type.cjs.map +1 -1
  245. package/dist/production/src/model/mailing/type.js +9 -3
  246. package/dist/production/src/model/mailing/type.js.map +1 -1
  247. package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs +21 -0
  248. package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -0
  249. package/dist/production/src/model/queries/configuration/ConfigurationQuery.js +21 -0
  250. package/dist/production/src/model/queries/configuration/ConfigurationQuery.js.map +1 -0
  251. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.cjs +1 -1
  252. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.cjs.map +1 -1
  253. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.js +1 -1
  254. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.js.map +1 -1
  255. package/dist/production/src/model/queries/personToken/PersonTokenQuery.cjs +29 -0
  256. package/dist/production/src/model/queries/personToken/PersonTokenQuery.cjs.map +1 -0
  257. package/dist/production/src/model/queries/personToken/PersonTokenQuery.js +29 -0
  258. package/dist/production/src/model/queries/personToken/PersonTokenQuery.js.map +1 -0
  259. package/dist/production/src/model/service/ConfigurationManager.cjs +27 -0
  260. package/dist/production/src/model/service/ConfigurationManager.cjs.map +1 -0
  261. package/dist/production/src/model/service/ConfigurationManager.js +27 -0
  262. package/dist/production/src/model/service/ConfigurationManager.js.map +1 -0
  263. package/dist/production/src/model/service/InviteManager.cjs +7 -7
  264. package/dist/production/src/model/service/InviteManager.cjs.map +1 -1
  265. package/dist/production/src/model/service/InviteManager.js +6 -6
  266. package/dist/production/src/model/service/InviteManager.js.map +1 -1
  267. package/dist/production/src/model/service/PasswordChangeManager.cjs +1 -1
  268. package/dist/production/src/model/service/PasswordChangeManager.js +1 -1
  269. package/dist/production/src/model/service/PasswordResetManager.cjs +7 -15
  270. package/dist/production/src/model/service/PasswordResetManager.cjs.map +1 -1
  271. package/dist/production/src/model/service/PasswordResetManager.js +7 -15
  272. package/dist/production/src/model/service/PasswordResetManager.js.map +1 -1
  273. package/dist/production/src/model/service/PasswordlessSignInManager.cjs +135 -0
  274. package/dist/production/src/model/service/PasswordlessSignInManager.cjs.map +1 -0
  275. package/dist/production/src/model/service/PasswordlessSignInManager.js +135 -0
  276. package/dist/production/src/model/service/PasswordlessSignInManager.js.map +1 -0
  277. package/dist/production/src/model/service/PersonManager.cjs +7 -0
  278. package/dist/production/src/model/service/PersonManager.cjs.map +1 -1
  279. package/dist/production/src/model/service/PersonManager.js +7 -0
  280. package/dist/production/src/model/service/PersonManager.js.map +1 -1
  281. package/dist/production/src/model/service/ProjectManager.cjs +2 -2
  282. package/dist/production/src/model/service/ProjectManager.js +2 -2
  283. package/dist/production/src/model/service/RolesManager.cjs +1 -1
  284. package/dist/production/src/model/service/RolesManager.js +1 -1
  285. package/dist/production/src/model/service/SignUpManager.cjs +1 -1
  286. package/dist/production/src/model/service/SignUpManager.js +1 -1
  287. package/dist/production/src/model/service/helpers/getPreferredProject.cjs +13 -0
  288. package/dist/production/src/model/service/helpers/getPreferredProject.cjs.map +1 -0
  289. package/dist/production/src/model/service/helpers/getPreferredProject.js +13 -0
  290. package/dist/production/src/model/service/helpers/getPreferredProject.js.map +1 -0
  291. package/dist/production/src/model/service/idp/providers/OIDCProvider.cjs +2 -1
  292. package/dist/production/src/model/service/idp/providers/OIDCProvider.cjs.map +1 -1
  293. package/dist/production/src/model/service/idp/providers/OIDCProvider.js +2 -1
  294. package/dist/production/src/model/service/idp/providers/OIDCProvider.js.map +1 -1
  295. package/dist/production/src/model/service/idp/providers/OIDCTypes.cjs +2 -1
  296. package/dist/production/src/model/service/idp/providers/OIDCTypes.cjs.map +1 -1
  297. package/dist/production/src/model/service/idp/providers/OIDCTypes.js +2 -1
  298. package/dist/production/src/model/service/idp/providers/OIDCTypes.js.map +1 -1
  299. package/dist/production/src/model/utils/tokenUtils.cjs +39 -0
  300. package/dist/production/src/model/utils/tokenUtils.cjs.map +1 -1
  301. package/dist/production/src/model/utils/tokenUtils.js +40 -1
  302. package/dist/production/src/model/utils/tokenUtils.js.map +1 -1
  303. package/dist/production/src/resolvers/ResolverFactory.cjs +8 -1
  304. package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
  305. package/dist/production/src/resolvers/ResolverFactory.js +8 -1
  306. package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
  307. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs +41 -0
  308. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -0
  309. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js +41 -0
  310. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -0
  311. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs +83 -0
  312. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -0
  313. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js +83 -0
  314. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -0
  315. package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
  316. package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
  317. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs +52 -0
  318. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -0
  319. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js +52 -0
  320. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -0
  321. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs +34 -0
  322. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -0
  323. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js +34 -0
  324. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -0
  325. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.cjs +1 -0
  326. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.cjs.map +1 -1
  327. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.js +1 -0
  328. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.js.map +1 -1
  329. package/dist/production/src/schema/tenant.graphql.cjs +161 -10
  330. package/dist/production/src/schema/tenant.graphql.cjs.map +1 -1
  331. package/dist/production/src/schema/tenant.graphql.js +161 -10
  332. package/dist/production/src/schema/tenant.graphql.js.map +1 -1
  333. package/dist/tests/cases/integration/mocked/sql/{createPasswordResetSql.d.ts → createPersonTokenSql.d.ts} +3 -2
  334. package/dist/tests/cases/integration/mocked/sql/createPersonTokenSql.d.ts.map +1 -0
  335. package/dist/tests/cases/integration/mocked/sql/getPersonByEmailSql.d.ts.map +1 -1
  336. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  337. package/dist/types/TenantContainer.d.ts +18 -0
  338. package/dist/types/TenantContainer.d.ts.map +1 -1
  339. package/dist/types/migrations/2024-08-26-120000-passwordless.d.ts +3 -0
  340. package/dist/types/migrations/2024-08-26-120000-passwordless.d.ts.map +1 -0
  341. package/dist/types/migrations/runner.d.ts.map +1 -1
  342. package/dist/types/migrations/snapshot.d.ts.map +1 -1
  343. package/dist/types/model/authorization/PermissionActions.d.ts +25 -0
  344. package/dist/types/model/authorization/PermissionActions.d.ts.map +1 -1
  345. package/dist/types/model/authorization/PermissionsFactory.d.ts.map +1 -1
  346. package/dist/types/model/commands/configuration/UpdateConfigurationCommand.d.ts +8 -0
  347. package/dist/types/model/commands/configuration/UpdateConfigurationCommand.d.ts.map +1 -0
  348. package/dist/types/model/commands/configuration/index.d.ts +2 -0
  349. package/dist/types/model/commands/configuration/index.d.ts.map +1 -0
  350. package/dist/types/model/commands/index.d.ts +2 -2
  351. package/dist/types/model/commands/index.d.ts.map +1 -1
  352. package/dist/types/model/commands/person/CreatePersonCommand.d.ts.map +1 -1
  353. package/dist/types/model/commands/person/TogglePersonPasswordlessCommand.d.ts +8 -0
  354. package/dist/types/model/commands/person/TogglePersonPasswordlessCommand.d.ts.map +1 -0
  355. package/dist/types/model/commands/person/index.d.ts +1 -0
  356. package/dist/types/model/commands/person/index.d.ts.map +1 -1
  357. package/dist/types/model/commands/personToken/ActivateOtpCommand.d.ts +8 -0
  358. package/dist/types/model/commands/personToken/ActivateOtpCommand.d.ts.map +1 -0
  359. package/dist/types/model/commands/personToken/CreatePersonTokenCommand.d.ts +19 -0
  360. package/dist/types/model/commands/personToken/CreatePersonTokenCommand.d.ts.map +1 -0
  361. package/dist/types/model/commands/personToken/IncreaseOtpAttemptCommand.d.ts +7 -0
  362. package/dist/types/model/commands/personToken/IncreaseOtpAttemptCommand.d.ts.map +1 -0
  363. package/dist/types/model/commands/personToken/InvalidateTokenCommand.d.ts +7 -0
  364. package/dist/types/model/commands/personToken/InvalidateTokenCommand.d.ts.map +1 -0
  365. package/dist/types/model/commands/{passwordReset → personToken}/ResetPasswordCommand.d.ts +3 -2
  366. package/dist/types/model/commands/personToken/ResetPasswordCommand.d.ts.map +1 -0
  367. package/dist/types/model/commands/personToken/SavePersonTokenCommand.d.ts +19 -0
  368. package/dist/types/model/commands/personToken/SavePersonTokenCommand.d.ts.map +1 -0
  369. package/dist/types/model/commands/personToken/index.d.ts +7 -0
  370. package/dist/types/model/commands/personToken/index.d.ts.map +1 -0
  371. package/dist/types/model/consts/expirations.d.ts +3 -0
  372. package/dist/types/model/consts/expirations.d.ts.map +1 -0
  373. package/dist/types/model/mailing/UserMailer.d.ts +10 -0
  374. package/dist/types/model/mailing/UserMailer.d.ts.map +1 -1
  375. package/dist/types/model/mailing/templates/PasswordlessSignIn.mustache.d.ts +3 -0
  376. package/dist/types/model/mailing/templates/PasswordlessSignIn.mustache.d.ts.map +1 -0
  377. package/dist/types/model/mailing/type.d.ts +2 -1
  378. package/dist/types/model/mailing/type.d.ts.map +1 -1
  379. package/dist/types/model/queries/configuration/ConfigurationQuery.d.ts +6 -0
  380. package/dist/types/model/queries/configuration/ConfigurationQuery.d.ts.map +1 -0
  381. package/dist/types/model/queries/configuration/index.d.ts +2 -0
  382. package/dist/types/model/queries/configuration/index.d.ts.map +1 -0
  383. package/dist/types/model/queries/index.d.ts +1 -0
  384. package/dist/types/model/queries/index.d.ts.map +1 -1
  385. package/dist/types/model/queries/person/PersonQueryBuilderFactory.d.ts.map +1 -1
  386. package/dist/types/model/queries/person/types.d.ts +1 -0
  387. package/dist/types/model/queries/person/types.d.ts.map +1 -1
  388. package/dist/types/model/queries/personToken/PersonTokenQuery.d.ts +12 -0
  389. package/dist/types/model/queries/personToken/PersonTokenQuery.d.ts.map +1 -0
  390. package/dist/types/model/service/ConfigurationManager.d.ts +9 -0
  391. package/dist/types/model/service/ConfigurationManager.d.ts.map +1 -0
  392. package/dist/types/model/service/InviteManager.d.ts.map +1 -1
  393. package/dist/types/model/service/PasswordResetManager.d.ts +1 -1
  394. package/dist/types/model/service/PasswordResetManager.d.ts.map +1 -1
  395. package/dist/types/model/service/PasswordlessSignInManager.d.ts +54 -0
  396. package/dist/types/model/service/PasswordlessSignInManager.d.ts.map +1 -0
  397. package/dist/types/model/service/PersonManager.d.ts +1 -0
  398. package/dist/types/model/service/PersonManager.d.ts.map +1 -1
  399. package/dist/types/model/service/PersonTokenManager.d.ts +3 -0
  400. package/dist/types/model/service/PersonTokenManager.d.ts.map +1 -0
  401. package/dist/types/model/service/helpers/getPreferredProject.d.ts +3 -0
  402. package/dist/types/model/service/helpers/getPreferredProject.d.ts.map +1 -0
  403. package/dist/types/model/service/idp/providers/AppleProvider.d.ts +2 -0
  404. package/dist/types/model/service/idp/providers/AppleProvider.d.ts.map +1 -1
  405. package/dist/types/model/service/idp/providers/FacebookProvider.d.ts +2 -0
  406. package/dist/types/model/service/idp/providers/FacebookProvider.d.ts.map +1 -1
  407. package/dist/types/model/service/idp/providers/OIDCProvider.d.ts +1 -0
  408. package/dist/types/model/service/idp/providers/OIDCProvider.d.ts.map +1 -1
  409. package/dist/types/model/service/idp/providers/OIDCTypes.d.ts +5 -1
  410. package/dist/types/model/service/idp/providers/OIDCTypes.d.ts.map +1 -1
  411. package/dist/types/model/type/PersonToken.d.ts +16 -0
  412. package/dist/types/model/type/PersonToken.d.ts.map +1 -0
  413. package/dist/types/model/type/index.d.ts +1 -0
  414. package/dist/types/model/type/index.d.ts.map +1 -1
  415. package/dist/types/model/utils/tokenUtils.d.ts +8 -0
  416. package/dist/types/model/utils/tokenUtils.d.ts.map +1 -1
  417. package/dist/types/resolvers/ResolverFactory.d.ts +8 -0
  418. package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
  419. package/dist/types/resolvers/mutation/configuration/ConfigurationMutationResolver.d.ts +9 -0
  420. package/dist/types/resolvers/mutation/configuration/ConfigurationMutationResolver.d.ts.map +1 -0
  421. package/dist/types/resolvers/mutation/person/PasswordlessMutationResolver.d.ts +13 -0
  422. package/dist/types/resolvers/mutation/person/PasswordlessMutationResolver.d.ts.map +1 -0
  423. package/dist/types/resolvers/mutation/person/ResetPasswordMutationResolver.d.ts.map +1 -1
  424. package/dist/types/resolvers/mutation/person/TogglePasswordlessMutationResolver.d.ts +13 -0
  425. package/dist/types/resolvers/mutation/person/TogglePasswordlessMutationResolver.d.ts.map +1 -0
  426. package/dist/types/resolvers/query/ConfigurationQueryResolver.d.ts +9 -0
  427. package/dist/types/resolvers/query/ConfigurationQueryResolver.d.ts.map +1 -0
  428. package/dist/types/resolvers/responseHelpers/PersonResponseFactory.d.ts.map +1 -1
  429. package/dist/types/schema/index.d.ts +258 -5
  430. package/dist/types/schema/index.d.ts.map +1 -1
  431. package/dist/types/schema/tenant.graphql.d.ts.map +1 -1
  432. package/dist/types/tsconfig.tsbuildinfo +1 -1
  433. package/package.json +12 -12
  434. package/src/TenantContainer.ts +18 -0
  435. package/src/migrations/2024-08-26-120000-passwordless.ts +31 -0
  436. package/src/migrations/runner.ts +2 -0
  437. package/src/migrations/snapshot-template-end.txt +3 -0
  438. package/src/migrations/snapshot.ts +33 -5
  439. package/src/model/authorization/PermissionActions.ts +7 -0
  440. package/src/model/authorization/PermissionsFactory.ts +5 -0
  441. package/src/model/commands/configuration/UpdateConfigurationCommand.ts +26 -0
  442. package/src/model/commands/configuration/index.ts +1 -0
  443. package/src/model/commands/index.ts +2 -2
  444. package/src/model/commands/person/CreatePersonCommand.ts +1 -0
  445. package/src/model/commands/person/TogglePersonPasswordlessCommand.ts +18 -0
  446. package/src/model/commands/person/index.ts +1 -0
  447. package/src/model/commands/personToken/ActivateOtpCommand.ts +24 -0
  448. package/src/model/commands/personToken/CreatePersonTokenCommand.ts +42 -0
  449. package/src/model/commands/personToken/IncreaseOtpAttemptCommand.ts +23 -0
  450. package/src/model/commands/personToken/InvalidateTokenCommand.ts +22 -0
  451. package/src/model/commands/personToken/ResetPasswordCommand.ts +28 -0
  452. package/src/model/commands/personToken/SavePersonTokenCommand.ts +42 -0
  453. package/src/model/commands/personToken/index.ts +6 -0
  454. package/src/model/consts/expirations.ts +2 -0
  455. package/src/model/mailing/UserMailer.ts +14 -0
  456. package/src/model/mailing/templates/PasswordlessSignIn.mustache.ts +15 -0
  457. package/src/model/mailing/type.ts +3 -0
  458. package/src/model/queries/configuration/ConfigurationQuery.ts +30 -0
  459. package/src/model/queries/configuration/index.ts +1 -0
  460. package/src/model/queries/index.ts +1 -0
  461. package/src/model/queries/person/PersonQueryBuilderFactory.ts +1 -0
  462. package/src/model/queries/person/types.ts +1 -0
  463. package/src/model/queries/personToken/PersonTokenQuery.ts +35 -0
  464. package/src/model/service/ConfigurationManager.ts +22 -0
  465. package/src/model/service/InviteManager.ts +5 -6
  466. package/src/model/service/PasswordResetManager.ts +4 -10
  467. package/src/model/service/PasswordlessSignInManager.ts +190 -0
  468. package/src/model/service/PersonManager.ts +6 -0
  469. package/src/model/service/PersonTokenManager.ts +2 -0
  470. package/src/model/service/helpers/getPreferredProject.ts +11 -0
  471. package/src/model/service/idp/providers/OIDCProvider.ts +1 -0
  472. package/src/model/service/idp/providers/OIDCTypes.ts +1 -0
  473. package/src/model/type/PersonToken.ts +21 -0
  474. package/src/model/type/index.ts +1 -0
  475. package/src/model/utils/tokenUtils.ts +47 -0
  476. package/src/resolvers/ResolverFactory.ts +19 -0
  477. package/src/resolvers/mutation/configuration/ConfigurationMutationResolver.ts +29 -0
  478. package/src/resolvers/mutation/person/PasswordlessMutationResolver.ts +81 -0
  479. package/src/resolvers/mutation/person/ResetPasswordMutationResolver.ts +1 -10
  480. package/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.ts +44 -0
  481. package/src/resolvers/query/ConfigurationQueryResolver.ts +21 -0
  482. package/src/resolvers/responseHelpers/PersonResponseFactory.ts +1 -0
  483. package/src/schema/index.ts +326 -2
  484. package/src/schema/tenant.graphql.ts +161 -10
  485. package/tests/cases/integration/mocked/inviteMutations.test.ts +2 -2
  486. package/tests/cases/integration/mocked/sql/{createPasswordResetSql.ts → createPersonTokenSql.ts} +5 -3
  487. package/tests/cases/integration/mocked/sql/getPersonByEmailSql.ts +2 -1
  488. package/tests/cases/integration/mocked/sql/getPersonByIdSql.ts +1 -1
  489. package/tests/cases/integration/mocked/sql/getPersonByIdentity.ts +1 -1
  490. package/tests/cases/integration/mocked/sql/getPersonByIdpSql.ts +1 -1
  491. package/dist/development/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.cjs +0 -30
  492. package/dist/development/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.cjs.map +0 -1
  493. package/dist/development/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.js +0 -30
  494. package/dist/development/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.js.map +0 -1
  495. package/dist/development/src/model/commands/passwordReset/ResetPasswordCommand.cjs +0 -38
  496. package/dist/development/src/model/commands/passwordReset/ResetPasswordCommand.cjs.map +0 -1
  497. package/dist/development/src/model/commands/passwordReset/ResetPasswordCommand.js +0 -38
  498. package/dist/development/src/model/commands/passwordReset/ResetPasswordCommand.js.map +0 -1
  499. package/dist/development/src/model/commands/passwordReset/SavePasswordResetRequestCommand.cjs +0 -24
  500. package/dist/development/src/model/commands/passwordReset/SavePasswordResetRequestCommand.cjs.map +0 -1
  501. package/dist/development/src/model/commands/passwordReset/SavePasswordResetRequestCommand.js +0 -24
  502. package/dist/development/src/model/commands/passwordReset/SavePasswordResetRequestCommand.js.map +0 -1
  503. package/dist/production/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.cjs +0 -30
  504. package/dist/production/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.cjs.map +0 -1
  505. package/dist/production/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.js +0 -30
  506. package/dist/production/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.js.map +0 -1
  507. package/dist/production/src/model/commands/passwordReset/ResetPasswordCommand.cjs +0 -38
  508. package/dist/production/src/model/commands/passwordReset/ResetPasswordCommand.cjs.map +0 -1
  509. package/dist/production/src/model/commands/passwordReset/ResetPasswordCommand.js +0 -38
  510. package/dist/production/src/model/commands/passwordReset/ResetPasswordCommand.js.map +0 -1
  511. package/dist/production/src/model/commands/passwordReset/SavePasswordResetRequestCommand.cjs +0 -24
  512. package/dist/production/src/model/commands/passwordReset/SavePasswordResetRequestCommand.cjs.map +0 -1
  513. package/dist/production/src/model/commands/passwordReset/SavePasswordResetRequestCommand.js +0 -24
  514. package/dist/production/src/model/commands/passwordReset/SavePasswordResetRequestCommand.js.map +0 -1
  515. package/dist/tests/cases/integration/mocked/sql/createPasswordResetSql.d.ts.map +0 -1
  516. package/dist/types/model/commands/passwordReset/CreatePasswordResetRequestCommand.d.ts +0 -12
  517. package/dist/types/model/commands/passwordReset/CreatePasswordResetRequestCommand.d.ts.map +0 -1
  518. package/dist/types/model/commands/passwordReset/ResetPasswordCommand.d.ts.map +0 -1
  519. package/dist/types/model/commands/passwordReset/SavePasswordResetRequestCommand.d.ts +0 -10
  520. package/dist/types/model/commands/passwordReset/SavePasswordResetRequestCommand.d.ts.map +0 -1
  521. package/dist/types/model/commands/passwordReset/index.d.ts +0 -4
  522. package/dist/types/model/commands/passwordReset/index.d.ts.map +0 -1
  523. package/src/model/commands/passwordReset/CreatePasswordResetRequestCommand.ts +0 -25
  524. package/src/model/commands/passwordReset/ResetPasswordCommand.ts +0 -57
  525. package/src/model/commands/passwordReset/SavePasswordResetRequestCommand.ts +0 -28
  526. package/src/model/commands/passwordReset/index.ts +0 -3
@@ -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;"}
@@ -13,6 +13,8 @@ exports.PermissionActions = void 0;
13
13
  Resources2["mailTemplate"] = "mailTemplate";
14
14
  Resources2["idp"] = "idp";
15
15
  })(PermissionActions2.Resources || (PermissionActions2.Resources = {}));
16
+ PermissionActions2.CONFIGURE = authorization.Authorizator.createAction("system", "configure");
17
+ PermissionActions2.CONFIG_VIEW = authorization.Authorizator.createAction("system", "viewConfig");
16
18
  PermissionActions2.IDENTITY_VIEW_PERMISSIONS = authorization.Authorizator.createAction("identity", "viewPermissions");
17
19
  PermissionActions2.IDENTITY_ADD_GLOBAL_ROLES = (roles) => authorization.Authorizator.createAction("identity", "addGlobalRoles", { roles });
18
20
  PermissionActions2.IDENTITY_REMOVE_GLOBAL_ROLES = (roles) => authorization.Authorizator.createAction("identity", "removeGlobalRoles", { roles });
@@ -24,11 +26,14 @@ exports.PermissionActions = void 0;
24
26
  PermissionActions2.PERSON_SETUP_OTP = authorization.Authorizator.createAction("person", "setupOtp");
25
27
  PermissionActions2.PERSON_CHANGE_PROFILE = (roles) => authorization.Authorizator.createAction("person", "changeProfile", { roles });
26
28
  PermissionActions2.PERSON_CHANGE_MY_PROFILE = authorization.Authorizator.createAction("person", "changeMyProfile");
29
+ PermissionActions2.PERSON_TOGGLE_PASSWORDLESS = authorization.Authorizator.createAction("person", "togglePasswordless");
27
30
  PermissionActions2.PERSON_CHANGE_PASSWORD = (roles) => authorization.Authorizator.createAction("person", "changePassword", { roles });
28
31
  PermissionActions2.PERSON_CHANGE_MY_PASSWORD = authorization.Authorizator.createAction("person", "changeMyPassword");
29
32
  PermissionActions2.PERSON_RESET_PASSWORD = authorization.Authorizator.createAction("person", "resetPassword");
30
33
  PermissionActions2.PERSON_CREATE_IDP_URL = authorization.Authorizator.createAction("person", "createIdPUrl");
31
34
  PermissionActions2.PERSON_SIGN_IN_IDP = authorization.Authorizator.createAction("person", "signInIdp");
35
+ PermissionActions2.PERSON_REQUEST_PASSWORDLESS_SIGN_IN = authorization.Authorizator.createAction("person", "requestPasswordlessSignIn");
36
+ PermissionActions2.PERSON_PASSWORDLESS_SIGN_IN = authorization.Authorizator.createAction("person", "passwordlessSignIn");
32
37
  PermissionActions2.PERSON_CREATE_SESSION_KEY = (roles) => authorization.Authorizator.createAction("person", "createSessionToken", { roles });
33
38
  PermissionActions2.PERSON_INVITE = (memberships) => authorization.Authorizator.createAction("person", "invite", { memberships });
34
39
  PermissionActions2.PERSON_INVITE_UNMANAGED = (memberships) => authorization.Authorizator.createAction("person", "invite_unmanaged", { memberships });
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionActions.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/PermissionActions.ts"],"sourcesContent":["import { Authorizator } from '@contember/authorization'\nimport { Acl } from '@contember/schema'\n\nnamespace PermissionActions {\n\texport enum Resources {\n\t\tsystem = 'system',\n\t\tentrypoint = 'entrypoint',\n\t\tperson = 'person',\n\t\tidentity = 'identity',\n\t\tproject = 'project',\n\t\tapiKey = 'apiKey',\n\t\tmailTemplate = 'mailTemplate',\n\t\tidp = 'idp',\n\t}\n\n\texport const IDENTITY_VIEW_PERMISSIONS = Authorizator.createAction(Resources.identity, 'viewPermissions')\n\texport const IDENTITY_ADD_GLOBAL_ROLES = (roles?: readonly string[]) => Authorizator.createAction(Resources.identity, 'addGlobalRoles', { roles })\n\texport const IDENTITY_REMOVE_GLOBAL_ROLES = (roles?: readonly string[]) => Authorizator.createAction(Resources.identity, 'removeGlobalRoles', { roles })\n\n\texport const PERSON_DISABLE = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'disable', { roles })\n\n\texport const PERSON_VIEW = Authorizator.createAction(Resources.person, 'view')\n\texport const PERSON_SIGN_IN = Authorizator.createAction(Resources.person, 'signIn')\n\texport const PERSON_SIGN_UP = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'signUp', { roles })\n\texport const PERSON_SIGN_OUT = Authorizator.createAction(Resources.person, 'signOut')\n\texport const PERSON_SETUP_OTP = Authorizator.createAction(Resources.person, 'setupOtp')\n\texport const PERSON_CHANGE_PROFILE = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'changeProfile', { roles })\n\texport const PERSON_CHANGE_MY_PROFILE = Authorizator.createAction(Resources.person, 'changeMyProfile')\n\texport const PERSON_CHANGE_PASSWORD = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'changePassword', { roles })\n\texport const PERSON_CHANGE_MY_PASSWORD = Authorizator.createAction(Resources.person, 'changeMyPassword')\n\texport const PERSON_RESET_PASSWORD = Authorizator.createAction(Resources.person, 'resetPassword')\n\texport const PERSON_CREATE_IDP_URL = Authorizator.createAction(Resources.person, 'createIdPUrl')\n\texport const PERSON_SIGN_IN_IDP = Authorizator.createAction(Resources.person, 'signInIdp')\n\texport const PERSON_CREATE_SESSION_KEY = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'createSessionToken', { roles })\n\n\texport const PERSON_INVITE = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.person, 'invite', { memberships })\n\texport const PERSON_INVITE_UNMANAGED = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.person, 'invite_unmanaged', { memberships })\n\n\texport const PROJECT_VIEW = Authorizator.createAction(Resources.project, 'view')\n\texport const PROJECT_SET_SECRET = Authorizator.createAction(Resources.project, 'setSecret')\n\texport const PROJECT_UPDATE = Authorizator.createAction(Resources.project, 'update')\n\n\texport const PROJECT_CREATE = Authorizator.createAction(Resources.project, 'create')\n\texport const ENTRYPOINT_DEPLOY = Authorizator.createAction(Resources.entrypoint, 'deployEntrypoint')\n\n\texport const PROJECT_VIEW_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'viewMembers', { memberships })\n\texport const PROJECT_ADD_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'addMember', { memberships })\n\texport const PROJECT_REMOVE_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'removeMember', { memberships })\n\texport const PROJECT_UPDATE_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'updateMember', { memberships })\n\n\n\texport const API_KEY_CREATE = Authorizator.createAction(Resources.apiKey, 'create')\n\texport const API_KEY_CREATE_GLOBAL = (roles?: readonly string[]) => Authorizator.createAction(Resources.apiKey, 'createGlobal', { roles })\n\texport const API_KEY_DISABLE = Authorizator.createAction(Resources.apiKey, 'disable')\n\n\texport const MAIL_TEMPLATE_ADD = Authorizator.createAction(Resources.mailTemplate, 'add')\n\texport const MAIL_TEMPLATE_REMOVE = Authorizator.createAction(Resources.mailTemplate, 'remove')\n\texport const MAIL_TEMPLATE_LIST = Authorizator.createAction(Resources.mailTemplate, 'list')\n\n\texport const IDP_ADD = Authorizator.createAction(Resources.idp, 'add')\n\texport const IDP_UPDATE = Authorizator.createAction(Resources.idp, 'update')\n\texport const IDP_DISABLE = Authorizator.createAction(Resources.idp, 'disable')\n\texport const IDP_ENABLE = Authorizator.createAction(Resources.idp, 'enable')\n\texport const IDP_LIST = Authorizator.createAction(Resources.idp, 'list')\n}\n\nexport { PermissionActions }\n"],"names":["PermissionActions","Resources","Authorizator"],"mappings":"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"}
1
+ {"version":3,"file":"PermissionActions.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/PermissionActions.ts"],"sourcesContent":["import { Authorizator } from '@contember/authorization'\nimport { Acl } from '@contember/schema'\n\nnamespace PermissionActions {\n\texport enum Resources {\n\t\tsystem = 'system',\n\t\tentrypoint = 'entrypoint',\n\t\tperson = 'person',\n\t\tidentity = 'identity',\n\t\tproject = 'project',\n\t\tapiKey = 'apiKey',\n\t\tmailTemplate = 'mailTemplate',\n\t\tidp = 'idp',\n\t}\n\n\n\texport const CONFIGURE = Authorizator.createAction(Resources.system, 'configure')\n\texport const CONFIG_VIEW = Authorizator.createAction(Resources.system, 'viewConfig')\n\n\texport const IDENTITY_VIEW_PERMISSIONS = Authorizator.createAction(Resources.identity, 'viewPermissions')\n\texport const IDENTITY_ADD_GLOBAL_ROLES = (roles?: readonly string[]) => Authorizator.createAction(Resources.identity, 'addGlobalRoles', { roles })\n\texport const IDENTITY_REMOVE_GLOBAL_ROLES = (roles?: readonly string[]) => Authorizator.createAction(Resources.identity, 'removeGlobalRoles', { roles })\n\n\texport const PERSON_DISABLE = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'disable', { roles })\n\n\texport const PERSON_VIEW = Authorizator.createAction(Resources.person, 'view')\n\texport const PERSON_SIGN_IN = Authorizator.createAction(Resources.person, 'signIn')\n\texport const PERSON_SIGN_UP = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'signUp', { roles })\n\texport const PERSON_SIGN_OUT = Authorizator.createAction(Resources.person, 'signOut')\n\texport const PERSON_SETUP_OTP = Authorizator.createAction(Resources.person, 'setupOtp')\n\texport const PERSON_CHANGE_PROFILE = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'changeProfile', { roles })\n\texport const PERSON_CHANGE_MY_PROFILE = Authorizator.createAction(Resources.person, 'changeMyProfile')\n\texport const PERSON_TOGGLE_PASSWORDLESS = Authorizator.createAction(Resources.person, 'togglePasswordless')\n\texport const PERSON_CHANGE_PASSWORD = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'changePassword', { roles })\n\texport const PERSON_CHANGE_MY_PASSWORD = Authorizator.createAction(Resources.person, 'changeMyPassword')\n\texport const PERSON_RESET_PASSWORD = Authorizator.createAction(Resources.person, 'resetPassword')\n\texport const PERSON_CREATE_IDP_URL = Authorizator.createAction(Resources.person, 'createIdPUrl')\n\texport const PERSON_SIGN_IN_IDP = Authorizator.createAction(Resources.person, 'signInIdp')\n\texport const PERSON_REQUEST_PASSWORDLESS_SIGN_IN = Authorizator.createAction(Resources.person, 'requestPasswordlessSignIn')\n\texport const PERSON_PASSWORDLESS_SIGN_IN = Authorizator.createAction(Resources.person, 'passwordlessSignIn')\n\texport const PERSON_CREATE_SESSION_KEY = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'createSessionToken', { roles })\n\n\texport const PERSON_INVITE = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.person, 'invite', { memberships })\n\texport const PERSON_INVITE_UNMANAGED = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.person, 'invite_unmanaged', { memberships })\n\n\texport const PROJECT_VIEW = Authorizator.createAction(Resources.project, 'view')\n\texport const PROJECT_SET_SECRET = Authorizator.createAction(Resources.project, 'setSecret')\n\texport const PROJECT_UPDATE = Authorizator.createAction(Resources.project, 'update')\n\n\texport const PROJECT_CREATE = Authorizator.createAction(Resources.project, 'create')\n\texport const ENTRYPOINT_DEPLOY = Authorizator.createAction(Resources.entrypoint, 'deployEntrypoint')\n\n\texport const PROJECT_VIEW_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'viewMembers', { memberships })\n\texport const PROJECT_ADD_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'addMember', { memberships })\n\texport const PROJECT_REMOVE_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'removeMember', { memberships })\n\texport const PROJECT_UPDATE_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'updateMember', { memberships })\n\n\n\texport const API_KEY_CREATE = Authorizator.createAction(Resources.apiKey, 'create')\n\texport const API_KEY_CREATE_GLOBAL = (roles?: readonly string[]) => Authorizator.createAction(Resources.apiKey, 'createGlobal', { roles })\n\texport const API_KEY_DISABLE = Authorizator.createAction(Resources.apiKey, 'disable')\n\n\texport const MAIL_TEMPLATE_ADD = Authorizator.createAction(Resources.mailTemplate, 'add')\n\texport const MAIL_TEMPLATE_REMOVE = Authorizator.createAction(Resources.mailTemplate, 'remove')\n\texport const MAIL_TEMPLATE_LIST = Authorizator.createAction(Resources.mailTemplate, 'list')\n\n\texport const IDP_ADD = Authorizator.createAction(Resources.idp, 'add')\n\texport const IDP_UPDATE = Authorizator.createAction(Resources.idp, 'update')\n\texport const IDP_DISABLE = Authorizator.createAction(Resources.idp, 'disable')\n\texport const IDP_ENABLE = Authorizator.createAction(Resources.idp, 'enable')\n\texport const IDP_LIST = Authorizator.createAction(Resources.idp, 'list')\n}\n\nexport { PermissionActions }\n"],"names":["PermissionActions","Resources","Authorizator"],"mappings":"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"}
@@ -11,6 +11,8 @@ var PermissionActions;
11
11
  Resources2["mailTemplate"] = "mailTemplate";
12
12
  Resources2["idp"] = "idp";
13
13
  })(PermissionActions2.Resources || (PermissionActions2.Resources = {}));
14
+ PermissionActions2.CONFIGURE = Authorizator.createAction("system", "configure");
15
+ PermissionActions2.CONFIG_VIEW = Authorizator.createAction("system", "viewConfig");
14
16
  PermissionActions2.IDENTITY_VIEW_PERMISSIONS = Authorizator.createAction("identity", "viewPermissions");
15
17
  PermissionActions2.IDENTITY_ADD_GLOBAL_ROLES = (roles) => Authorizator.createAction("identity", "addGlobalRoles", { roles });
16
18
  PermissionActions2.IDENTITY_REMOVE_GLOBAL_ROLES = (roles) => Authorizator.createAction("identity", "removeGlobalRoles", { roles });
@@ -22,11 +24,14 @@ var PermissionActions;
22
24
  PermissionActions2.PERSON_SETUP_OTP = Authorizator.createAction("person", "setupOtp");
23
25
  PermissionActions2.PERSON_CHANGE_PROFILE = (roles) => Authorizator.createAction("person", "changeProfile", { roles });
24
26
  PermissionActions2.PERSON_CHANGE_MY_PROFILE = Authorizator.createAction("person", "changeMyProfile");
27
+ PermissionActions2.PERSON_TOGGLE_PASSWORDLESS = Authorizator.createAction("person", "togglePasswordless");
25
28
  PermissionActions2.PERSON_CHANGE_PASSWORD = (roles) => Authorizator.createAction("person", "changePassword", { roles });
26
29
  PermissionActions2.PERSON_CHANGE_MY_PASSWORD = Authorizator.createAction("person", "changeMyPassword");
27
30
  PermissionActions2.PERSON_RESET_PASSWORD = Authorizator.createAction("person", "resetPassword");
28
31
  PermissionActions2.PERSON_CREATE_IDP_URL = Authorizator.createAction("person", "createIdPUrl");
29
32
  PermissionActions2.PERSON_SIGN_IN_IDP = Authorizator.createAction("person", "signInIdp");
33
+ PermissionActions2.PERSON_REQUEST_PASSWORDLESS_SIGN_IN = Authorizator.createAction("person", "requestPasswordlessSignIn");
34
+ PermissionActions2.PERSON_PASSWORDLESS_SIGN_IN = Authorizator.createAction("person", "passwordlessSignIn");
30
35
  PermissionActions2.PERSON_CREATE_SESSION_KEY = (roles) => Authorizator.createAction("person", "createSessionToken", { roles });
31
36
  PermissionActions2.PERSON_INVITE = (memberships) => Authorizator.createAction("person", "invite", { memberships });
32
37
  PermissionActions2.PERSON_INVITE_UNMANAGED = (memberships) => Authorizator.createAction("person", "invite_unmanaged", { memberships });
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionActions.js","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/PermissionActions.ts"],"sourcesContent":["import { Authorizator } from '@contember/authorization'\nimport { Acl } from '@contember/schema'\n\nnamespace PermissionActions {\n\texport enum Resources {\n\t\tsystem = 'system',\n\t\tentrypoint = 'entrypoint',\n\t\tperson = 'person',\n\t\tidentity = 'identity',\n\t\tproject = 'project',\n\t\tapiKey = 'apiKey',\n\t\tmailTemplate = 'mailTemplate',\n\t\tidp = 'idp',\n\t}\n\n\texport const IDENTITY_VIEW_PERMISSIONS = Authorizator.createAction(Resources.identity, 'viewPermissions')\n\texport const IDENTITY_ADD_GLOBAL_ROLES = (roles?: readonly string[]) => Authorizator.createAction(Resources.identity, 'addGlobalRoles', { roles })\n\texport const IDENTITY_REMOVE_GLOBAL_ROLES = (roles?: readonly string[]) => Authorizator.createAction(Resources.identity, 'removeGlobalRoles', { roles })\n\n\texport const PERSON_DISABLE = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'disable', { roles })\n\n\texport const PERSON_VIEW = Authorizator.createAction(Resources.person, 'view')\n\texport const PERSON_SIGN_IN = Authorizator.createAction(Resources.person, 'signIn')\n\texport const PERSON_SIGN_UP = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'signUp', { roles })\n\texport const PERSON_SIGN_OUT = Authorizator.createAction(Resources.person, 'signOut')\n\texport const PERSON_SETUP_OTP = Authorizator.createAction(Resources.person, 'setupOtp')\n\texport const PERSON_CHANGE_PROFILE = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'changeProfile', { roles })\n\texport const PERSON_CHANGE_MY_PROFILE = Authorizator.createAction(Resources.person, 'changeMyProfile')\n\texport const PERSON_CHANGE_PASSWORD = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'changePassword', { roles })\n\texport const PERSON_CHANGE_MY_PASSWORD = Authorizator.createAction(Resources.person, 'changeMyPassword')\n\texport const PERSON_RESET_PASSWORD = Authorizator.createAction(Resources.person, 'resetPassword')\n\texport const PERSON_CREATE_IDP_URL = Authorizator.createAction(Resources.person, 'createIdPUrl')\n\texport const PERSON_SIGN_IN_IDP = Authorizator.createAction(Resources.person, 'signInIdp')\n\texport const PERSON_CREATE_SESSION_KEY = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'createSessionToken', { roles })\n\n\texport const PERSON_INVITE = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.person, 'invite', { memberships })\n\texport const PERSON_INVITE_UNMANAGED = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.person, 'invite_unmanaged', { memberships })\n\n\texport const PROJECT_VIEW = Authorizator.createAction(Resources.project, 'view')\n\texport const PROJECT_SET_SECRET = Authorizator.createAction(Resources.project, 'setSecret')\n\texport const PROJECT_UPDATE = Authorizator.createAction(Resources.project, 'update')\n\n\texport const PROJECT_CREATE = Authorizator.createAction(Resources.project, 'create')\n\texport const ENTRYPOINT_DEPLOY = Authorizator.createAction(Resources.entrypoint, 'deployEntrypoint')\n\n\texport const PROJECT_VIEW_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'viewMembers', { memberships })\n\texport const PROJECT_ADD_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'addMember', { memberships })\n\texport const PROJECT_REMOVE_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'removeMember', { memberships })\n\texport const PROJECT_UPDATE_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'updateMember', { memberships })\n\n\n\texport const API_KEY_CREATE = Authorizator.createAction(Resources.apiKey, 'create')\n\texport const API_KEY_CREATE_GLOBAL = (roles?: readonly string[]) => Authorizator.createAction(Resources.apiKey, 'createGlobal', { roles })\n\texport const API_KEY_DISABLE = Authorizator.createAction(Resources.apiKey, 'disable')\n\n\texport const MAIL_TEMPLATE_ADD = Authorizator.createAction(Resources.mailTemplate, 'add')\n\texport const MAIL_TEMPLATE_REMOVE = Authorizator.createAction(Resources.mailTemplate, 'remove')\n\texport const MAIL_TEMPLATE_LIST = Authorizator.createAction(Resources.mailTemplate, 'list')\n\n\texport const IDP_ADD = Authorizator.createAction(Resources.idp, 'add')\n\texport const IDP_UPDATE = Authorizator.createAction(Resources.idp, 'update')\n\texport const IDP_DISABLE = Authorizator.createAction(Resources.idp, 'disable')\n\texport const IDP_ENABLE = Authorizator.createAction(Resources.idp, 'enable')\n\texport const IDP_LIST = Authorizator.createAction(Resources.idp, 'list')\n}\n\nexport { PermissionActions }\n"],"names":["PermissionActions","Resources"],"mappings":"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"}
1
+ {"version":3,"file":"PermissionActions.js","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/PermissionActions.ts"],"sourcesContent":["import { Authorizator } from '@contember/authorization'\nimport { Acl } from '@contember/schema'\n\nnamespace PermissionActions {\n\texport enum Resources {\n\t\tsystem = 'system',\n\t\tentrypoint = 'entrypoint',\n\t\tperson = 'person',\n\t\tidentity = 'identity',\n\t\tproject = 'project',\n\t\tapiKey = 'apiKey',\n\t\tmailTemplate = 'mailTemplate',\n\t\tidp = 'idp',\n\t}\n\n\n\texport const CONFIGURE = Authorizator.createAction(Resources.system, 'configure')\n\texport const CONFIG_VIEW = Authorizator.createAction(Resources.system, 'viewConfig')\n\n\texport const IDENTITY_VIEW_PERMISSIONS = Authorizator.createAction(Resources.identity, 'viewPermissions')\n\texport const IDENTITY_ADD_GLOBAL_ROLES = (roles?: readonly string[]) => Authorizator.createAction(Resources.identity, 'addGlobalRoles', { roles })\n\texport const IDENTITY_REMOVE_GLOBAL_ROLES = (roles?: readonly string[]) => Authorizator.createAction(Resources.identity, 'removeGlobalRoles', { roles })\n\n\texport const PERSON_DISABLE = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'disable', { roles })\n\n\texport const PERSON_VIEW = Authorizator.createAction(Resources.person, 'view')\n\texport const PERSON_SIGN_IN = Authorizator.createAction(Resources.person, 'signIn')\n\texport const PERSON_SIGN_UP = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'signUp', { roles })\n\texport const PERSON_SIGN_OUT = Authorizator.createAction(Resources.person, 'signOut')\n\texport const PERSON_SETUP_OTP = Authorizator.createAction(Resources.person, 'setupOtp')\n\texport const PERSON_CHANGE_PROFILE = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'changeProfile', { roles })\n\texport const PERSON_CHANGE_MY_PROFILE = Authorizator.createAction(Resources.person, 'changeMyProfile')\n\texport const PERSON_TOGGLE_PASSWORDLESS = Authorizator.createAction(Resources.person, 'togglePasswordless')\n\texport const PERSON_CHANGE_PASSWORD = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'changePassword', { roles })\n\texport const PERSON_CHANGE_MY_PASSWORD = Authorizator.createAction(Resources.person, 'changeMyPassword')\n\texport const PERSON_RESET_PASSWORD = Authorizator.createAction(Resources.person, 'resetPassword')\n\texport const PERSON_CREATE_IDP_URL = Authorizator.createAction(Resources.person, 'createIdPUrl')\n\texport const PERSON_SIGN_IN_IDP = Authorizator.createAction(Resources.person, 'signInIdp')\n\texport const PERSON_REQUEST_PASSWORDLESS_SIGN_IN = Authorizator.createAction(Resources.person, 'requestPasswordlessSignIn')\n\texport const PERSON_PASSWORDLESS_SIGN_IN = Authorizator.createAction(Resources.person, 'passwordlessSignIn')\n\texport const PERSON_CREATE_SESSION_KEY = (roles?: readonly string[]) => Authorizator.createAction(Resources.person, 'createSessionToken', { roles })\n\n\texport const PERSON_INVITE = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.person, 'invite', { memberships })\n\texport const PERSON_INVITE_UNMANAGED = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.person, 'invite_unmanaged', { memberships })\n\n\texport const PROJECT_VIEW = Authorizator.createAction(Resources.project, 'view')\n\texport const PROJECT_SET_SECRET = Authorizator.createAction(Resources.project, 'setSecret')\n\texport const PROJECT_UPDATE = Authorizator.createAction(Resources.project, 'update')\n\n\texport const PROJECT_CREATE = Authorizator.createAction(Resources.project, 'create')\n\texport const ENTRYPOINT_DEPLOY = Authorizator.createAction(Resources.entrypoint, 'deployEntrypoint')\n\n\texport const PROJECT_VIEW_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'viewMembers', { memberships })\n\texport const PROJECT_ADD_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'addMember', { memberships })\n\texport const PROJECT_REMOVE_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'removeMember', { memberships })\n\texport const PROJECT_UPDATE_MEMBER = (memberships: readonly Acl.Membership[]) => Authorizator.createAction(Resources.project, 'updateMember', { memberships })\n\n\n\texport const API_KEY_CREATE = Authorizator.createAction(Resources.apiKey, 'create')\n\texport const API_KEY_CREATE_GLOBAL = (roles?: readonly string[]) => Authorizator.createAction(Resources.apiKey, 'createGlobal', { roles })\n\texport const API_KEY_DISABLE = Authorizator.createAction(Resources.apiKey, 'disable')\n\n\texport const MAIL_TEMPLATE_ADD = Authorizator.createAction(Resources.mailTemplate, 'add')\n\texport const MAIL_TEMPLATE_REMOVE = Authorizator.createAction(Resources.mailTemplate, 'remove')\n\texport const MAIL_TEMPLATE_LIST = Authorizator.createAction(Resources.mailTemplate, 'list')\n\n\texport const IDP_ADD = Authorizator.createAction(Resources.idp, 'add')\n\texport const IDP_UPDATE = Authorizator.createAction(Resources.idp, 'update')\n\texport const IDP_DISABLE = Authorizator.createAction(Resources.idp, 'disable')\n\texport const IDP_ENABLE = Authorizator.createAction(Resources.idp, 'enable')\n\texport const IDP_LIST = Authorizator.createAction(Resources.idp, 'list')\n}\n\nexport { PermissionActions }\n"],"names":["PermissionActions","Resources"],"mappings":"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"}
@@ -19,9 +19,12 @@ class PermissionsFactory {
19
19
  permissions.allow(Roles.TenantRole.LOGIN, PermissionActions.PermissionActions.PERSON_RESET_PASSWORD);
20
20
  permissions.allow(Roles.TenantRole.LOGIN, PermissionActions.PermissionActions.PERSON_CREATE_IDP_URL);
21
21
  permissions.allow(Roles.TenantRole.LOGIN, PermissionActions.PermissionActions.PERSON_SIGN_IN_IDP);
22
+ permissions.allow(Roles.TenantRole.LOGIN, PermissionActions.PermissionActions.PERSON_PASSWORDLESS_SIGN_IN);
23
+ permissions.allow(Roles.TenantRole.LOGIN, PermissionActions.PermissionActions.PERSON_REQUEST_PASSWORDLESS_SIGN_IN);
22
24
  permissions.allow(Roles.TenantRole.PERSON, PermissionActions.PermissionActions.PERSON_VIEW);
23
25
  permissions.allow(Roles.TenantRole.PERSON, PermissionActions.PermissionActions.PERSON_CHANGE_MY_PASSWORD);
24
26
  permissions.allow(Roles.TenantRole.PERSON, PermissionActions.PermissionActions.PERSON_CHANGE_MY_PROFILE);
27
+ permissions.allow(Roles.TenantRole.PERSON, PermissionActions.PermissionActions.PERSON_TOGGLE_PASSWORDLESS);
25
28
  permissions.allow(Roles.TenantRole.PERSON, PermissionActions.PermissionActions.PERSON_SIGN_OUT);
26
29
  permissions.allow(Roles.TenantRole.PERSON, PermissionActions.PermissionActions.PERSON_SETUP_OTP);
27
30
  permissions.allow(Roles.TenantRole.PROJECT_MEMBER, PermissionActions.PermissionActions.PROJECT_VIEW);
@@ -51,6 +54,8 @@ class PermissionsFactory {
51
54
  permissions.allow(Roles.TenantRole.PROJECT_ADMIN, PermissionActions.PermissionActions.IDP_ENABLE);
52
55
  permissions.allow(Roles.TenantRole.PROJECT_ADMIN, PermissionActions.PermissionActions.IDP_LIST);
53
56
  permissions.allow(Roles.TenantRole.PROJECT_ADMIN, PermissionActions.PermissionActions.ENTRYPOINT_DEPLOY);
57
+ permissions.allow(Roles.TenantRole.PROJECT_ADMIN, PermissionActions.PermissionActions.CONFIGURE);
58
+ permissions.allow(Roles.TenantRole.PROJECT_ADMIN, PermissionActions.PermissionActions.CONFIG_VIEW);
54
59
  permissions.allow(Roles.TenantRole.PROJECT_CREATOR, PermissionActions.PermissionActions.PROJECT_CREATE);
55
60
  permissions.allow(Roles.TenantRole.ENTRYPOINT_DEPLOYER, PermissionActions.PermissionActions.ENTRYPOINT_DEPLOY);
56
61
  return permissions;
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionsFactory.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/PermissionsFactory.ts"],"sourcesContent":["import { Permissions } from '@contember/authorization'\nimport { PermissionActions } from './PermissionActions'\nimport { TenantRole } from './Roles'\n\nconst allowedRoles = new Set<string>([TenantRole.LOGIN, TenantRole.PROJECT_ADMIN, TenantRole.ENTRYPOINT_DEPLOYER])\n\nconst projectAdminAllowedInputRoles = ({ roles }: {roles?: readonly string[]}) => {\n\treturn roles === undefined || roles.every(it => allowedRoles.has(it))\n}\n\nconst forbiddenRoles = new Set<string>([TenantRole.SUPER_ADMIN, TenantRole.PROJECT_CREATOR])\n\nconst projectAdminUseRolesVerifier = ({ roles }: { roles?: readonly string[] }) => {\n\treturn roles === undefined || roles.every(it => !forbiddenRoles.has(it))\n}\n\nclass PermissionsFactory {\n\tpublic create(): Permissions {\n\t\tconst permissions = new Permissions()\n\n\t\tpermissions.allow(TenantRole.SUPER_ADMIN, { resource: Permissions.ALL, privilege: Permissions.ALL })\n\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_SIGN_IN)\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_RESET_PASSWORD)\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_CREATE_IDP_URL)\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_SIGN_IN_IDP)\n\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_VIEW)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_CHANGE_MY_PASSWORD)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_CHANGE_MY_PROFILE)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_SIGN_OUT)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_SETUP_OTP)\n\n\t\tpermissions.allow(TenantRole.PROJECT_MEMBER, PermissionActions.PROJECT_VIEW)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_VIEW)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.API_KEY_CREATE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.API_KEY_DISABLE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.API_KEY_CREATE_GLOBAL(), projectAdminAllowedInputRoles)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_SIGN_UP(), projectAdminAllowedInputRoles)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDENTITY_ADD_GLOBAL_ROLES(), projectAdminAllowedInputRoles)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDENTITY_REMOVE_GLOBAL_ROLES(), projectAdminAllowedInputRoles)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_CREATE_SESSION_KEY(), projectAdminUseRolesVerifier)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_DISABLE(), projectAdminUseRolesVerifier)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_CHANGE_PROFILE(), projectAdminUseRolesVerifier)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_CHANGE_PASSWORD(), projectAdminUseRolesVerifier)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_VIEW_MEMBER([]))\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_ADD_MEMBER([]))\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_UPDATE_MEMBER([]))\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_REMOVE_MEMBER([]))\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_INVITE([]))\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_INVITE_UNMANAGED([]))\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.MAIL_TEMPLATE_ADD)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.MAIL_TEMPLATE_REMOVE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.MAIL_TEMPLATE_LIST)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_ADD)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_UPDATE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_DISABLE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_ENABLE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_LIST)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.ENTRYPOINT_DEPLOY)\n\n\t\tpermissions.allow(TenantRole.PROJECT_CREATOR, PermissionActions.PROJECT_CREATE)\n\t\tpermissions.allow(TenantRole.ENTRYPOINT_DEPLOYER, PermissionActions.ENTRYPOINT_DEPLOY)\n\n\t\treturn permissions\n\t}\n}\n\nexport { PermissionsFactory }\n"],"names":["TenantRole","Permissions","PermissionActions"],"mappings":"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"}
1
+ {"version":3,"file":"PermissionsFactory.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/PermissionsFactory.ts"],"sourcesContent":["import { Permissions } from '@contember/authorization'\nimport { PermissionActions } from './PermissionActions'\nimport { TenantRole } from './Roles'\n\nconst allowedRoles = new Set<string>([TenantRole.LOGIN, TenantRole.PROJECT_ADMIN, TenantRole.ENTRYPOINT_DEPLOYER])\n\nconst projectAdminAllowedInputRoles = ({ roles }: {roles?: readonly string[]}) => {\n\treturn roles === undefined || roles.every(it => allowedRoles.has(it))\n}\n\nconst forbiddenRoles = new Set<string>([TenantRole.SUPER_ADMIN, TenantRole.PROJECT_CREATOR])\n\nconst projectAdminUseRolesVerifier = ({ roles }: { roles?: readonly string[] }) => {\n\treturn roles === undefined || roles.every(it => !forbiddenRoles.has(it))\n}\n\nclass PermissionsFactory {\n\tpublic create(): Permissions {\n\t\tconst permissions = new Permissions()\n\n\t\tpermissions.allow(TenantRole.SUPER_ADMIN, { resource: Permissions.ALL, privilege: Permissions.ALL })\n\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_SIGN_IN)\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_RESET_PASSWORD)\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_CREATE_IDP_URL)\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_SIGN_IN_IDP)\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_PASSWORDLESS_SIGN_IN)\n\t\tpermissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_REQUEST_PASSWORDLESS_SIGN_IN)\n\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_VIEW)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_CHANGE_MY_PASSWORD)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_CHANGE_MY_PROFILE)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_TOGGLE_PASSWORDLESS)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_SIGN_OUT)\n\t\tpermissions.allow(TenantRole.PERSON, PermissionActions.PERSON_SETUP_OTP)\n\n\t\tpermissions.allow(TenantRole.PROJECT_MEMBER, PermissionActions.PROJECT_VIEW)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_VIEW)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.API_KEY_CREATE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.API_KEY_DISABLE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.API_KEY_CREATE_GLOBAL(), projectAdminAllowedInputRoles)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_SIGN_UP(), projectAdminAllowedInputRoles)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDENTITY_ADD_GLOBAL_ROLES(), projectAdminAllowedInputRoles)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDENTITY_REMOVE_GLOBAL_ROLES(), projectAdminAllowedInputRoles)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_CREATE_SESSION_KEY(), projectAdminUseRolesVerifier)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_DISABLE(), projectAdminUseRolesVerifier)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_CHANGE_PROFILE(), projectAdminUseRolesVerifier)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_CHANGE_PASSWORD(), projectAdminUseRolesVerifier)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_VIEW_MEMBER([]))\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_ADD_MEMBER([]))\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_UPDATE_MEMBER([]))\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PROJECT_REMOVE_MEMBER([]))\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_INVITE([]))\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.PERSON_INVITE_UNMANAGED([]))\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.MAIL_TEMPLATE_ADD)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.MAIL_TEMPLATE_REMOVE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.MAIL_TEMPLATE_LIST)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_ADD)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_UPDATE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_DISABLE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_ENABLE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_LIST)\n\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.ENTRYPOINT_DEPLOY)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.CONFIGURE)\n\t\tpermissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.CONFIG_VIEW)\n\n\t\tpermissions.allow(TenantRole.PROJECT_CREATOR, PermissionActions.PROJECT_CREATE)\n\t\tpermissions.allow(TenantRole.ENTRYPOINT_DEPLOYER, PermissionActions.ENTRYPOINT_DEPLOY)\n\n\t\treturn permissions\n\t}\n}\n\nexport { PermissionsFactory }\n"],"names":["TenantRole","Permissions","PermissionActions"],"mappings":"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"}
@@ -17,9 +17,12 @@ class PermissionsFactory {
17
17
  permissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_RESET_PASSWORD);
18
18
  permissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_CREATE_IDP_URL);
19
19
  permissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_SIGN_IN_IDP);
20
+ permissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_PASSWORDLESS_SIGN_IN);
21
+ permissions.allow(TenantRole.LOGIN, PermissionActions.PERSON_REQUEST_PASSWORDLESS_SIGN_IN);
20
22
  permissions.allow(TenantRole.PERSON, PermissionActions.PERSON_VIEW);
21
23
  permissions.allow(TenantRole.PERSON, PermissionActions.PERSON_CHANGE_MY_PASSWORD);
22
24
  permissions.allow(TenantRole.PERSON, PermissionActions.PERSON_CHANGE_MY_PROFILE);
25
+ permissions.allow(TenantRole.PERSON, PermissionActions.PERSON_TOGGLE_PASSWORDLESS);
23
26
  permissions.allow(TenantRole.PERSON, PermissionActions.PERSON_SIGN_OUT);
24
27
  permissions.allow(TenantRole.PERSON, PermissionActions.PERSON_SETUP_OTP);
25
28
  permissions.allow(TenantRole.PROJECT_MEMBER, PermissionActions.PROJECT_VIEW);
@@ -49,6 +52,8 @@ class PermissionsFactory {
49
52
  permissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_ENABLE);
50
53
  permissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.IDP_LIST);
51
54
  permissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.ENTRYPOINT_DEPLOY);
55
+ permissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.CONFIGURE);
56
+ permissions.allow(TenantRole.PROJECT_ADMIN, PermissionActions.CONFIG_VIEW);
52
57
  permissions.allow(TenantRole.PROJECT_CREATOR, PermissionActions.PROJECT_CREATE);
53
58
  permissions.allow(TenantRole.ENTRYPOINT_DEPLOYER, PermissionActions.ENTRYPOINT_DEPLOY);
54
59
  return permissions;