@devxcrew/platform 0.1.2 → 0.1.6

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 (280) hide show
  1. package/README.md +7 -1
  2. package/dist/index.d.ts +6 -4
  3. package/dist/index.js +4 -2
  4. package/dist/modules/identity/audit/audit.controller.d.ts +17 -0
  5. package/dist/modules/identity/audit/audit.controller.js +12 -0
  6. package/dist/modules/identity/audit/audit.migration.d.ts +1 -0
  7. package/dist/modules/identity/audit/audit.migration.js +1 -0
  8. package/dist/modules/identity/audit/audit.provider.d.ts +24 -0
  9. package/dist/modules/identity/audit/audit.provider.js +14 -0
  10. package/dist/modules/identity/audit/audit.repository.d.ts +26 -0
  11. package/dist/modules/identity/audit/audit.repository.js +46 -0
  12. package/dist/modules/identity/audit/audit.routes.d.ts +5 -0
  13. package/dist/modules/identity/audit/audit.routes.js +2 -0
  14. package/dist/modules/identity/audit/audit.schema.d.ts +1 -0
  15. package/dist/modules/identity/audit/audit.schema.js +1 -0
  16. package/dist/modules/identity/audit/audit.seed.d.ts +1 -0
  17. package/dist/modules/identity/audit/audit.seed.js +1 -0
  18. package/dist/modules/identity/audit/audit.service.d.ts +23 -0
  19. package/dist/modules/identity/audit/audit.service.js +46 -0
  20. package/dist/modules/identity/audit/audit.types.d.ts +12 -0
  21. package/dist/modules/identity/audit/audit.types.js +1 -0
  22. package/dist/modules/identity/audit/index.d.ts +4 -0
  23. package/dist/modules/identity/audit/index.js +3 -0
  24. package/dist/modules/identity/{identity.administration-service.d.ts → composition/identity.composition.d.ts} +59 -27
  25. package/dist/modules/identity/composition/identity.composition.js +171 -0
  26. package/dist/modules/identity/composition/identity.seed.d.ts +3 -0
  27. package/dist/modules/identity/composition/identity.seed.js +16 -0
  28. package/dist/modules/identity/identity.controller.d.ts +8 -6
  29. package/dist/modules/identity/identity.controller.js +90 -70
  30. package/dist/modules/identity/identity.migration.d.ts +1 -2
  31. package/dist/modules/identity/identity.migration.js +1 -79
  32. package/dist/modules/identity/identity.provider.d.ts +39 -13
  33. package/dist/modules/identity/identity.provider.js +19 -73
  34. package/dist/modules/identity/identity.public-schemas.d.ts +9 -3
  35. package/dist/modules/identity/identity.public-schemas.js +9 -3
  36. package/dist/modules/identity/identity.repository.d.ts +1 -40
  37. package/dist/modules/identity/identity.repository.js +1 -196
  38. package/dist/modules/identity/identity.routes.d.ts +2 -5
  39. package/dist/modules/identity/identity.routes.js +3 -11
  40. package/dist/modules/identity/identity.schema.d.ts +1 -27
  41. package/dist/modules/identity/identity.schema.js +1 -34
  42. package/dist/modules/identity/identity.seed.d.ts +1 -3
  43. package/dist/modules/identity/identity.seed.js +1 -81
  44. package/dist/modules/identity/identity.service.d.ts +1 -32
  45. package/dist/modules/identity/identity.service.js +1 -83
  46. package/dist/modules/identity/identity.types.d.ts +13 -106
  47. package/dist/modules/identity/index.d.ts +18 -11
  48. package/dist/modules/identity/index.js +14 -8
  49. package/dist/modules/identity/{identity.administration-migration.js → legacy/identity.administration-migration.js} +3 -11
  50. package/dist/modules/identity/legacy/identity.migration.d.ts +2 -0
  51. package/dist/modules/identity/legacy/identity.migration.js +72 -0
  52. package/dist/modules/identity/organization/index.d.ts +6 -0
  53. package/dist/modules/identity/organization/index.js +5 -0
  54. package/dist/modules/identity/organization/organization.controller.d.ts +35 -0
  55. package/dist/modules/identity/organization/organization.controller.js +18 -0
  56. package/dist/modules/identity/organization/organization.migration.d.ts +1 -0
  57. package/dist/modules/identity/organization/organization.migration.js +1 -0
  58. package/dist/modules/identity/organization/organization.provider.d.ts +46 -0
  59. package/dist/modules/identity/organization/organization.provider.js +33 -0
  60. package/dist/modules/identity/organization/organization.repository.d.ts +58 -0
  61. package/dist/modules/identity/organization/organization.repository.js +101 -0
  62. package/dist/modules/identity/organization/organization.routes.d.ts +5 -0
  63. package/dist/modules/identity/organization/organization.routes.js +2 -0
  64. package/dist/modules/identity/organization/organization.schema.d.ts +11 -0
  65. package/dist/modules/identity/organization/organization.schema.js +18 -0
  66. package/dist/modules/identity/organization/organization.seed.d.ts +3 -0
  67. package/dist/modules/identity/organization/organization.seed.js +11 -0
  68. package/dist/modules/identity/organization/organization.service.d.ts +39 -0
  69. package/dist/modules/identity/organization/organization.service.js +55 -0
  70. package/dist/modules/identity/organization/organization.types.d.ts +19 -0
  71. package/dist/modules/identity/organization/organization.types.js +1 -0
  72. package/dist/modules/identity/permission/index.d.ts +9 -0
  73. package/dist/modules/identity/permission/index.js +6 -0
  74. package/dist/modules/identity/permission/permission.controller.d.ts +21 -0
  75. package/dist/modules/identity/permission/permission.controller.js +12 -0
  76. package/dist/modules/identity/{identity.permission-declarations-migration.js → permission/permission.declarations.migration.js} +9 -4
  77. package/dist/modules/identity/{identity.permission-labels-migration.js → permission/permission.labels.migration.js} +5 -2
  78. package/dist/modules/identity/permission/permission.migration.d.ts +2 -0
  79. package/dist/modules/identity/permission/permission.migration.js +2 -0
  80. package/dist/modules/identity/permission/permission.provider.d.ts +19 -0
  81. package/dist/modules/identity/permission/permission.provider.js +14 -0
  82. package/dist/modules/identity/permission/permission.repository.d.ts +51 -0
  83. package/dist/modules/identity/permission/permission.repository.js +84 -0
  84. package/dist/modules/identity/permission/permission.routes.d.ts +5 -0
  85. package/dist/modules/identity/permission/permission.routes.js +2 -0
  86. package/dist/modules/identity/permission/permission.schema.d.ts +14 -0
  87. package/dist/modules/identity/permission/permission.schema.js +29 -0
  88. package/dist/modules/identity/permission/permission.seed.d.ts +4 -0
  89. package/dist/modules/identity/permission/permission.seed.js +17 -0
  90. package/dist/modules/identity/permission/permission.service.d.ts +31 -0
  91. package/dist/modules/identity/permission/permission.service.js +77 -0
  92. package/dist/modules/identity/permission/permission.types.d.ts +15 -0
  93. package/dist/modules/identity/permission/permission.types.js +1 -0
  94. package/dist/modules/identity/role/index.d.ts +10 -0
  95. package/dist/modules/identity/role/index.js +6 -0
  96. package/dist/modules/identity/role/role.controller.d.ts +42 -0
  97. package/dist/modules/identity/role/role.controller.js +25 -0
  98. package/dist/modules/identity/{identity.roles-migration.js → role/role.migration.js} +5 -18
  99. package/dist/modules/identity/role/role.provider.d.ts +14 -0
  100. package/dist/modules/identity/role/role.provider.js +30 -0
  101. package/dist/modules/identity/role/role.repository.d.ts +38 -0
  102. package/dist/modules/identity/role/role.repository.js +46 -0
  103. package/dist/modules/identity/role/role.routes.d.ts +5 -0
  104. package/dist/modules/identity/role/role.routes.js +2 -0
  105. package/dist/modules/identity/role/role.schema.d.ts +16 -0
  106. package/dist/modules/identity/role/role.schema.js +27 -0
  107. package/dist/modules/identity/role/role.seed.d.ts +3 -0
  108. package/dist/modules/identity/role/role.seed.js +8 -0
  109. package/dist/modules/identity/role/role.service.d.ts +69 -0
  110. package/dist/modules/identity/role/role.service.js +192 -0
  111. package/dist/modules/identity/role/role.types.d.ts +17 -0
  112. package/dist/modules/identity/role/role.types.js +1 -0
  113. package/dist/modules/identity/role-permission/index.d.ts +6 -0
  114. package/dist/modules/identity/role-permission/index.js +4 -0
  115. package/dist/modules/identity/role-permission/role-permission.controller.d.ts +1 -0
  116. package/dist/modules/identity/role-permission/role-permission.controller.js +1 -0
  117. package/dist/modules/identity/role-permission/role-permission.migration.d.ts +1 -0
  118. package/dist/modules/identity/role-permission/role-permission.migration.js +1 -0
  119. package/dist/modules/identity/role-permission/role-permission.provider.d.ts +14 -0
  120. package/dist/modules/identity/role-permission/role-permission.provider.js +15 -0
  121. package/dist/modules/identity/role-permission/role-permission.repository.d.ts +12 -0
  122. package/dist/modules/identity/role-permission/role-permission.repository.js +51 -0
  123. package/dist/modules/identity/role-permission/role-permission.routes.d.ts +1 -0
  124. package/dist/modules/identity/role-permission/role-permission.routes.js +2 -0
  125. package/dist/modules/identity/role-permission/role-permission.schema.d.ts +2 -0
  126. package/dist/modules/identity/role-permission/role-permission.schema.js +3 -0
  127. package/dist/modules/identity/role-permission/role-permission.seed.d.ts +3 -0
  128. package/dist/modules/identity/role-permission/role-permission.seed.js +10 -0
  129. package/dist/modules/identity/role-permission/role-permission.service.d.ts +13 -0
  130. package/dist/modules/identity/role-permission/role-permission.service.js +35 -0
  131. package/dist/modules/identity/role-permission/role-permission.types.d.ts +12 -0
  132. package/dist/modules/identity/role-permission/role-permission.types.js +1 -0
  133. package/dist/modules/identity/session/index.d.ts +6 -0
  134. package/dist/modules/identity/session/index.js +5 -0
  135. package/dist/modules/identity/session/session.authentication.controller.d.ts +30 -0
  136. package/dist/modules/identity/session/session.authentication.controller.js +37 -0
  137. package/dist/modules/identity/session/session.controller.d.ts +18 -0
  138. package/dist/modules/identity/session/session.controller.js +15 -0
  139. package/dist/modules/identity/session/session.migration.d.ts +1 -0
  140. package/dist/modules/identity/session/session.migration.js +1 -0
  141. package/dist/modules/identity/session/session.provider.d.ts +34 -0
  142. package/dist/modules/identity/session/session.provider.js +23 -0
  143. package/dist/modules/identity/session/session.repository.d.ts +36 -0
  144. package/dist/modules/identity/session/session.repository.js +128 -0
  145. package/dist/modules/identity/session/session.routes.d.ts +27 -0
  146. package/dist/modules/identity/session/session.routes.js +13 -0
  147. package/dist/modules/identity/session/session.schema.d.ts +6 -0
  148. package/dist/modules/identity/session/session.schema.js +12 -0
  149. package/dist/modules/identity/session/session.seed.d.ts +1 -0
  150. package/dist/modules/identity/session/session.seed.js +1 -0
  151. package/dist/modules/identity/session/session.service.d.ts +20 -0
  152. package/dist/modules/identity/session/session.service.js +27 -0
  153. package/dist/modules/identity/session/session.types.d.ts +17 -0
  154. package/dist/modules/identity/session/session.types.js +1 -0
  155. package/dist/modules/identity/settings/index.d.ts +5 -0
  156. package/dist/modules/identity/settings/index.js +4 -0
  157. package/dist/modules/identity/settings/settings.controller.d.ts +35 -0
  158. package/dist/modules/identity/settings/settings.controller.js +18 -0
  159. package/dist/modules/identity/settings/settings.migration.d.ts +1 -0
  160. package/dist/modules/identity/settings/settings.migration.js +1 -0
  161. package/dist/modules/identity/settings/settings.provider.d.ts +35 -0
  162. package/dist/modules/identity/settings/settings.provider.js +14 -0
  163. package/dist/modules/identity/settings/settings.repository.d.ts +49 -0
  164. package/dist/modules/identity/settings/settings.repository.js +75 -0
  165. package/dist/modules/identity/settings/settings.routes.d.ts +1 -0
  166. package/dist/modules/identity/settings/settings.routes.js +7 -0
  167. package/dist/modules/identity/settings/settings.schema.d.ts +15 -0
  168. package/dist/modules/identity/settings/settings.schema.js +27 -0
  169. package/dist/modules/identity/settings/settings.seed.d.ts +1 -0
  170. package/dist/modules/identity/settings/settings.seed.js +1 -0
  171. package/dist/modules/identity/settings/settings.service.d.ts +40 -0
  172. package/dist/modules/identity/settings/settings.service.js +101 -0
  173. package/dist/modules/identity/settings/settings.types.d.ts +20 -0
  174. package/dist/modules/identity/settings/settings.types.js +1 -0
  175. package/dist/modules/identity/support/identity.schema.d.ts +8 -0
  176. package/dist/modules/identity/support/identity.schema.js +10 -0
  177. package/dist/modules/identity/support/pagination.d.ts +13 -0
  178. package/dist/modules/identity/support/pagination.js +27 -0
  179. package/dist/modules/identity/support/pagination.schema.d.ts +43 -0
  180. package/dist/modules/identity/support/pagination.schema.js +15 -0
  181. package/dist/modules/identity/support/resource-controller.d.ts +14 -0
  182. package/dist/modules/identity/support/resource-controller.js +1 -0
  183. package/dist/modules/identity/user/index.d.ts +13 -0
  184. package/dist/modules/identity/user/index.js +11 -0
  185. package/dist/modules/identity/user/user.administration.service.d.ts +59 -0
  186. package/dist/modules/identity/user/user.administration.service.js +159 -0
  187. package/dist/modules/identity/user/user.controller.d.ts +44 -0
  188. package/dist/modules/identity/user/user.controller.js +21 -0
  189. package/dist/modules/identity/user/user.lifecycle.controller.d.ts +58 -0
  190. package/dist/modules/identity/user/user.lifecycle.controller.js +27 -0
  191. package/dist/modules/identity/{identity.lifecycle-schema.js → user/user.lifecycle.schema.js} +5 -5
  192. package/dist/modules/identity/{identity.lifecycle-service.d.ts → user/user.lifecycle.service.d.ts} +8 -4
  193. package/dist/modules/identity/{identity.lifecycle-service.js → user/user.lifecycle.service.js} +66 -118
  194. package/dist/modules/identity/user/user.migration.d.ts +1 -0
  195. package/dist/modules/identity/user/user.migration.js +1 -0
  196. package/dist/modules/identity/{identity.password.js → user/user.password.js} +1 -1
  197. package/dist/modules/identity/user/user.provider.d.ts +80 -0
  198. package/dist/modules/identity/user/user.provider.js +22 -0
  199. package/dist/modules/identity/user/user.repository.d.ts +64 -0
  200. package/dist/modules/identity/user/user.repository.js +129 -0
  201. package/dist/modules/identity/user/user.routes.d.ts +12 -0
  202. package/dist/modules/identity/user/user.routes.js +9 -0
  203. package/dist/modules/identity/user/user.schema.d.ts +34 -0
  204. package/dist/modules/identity/user/user.schema.js +46 -0
  205. package/dist/modules/identity/user/user.seed.d.ts +14 -0
  206. package/dist/modules/identity/user/user.seed.js +47 -0
  207. package/dist/modules/identity/user/user.service.d.ts +33 -0
  208. package/dist/modules/identity/user/user.service.js +76 -0
  209. package/dist/modules/identity/user/user.types.d.ts +27 -0
  210. package/dist/modules/identity/user/user.types.js +1 -0
  211. package/dist/modules/identity/user-role/index.d.ts +8 -0
  212. package/dist/modules/identity/user-role/index.js +6 -0
  213. package/dist/modules/identity/user-role/user-role.controller.d.ts +42 -0
  214. package/dist/modules/identity/user-role/user-role.controller.js +21 -0
  215. package/dist/modules/identity/user-role/user-role.migration.d.ts +1 -0
  216. package/dist/modules/identity/user-role/user-role.migration.js +1 -0
  217. package/dist/modules/identity/user-role/user-role.policy.d.ts +3 -0
  218. package/dist/modules/identity/user-role/user-role.policy.js +25 -0
  219. package/dist/modules/identity/user-role/user-role.provider.d.ts +18 -0
  220. package/dist/modules/identity/user-role/user-role.provider.js +23 -0
  221. package/dist/modules/identity/user-role/user-role.repository.d.ts +34 -0
  222. package/dist/modules/identity/user-role/user-role.repository.js +87 -0
  223. package/dist/modules/identity/user-role/user-role.routes.d.ts +5 -0
  224. package/dist/modules/identity/user-role/user-role.routes.js +2 -0
  225. package/dist/modules/identity/user-role/user-role.schema.d.ts +14 -0
  226. package/dist/modules/identity/user-role/user-role.schema.js +25 -0
  227. package/dist/modules/identity/user-role/user-role.seed.d.ts +7 -0
  228. package/dist/modules/identity/user-role/user-role.seed.js +11 -0
  229. package/dist/modules/identity/user-role/user-role.service.d.ts +60 -0
  230. package/dist/modules/identity/user-role/user-role.service.js +216 -0
  231. package/dist/modules/identity/user-role/user-role.types.d.ts +12 -0
  232. package/dist/modules/identity/user-role/user-role.types.js +1 -0
  233. package/dist/modules/tenant/index.d.ts +6 -0
  234. package/dist/modules/tenant/index.js +5 -0
  235. package/dist/modules/tenant/tenant.command.d.ts +3 -0
  236. package/dist/modules/tenant/tenant.command.js +43 -0
  237. package/dist/modules/tenant/tenant.controller.d.ts +4 -0
  238. package/dist/modules/tenant/tenant.controller.js +12 -0
  239. package/dist/modules/tenant/tenant.migration.d.ts +5 -0
  240. package/dist/modules/tenant/tenant.migration.js +46 -0
  241. package/dist/modules/tenant/tenant.provider.d.ts +3 -0
  242. package/dist/modules/tenant/tenant.provider.js +44 -0
  243. package/dist/modules/tenant/tenant.readiness.d.ts +6 -0
  244. package/dist/modules/tenant/tenant.readiness.js +45 -0
  245. package/dist/modules/tenant/tenant.repository.d.ts +15 -0
  246. package/dist/modules/tenant/tenant.repository.js +23 -0
  247. package/dist/modules/tenant/tenant.routes.d.ts +4 -0
  248. package/dist/modules/tenant/tenant.routes.js +7 -0
  249. package/dist/modules/tenant/tenant.schema.d.ts +20 -0
  250. package/dist/modules/tenant/tenant.schema.js +31 -0
  251. package/dist/modules/tenant/tenant.seed.d.ts +8 -0
  252. package/dist/modules/tenant/tenant.seed.js +40 -0
  253. package/dist/modules/tenant/tenant.service.d.ts +16 -0
  254. package/dist/modules/tenant/tenant.service.js +72 -0
  255. package/dist/modules/tenant/tenant.types.d.ts +39 -0
  256. package/dist/modules/tenant/tenant.types.js +1 -0
  257. package/package.json +9 -5
  258. package/dist/modules/identity/identity.administration-repository.d.ts +0 -19
  259. package/dist/modules/identity/identity.administration-repository.js +0 -102
  260. package/dist/modules/identity/identity.administration-schema.d.ts +0 -113
  261. package/dist/modules/identity/identity.administration-schema.js +0 -121
  262. package/dist/modules/identity/identity.administration-service.js +0 -517
  263. package/dist/modules/identity/identity.membership-policy.d.ts +0 -3
  264. package/dist/modules/identity/identity.membership-policy.js +0 -27
  265. package/dist/modules/identity/identity.permission-declarations.d.ts +0 -23
  266. package/dist/modules/identity/identity.permission-declarations.js +0 -57
  267. package/dist/modules/identity/identity.presentation-service.d.ts +0 -23
  268. package/dist/modules/identity/identity.presentation-service.js +0 -51
  269. package/dist/modules/identity/identity.roles-service.d.ts +0 -49
  270. package/dist/modules/identity/identity.roles-service.js +0 -327
  271. /package/dist/modules/identity/{identity.administration-migration.d.ts → legacy/identity.administration-migration.d.ts} +0 -0
  272. /package/dist/modules/identity/{identity.permission-declarations-migration.d.ts → permission/permission.declarations.migration.d.ts} +0 -0
  273. /package/dist/modules/identity/{identity.permission-labels-migration.d.ts → permission/permission.labels.migration.d.ts} +0 -0
  274. /package/dist/modules/identity/{identity.roles-migration.d.ts → role/role.migration.d.ts} +0 -0
  275. /package/dist/modules/identity/{identity.error.d.ts → support/identity.error.d.ts} +0 -0
  276. /package/dist/modules/identity/{identity.error.js → support/identity.error.js} +0 -0
  277. /package/dist/modules/identity/{identity.request-context.d.ts → support/identity.request-context.d.ts} +0 -0
  278. /package/dist/modules/identity/{identity.request-context.js → support/identity.request-context.js} +0 -0
  279. /package/dist/modules/identity/{identity.lifecycle-schema.d.ts → user/user.lifecycle.schema.d.ts} +0 -0
  280. /package/dist/modules/identity/{identity.password.d.ts → user/user.password.d.ts} +0 -0
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Platform Core
2
2
 
3
3
  Source repository: https://github.com/devxcrew/platform.
4
- Package: `@devxcrew/platform`, version `0.1.0`.
4
+ Package: `@devxcrew/platform`, source version `0.1.6`.
5
5
 
6
6
  Platform Core owns database identity, sessions, role permissions, and tenant membership.
7
7
  Applications consume its public provider. Framework remains responsible for business-neutral runtime primitives.
@@ -80,3 +80,9 @@ Actual SMTP delivery acceptance remains deferred. Local failure and concurrency
80
80
  ## Distribution
81
81
 
82
82
  First-party package code uses the MIT license. Dependency licenses and notices retain their original terms.
83
+
84
+ ## Tenant storage
85
+
86
+ Platform now exports createTenantProvider, tenantConnectionsMigration, provisionTenant and verifyTenantReadiness.
87
+ The tenant owner uses public Framework database contracts. See agent/TENANCY.md for composition and upgrade guidance.
88
+ Cxsun consumes matched development artifacts. This extraction does not publish new registry versions.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- export { createIdentityProvider, IdentityError, identityMigration, identityAdministrationMigration, identityRolesMigration, identityPermissionDeclarationsMigration, identityPermissionLabelsMigration, seedIdentity, } from "./modules/identity/index.js";
1
+ export { createIdentityProvider, IdentityError, identityMigration, identityAdministrationMigration, identityRolesMigration, identityPermissionDeclarationsMigration, identityPermissionLabelsMigration, seedIdentity } from "./modules/identity/index.js";
2
2
  export type { IdentityPermissionDeclaration } from "./modules/identity/index.js";
3
- export { listSchema, userCreateSchema, userUpdateSchema, organizationCreateSchema, organizationUpdateSchema, membershipSchema, roleUpdateSchema, profileSchema, settingsSchema, } from "./modules/identity/index.js";
4
- export type { IdentityListQuery, IdentityResource, } from "./modules/identity/index.js";
5
- export type { IdentitySchema, IdentityConfig, Principal, Portal, IdentityDeliveryProvider, IdentityProviderOptions, IdentityPermissionCatalogEntry, } from "./modules/identity/index.js";
3
+ export { listSchema, userCreateSchema, userUpdateSchema, organizationCreateSchema, organizationUpdateSchema, membershipSchema, roleUpdateSchema, profileSchema, settingsSchema } from "./modules/identity/index.js";
4
+ export type { IdentityListQuery, IdentityResource } from "./modules/identity/index.js";
5
+ export type { IdentitySchema, IdentityConfig, Principal, Portal, IdentityDeliveryProvider, IdentityProviderOptions, IdentityPermissionCatalogEntry } from "./modules/identity/index.js";
6
+ export * from "./modules/tenant/index.js";
7
+ export { createIdentityTenantDirectory, type IdentityTenantDirectory } from "./modules/identity/index.js";
package/dist/index.js CHANGED
@@ -1,2 +1,4 @@
1
- export { createIdentityProvider, IdentityError, identityMigration, identityAdministrationMigration, identityRolesMigration, identityPermissionDeclarationsMigration, identityPermissionLabelsMigration, seedIdentity, } from "./modules/identity/index.js";
2
- export { listSchema, userCreateSchema, userUpdateSchema, organizationCreateSchema, organizationUpdateSchema, membershipSchema, roleUpdateSchema, profileSchema, settingsSchema, } from "./modules/identity/index.js";
1
+ export { createIdentityProvider, IdentityError, identityMigration, identityAdministrationMigration, identityRolesMigration, identityPermissionDeclarationsMigration, identityPermissionLabelsMigration, seedIdentity } from "./modules/identity/index.js";
2
+ export { listSchema, userCreateSchema, userUpdateSchema, organizationCreateSchema, organizationUpdateSchema, membershipSchema, roleUpdateSchema, profileSchema, settingsSchema } from "./modules/identity/index.js";
3
+ export * from "./modules/tenant/index.js";
4
+ export { createIdentityTenantDirectory } from "./modules/identity/index.js";
@@ -0,0 +1,17 @@
1
+ import type { Principal } from "../identity.types.js";
2
+ import type { IdentityListQuery } from "../support/pagination.schema.js";
3
+ import type { createIdentityAuditProvider } from "./audit.provider.js";
4
+ export declare class IdentityAuditController {
5
+ private readonly service;
6
+ constructor(service: ReturnType<typeof createIdentityAuditProvider>);
7
+ index(actor: Principal, query: IdentityListQuery): Promise<{
8
+ data: Record<string, unknown>[];
9
+ meta: {
10
+ page: number;
11
+ perPage: number;
12
+ total: number;
13
+ lastPage: number;
14
+ };
15
+ }>;
16
+ show(actor: Principal, id: string): Promise<Record<string, unknown> | undefined>;
17
+ }
@@ -0,0 +1,12 @@
1
+ export class IdentityAuditController {
2
+ service;
3
+ constructor(service) {
4
+ this.service = service;
5
+ }
6
+ index(actor, query) {
7
+ return this.service.list(actor, query);
8
+ }
9
+ show(actor, id) {
10
+ return this.service.show(actor, id);
11
+ }
12
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ import type { Kysely, Transaction } from "kysely";
2
+ import type { IdentitySchema } from "../identity.types.js";
3
+ export declare function createIdentityAuditProvider(database: Kysely<IdentitySchema>, userTenants: (trx: Transaction<IdentitySchema>, userId: string) => Promise<string[]>, tenantIds: (trx: Transaction<IdentitySchema>) => Promise<string[]>): Readonly<{
4
+ verify: () => Promise<void>;
5
+ list: (actor: import("../identity.types.js").Principal, query: import("../index.js").IdentityListQuery) => Promise<{
6
+ data: Record<string, unknown>[];
7
+ meta: {
8
+ page: number;
9
+ perPage: number;
10
+ total: number;
11
+ lastPage: number;
12
+ };
13
+ }>;
14
+ show: (actor: import("../identity.types.js").Principal, id: string) => Promise<Record<string, unknown> | undefined>;
15
+ mutate: import("../identity.types.js").IdentityMutation;
16
+ record: (trx: Transaction<IdentitySchema>, actor: import("../identity.types.js").Principal, tenantId: string, action: string, resourceId: string) => Promise<void>;
17
+ recordEvent: (db: Kysely<IdentitySchema>, input: {
18
+ appId: string;
19
+ actorId: string;
20
+ tenantId: string;
21
+ action: string;
22
+ resourceId: string;
23
+ }) => Promise<void>;
24
+ }>;
@@ -0,0 +1,14 @@
1
+ import { IdentityAuditRepository } from "./audit.repository.js";
2
+ import { IdentityAuditService } from "./audit.service.js";
3
+ export function createIdentityAuditProvider(database, userTenants, tenantIds) {
4
+ const repository = new IdentityAuditRepository(database);
5
+ const service = new IdentityAuditService(database, repository, userTenants, tenantIds);
6
+ return Object.freeze({
7
+ verify: repository.verifySchema.bind(repository),
8
+ list: service.list.bind(service),
9
+ show: service.show.bind(service),
10
+ mutate: service.mutate,
11
+ record: repository.record.bind(repository),
12
+ recordEvent: repository.recordEvent.bind(repository)
13
+ });
14
+ }
@@ -0,0 +1,26 @@
1
+ import { type Kysely, type Transaction } from "kysely";
2
+ import type { IdentitySchema, Principal } from "../identity.types.js";
3
+ import type { IdentityListQuery } from "../support/pagination.schema.js";
4
+ export declare class IdentityAuditRepository {
5
+ private readonly db;
6
+ constructor(db: Kysely<IdentitySchema>);
7
+ verifySchema(): Promise<void>;
8
+ list(actor: Principal, query: IdentityListQuery): Promise<{
9
+ data: Record<string, unknown>[];
10
+ meta: {
11
+ page: number;
12
+ perPage: number;
13
+ total: number;
14
+ lastPage: number;
15
+ };
16
+ }>;
17
+ show(actor: Principal, id: string): Promise<Record<string, unknown> | undefined>;
18
+ record(trx: Transaction<IdentitySchema>, actor: Principal, tenantId: string, action: string, resourceId: string): Promise<void>;
19
+ recordEvent(db: Kysely<IdentitySchema>, input: {
20
+ appId: string;
21
+ actorId: string;
22
+ tenantId: string;
23
+ action: string;
24
+ resourceId: string;
25
+ }): Promise<void>;
26
+ }
@@ -0,0 +1,46 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { sql } from "kysely";
3
+ import { listRows, showRow } from "../support/pagination.js";
4
+ function auditListSource(actor) {
5
+ return sql `select id,actor_id as actorId,tenant_id as tenantId,action,resource_id as resourceId,created_at as createdAt
6
+ from identity_audit_events where app_id=${actor.appId}
7
+ ${actor.portal === "super-admin" ? sql `` : sql `and tenant_id=${actor.tenant.id}`}`;
8
+ }
9
+ export class IdentityAuditRepository {
10
+ db;
11
+ constructor(db) {
12
+ this.db = db;
13
+ }
14
+ async verifySchema() {
15
+ await this.db.selectFrom("identity_audit_events").select("created_at").limit(1).execute();
16
+ }
17
+ list(actor, query) {
18
+ return listRows(this.db, auditListSource(actor), ["id"], query, (row) => row);
19
+ }
20
+ show(actor, id) {
21
+ return showRow(this.db, auditListSource(actor), id, (row) => row);
22
+ }
23
+ async record(trx, actor, tenantId, action, resourceId) {
24
+ await this.recordEvent(trx, {
25
+ appId: actor.appId,
26
+ actorId: actor.user.id,
27
+ tenantId,
28
+ action,
29
+ resourceId
30
+ });
31
+ }
32
+ async recordEvent(db, input) {
33
+ await db
34
+ .insertInto("identity_audit_events")
35
+ .values({
36
+ id: randomUUID(),
37
+ app_id: input.appId,
38
+ actor_id: input.actorId,
39
+ tenant_id: input.tenantId,
40
+ action: input.action,
41
+ resource_id: input.resourceId,
42
+ created_at: new Date().toISOString()
43
+ })
44
+ .execute();
45
+ }
46
+ }
@@ -0,0 +1,5 @@
1
+ export declare const auditResource: "audit-events";
2
+ export declare const auditResourceRoute: (controller: import("./audit.controller.js").IdentityAuditController) => {
3
+ resource: "audit-events";
4
+ controller: import("./audit.controller.js").IdentityAuditController;
5
+ };
@@ -0,0 +1,2 @@
1
+ export const auditResource = "audit-events";
2
+ export const auditResourceRoute = (controller) => ({ resource: auditResource, controller });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import type { Kysely, Transaction } from "kysely";
2
+ import type { IdentityMutation, IdentitySchema, Principal } from "../identity.types.js";
3
+ import { IdentityAuditRepository } from "./audit.repository.js";
4
+ import type { IdentityListQuery } from "../support/pagination.schema.js";
5
+ export declare class IdentityAuditService {
6
+ private readonly db;
7
+ private readonly repository;
8
+ private readonly userTenants;
9
+ private readonly tenantIds;
10
+ constructor(db: Kysely<IdentitySchema>, repository: IdentityAuditRepository, userTenants: (trx: Transaction<IdentitySchema>, userId: string) => Promise<string[]>, tenantIds: (trx: Transaction<IdentitySchema>) => Promise<string[]>);
11
+ list(actor: Principal, query: IdentityListQuery): Promise<{
12
+ data: Record<string, unknown>[];
13
+ meta: {
14
+ page: number;
15
+ perPage: number;
16
+ total: number;
17
+ lastPage: number;
18
+ };
19
+ }>;
20
+ show(actor: Principal, id: string): Promise<Record<string, unknown> | undefined>;
21
+ private allow;
22
+ readonly mutate: IdentityMutation;
23
+ }
@@ -0,0 +1,46 @@
1
+ import { checkIdentityRequest } from "../support/identity.request-context.js";
2
+ import { IdentityError } from "../support/identity.error.js";
3
+ export class IdentityAuditService {
4
+ db;
5
+ repository;
6
+ userTenants;
7
+ tenantIds;
8
+ constructor(db, repository, userTenants, tenantIds) {
9
+ this.db = db;
10
+ this.repository = repository;
11
+ this.userTenants = userTenants;
12
+ this.tenantIds = tenantIds;
13
+ }
14
+ list(actor, query) {
15
+ this.allow(actor);
16
+ return this.repository.list(actor, query);
17
+ }
18
+ show(actor, id) {
19
+ this.allow(actor);
20
+ return this.repository.show(actor, id);
21
+ }
22
+ allow(actor) {
23
+ if (actor.portal === "user" || !actor.permissions.includes("identity.manage"))
24
+ throw new IdentityError(403, "Access denied.");
25
+ }
26
+ mutate = async (actor, resource, id, action, affectedTenant) => this.db.transaction().execute(async (trx) => {
27
+ checkIdentityRequest();
28
+ const result = await action(trx, id);
29
+ checkIdentityRequest();
30
+ const targetTenant = affectedTenant ??
31
+ (resource === "organizations"
32
+ ? id
33
+ : resource === "memberships"
34
+ ? id.split("~")[1]
35
+ : actor.tenant.id);
36
+ let targets = [targetTenant];
37
+ if (!affectedTenant && ["users", "profile"].includes(resource))
38
+ targets = await this.userTenants(trx, id);
39
+ if (["roles", "application-settings", "security-settings"].includes(resource))
40
+ targets = await this.tenantIds(trx);
41
+ for (const tenant of new Set(targets))
42
+ await this.repository.record(trx, actor, tenant, `identity.${resource}.changed`, id);
43
+ checkIdentityRequest();
44
+ return result;
45
+ });
46
+ }
@@ -0,0 +1,12 @@
1
+ export interface IdentityAuditTables {
2
+ identity_audit_events: {
3
+ id: string;
4
+ app_id: string;
5
+ actor_id: string;
6
+ tenant_id: string;
7
+ action: string;
8
+ resource_id: string;
9
+ created_at: string;
10
+ };
11
+ }
12
+ export type IdentityAuditRow = IdentityAuditTables["identity_audit_events"];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export { createIdentityAuditProvider } from "./audit.provider.js";
2
+ export { auditResource, auditResourceRoute } from "./audit.routes.js";
3
+ export type { IdentityAuditRow } from "./audit.types.js";
4
+ export { IdentityAuditController } from "./audit.controller.js";
@@ -0,0 +1,3 @@
1
+ export { createIdentityAuditProvider } from "./audit.provider.js";
2
+ export { auditResource, auditResourceRoute } from "./audit.routes.js";
3
+ export { IdentityAuditController } from "./audit.controller.js";
@@ -1,13 +1,25 @@
1
- import { type Kysely } from "kysely";
2
- import type { IdentitySchema, Principal } from "./identity.types.js";
3
- import { type IdentityListQuery, type IdentityResource } from "./identity.administration-schema.js";
4
- export declare class IdentityAdministrationService {
5
- private readonly db;
6
- private readonly appName;
7
- private readonly repository;
1
+ import type { Kysely } from "kysely";
2
+ import type { IdentitySchema, Principal } from "../identity.types.js";
3
+ import type { IdentityListQuery, IdentityResource } from "../support/pagination.schema.js";
4
+ import { type IdentityPermissionProvider } from "../permission/index.js";
5
+ import { IdentityUserController } from "../user/index.js";
6
+ import { IdentitySettingsController } from "../settings/index.js";
7
+ import type { IdentityResourceRoute } from "../support/resource-controller.js";
8
+ import type { IdentityUserOwnership } from "../user/index.js";
9
+ export declare class IdentityAdministrationComposition {
10
+ private readonly audit;
11
+ private readonly session;
12
+ private readonly organization;
13
+ private readonly settingsProvider;
8
14
  private readonly roles;
9
- private readonly presentationService;
10
- constructor(db: Kysely<IdentitySchema>, appName: string);
15
+ private readonly userRoles;
16
+ private readonly users;
17
+ private readonly permissions;
18
+ readonly userController: IdentityUserController;
19
+ readonly settingsController: IdentitySettingsController;
20
+ readonly routes: readonly IdentityResourceRoute[];
21
+ userOwnership(): IdentityUserOwnership;
22
+ constructor(database: Kysely<IdentitySchema>, appName: string, permissions: IdentityPermissionProvider);
11
23
  list(actor: Principal, resource: IdentityResource, query: IdentityListQuery): Promise<{
12
24
  data: Record<string, unknown>[];
13
25
  meta: {
@@ -16,28 +28,58 @@ export declare class IdentityAdministrationService {
16
28
  total: number;
17
29
  lastPage: number;
18
30
  };
31
+ } | {
32
+ data: {
33
+ portals: string[];
34
+ }[];
35
+ meta: {
36
+ page: number;
37
+ perPage: number;
38
+ total: number;
39
+ lastPage: number;
40
+ };
41
+ } | {
42
+ data: {
43
+ active: boolean;
44
+ version: number;
45
+ }[];
46
+ meta: {
47
+ page: number;
48
+ perPage: number;
49
+ total: number;
50
+ lastPage: number;
51
+ };
19
52
  }>;
20
- show(actor: Principal, resource: IdentityResource, id: string): Promise<Record<string, unknown>>;
21
- create(actor: Principal, resource: IdentityResource, raw: unknown): Promise<{
22
- id: string;
23
- name: string;
53
+ show(actor: Principal, resource: IdentityResource, id: string): Promise<Record<string, unknown> | {
54
+ portals: string[];
55
+ } | {
24
56
  active: boolean;
25
57
  version: number;
26
- } | {
58
+ }>;
59
+ create(actor: Principal, resource: IdentityResource, raw: unknown): Promise<{
27
60
  id: string;
28
61
  userId: string;
29
62
  tenantId: string;
30
63
  roleId: string;
31
- portal: import("./identity.types.js").Portal;
64
+ portal: import("../identity.types.js").Portal;
65
+ active: boolean;
66
+ version: number;
67
+ } | {
68
+ id: string;
69
+ name: string;
32
70
  active: boolean;
33
71
  version: number;
34
72
  }>;
35
73
  update(actor: Principal, resource: IdentityResource, id: string, raw: unknown): Promise<{
74
+ id: string;
75
+ permissionIds: string[];
76
+ version: number;
77
+ } | {
36
78
  id: string;
37
79
  userId: string;
38
80
  tenantId: string;
39
81
  roleId: string;
40
- portal: import("./identity.types.js").Portal;
82
+ portal: import("../identity.types.js").Portal;
41
83
  active: boolean;
42
84
  version: number;
43
85
  } | {
@@ -45,10 +87,6 @@ export declare class IdentityAdministrationService {
45
87
  version: number;
46
88
  id: string;
47
89
  name: string;
48
- } | {
49
- id: string;
50
- permissionIds: string[];
51
- version: number;
52
90
  }>;
53
91
  remove(actor: Principal, resource: IdentityResource, id: string, expectedVersion?: number): Promise<void>;
54
92
  profile(actor: Principal, raw?: unknown): Promise<{
@@ -77,7 +115,6 @@ export declare class IdentityAdministrationService {
77
115
  timeZone: string;
78
116
  version: number;
79
117
  }>;
80
- private revision;
81
118
  presentation(actor: Principal): Promise<{
82
119
  displayName: string;
83
120
  organizationDisplayName: string;
@@ -88,10 +125,5 @@ export declare class IdentityAdministrationService {
88
125
  displayName: string;
89
126
  requiresOrganizationId: boolean;
90
127
  }>;
91
- private allow;
92
- private tenant;
93
- private assignableRole;
94
- private activeTenant;
95
- private unprivilegedUser;
96
- private mutate;
128
+ verify(): Promise<void>;
97
129
  }
@@ -0,0 +1,171 @@
1
+ import { IdentityError } from "../support/identity.error.js";
2
+ import { createIdentityAuditProvider, auditResourceRoute } from "../audit/index.js";
3
+ import { createIdentitySessionProvider, sessionResourceRoute } from "../session/index.js";
4
+ import { createIdentityOrganizationProvider, organizationResourceRoute } from "../organization/index.js";
5
+ import { createIdentitySettingsProvider } from "../settings/index.js";
6
+ import { createIdentityRoleProvider, roleResourceRoute } from "../role/index.js";
7
+ import { createIdentityUserRoleProvider, userRoleResourceRoute } from "../user-role/index.js";
8
+ import { activeUserIds, createIdentityUserAdministrationProvider, userNameSource, userResourceRoute } from "../user/index.js";
9
+ import { permissionResourceRoute } from "../permission/index.js";
10
+ import { IdentityUserController } from "../user/index.js";
11
+ import { IdentityOrganizationController } from "../organization/index.js";
12
+ import { IdentityUserRoleController } from "../user-role/index.js";
13
+ import { IdentityRoleController } from "../role/index.js";
14
+ import { IdentityPermissionController } from "../permission/index.js";
15
+ import { IdentitySessionController } from "../session/index.js";
16
+ import { IdentityAuditController } from "../audit/index.js";
17
+ import { IdentitySettingsController } from "../settings/index.js";
18
+ export class IdentityAdministrationComposition {
19
+ audit;
20
+ session;
21
+ organization;
22
+ settingsProvider;
23
+ roles;
24
+ userRoles;
25
+ users;
26
+ permissions;
27
+ userController;
28
+ settingsController;
29
+ routes;
30
+ userOwnership() {
31
+ return {
32
+ activeOrganization: this.organization.active,
33
+ assignInvitedMembership: this.userRoles.assignInvitedMembership,
34
+ revokeUserSessions: this.session.revokeUser,
35
+ recordEvent: this.audit.recordEvent,
36
+ sessionSeconds: this.settingsProvider.sessionSeconds,
37
+ activeSession: this.session.active,
38
+ createSession: this.session.create,
39
+ revokeSession: this.session.revoke,
40
+ throttle: this.session.throttle,
41
+ clearThrottle: this.session.clearThrottle,
42
+ activeMembership: this.userRoles.activeMembership,
43
+ activeOrganizationDetail: this.organization.activeDetail,
44
+ permissionIds: this.roles.permissionIds
45
+ };
46
+ }
47
+ constructor(database, appName, permissions) {
48
+ this.permissions = permissions;
49
+ this.audit = createIdentityAuditProvider(database, (trx, userId) => this.userRoles.tenantIdsForUser(trx, userId), (trx) => this.organization.tenantIds(trx));
50
+ this.session = createIdentitySessionProvider(database, this.audit.mutate);
51
+ this.organization = createIdentityOrganizationProvider(database, this.audit.mutate, this.session.revokeTenant);
52
+ this.settingsProvider = createIdentitySettingsProvider(database, appName, this.audit.mutate, this.session.revokeApp);
53
+ this.roles = createIdentityRoleProvider(database, permissions, this.audit.mutate, this.audit.record, this.organization.active, async (trx, appId, tenantId, roleId) => {
54
+ const userIds = await this.userRoles.userIdsForCustomRole(trx, roleId);
55
+ await this.session.revokeRoleMembers(trx, appId, tenantId, userIds);
56
+ });
57
+ this.userRoles = createIdentityUserRoleProvider(database, {
58
+ users: userNameSource,
59
+ organizations: this.organization.nameSource,
60
+ roles: this.roles.customRoleNameSource,
61
+ customRoleIds: this.roles.customRoleIdsSource
62
+ }, activeUserIds, this.roles.resolve, this.roles.customRoleInApp, this.audit.mutate, async (actor, userId) => {
63
+ if (!(await this.users.show(actor, userId)))
64
+ throw new IdentityError(404, "Resource not found.");
65
+ }, this.organization.active, this.audit.record, this.session.revokeMembership);
66
+ this.users = createIdentityUserAdministrationProvider(database, (actor, userId) => this.userRoles.userVisibility(actor, this.roles.customRoleIdsSource, userId), this.roles.resolve, this.userRoles, this.audit.mutate, this.organization.active, this.session.revokeUser);
67
+ this.userController = new IdentityUserController(this.users);
68
+ this.settingsController = new IdentitySettingsController(this.settingsProvider);
69
+ this.routes = [
70
+ userResourceRoute(this.userController),
71
+ organizationResourceRoute(new IdentityOrganizationController(this.organization)),
72
+ userRoleResourceRoute(new IdentityUserRoleController(this.userRoles)),
73
+ roleResourceRoute(new IdentityRoleController(this.roles)),
74
+ permissionResourceRoute(new IdentityPermissionController(this.permissions)),
75
+ sessionResourceRoute(new IdentitySessionController(this.session)),
76
+ auditResourceRoute(new IdentityAuditController(this.audit))
77
+ ];
78
+ }
79
+ async list(actor, resource, query) {
80
+ if (resource === "users")
81
+ return this.users.list(actor, query);
82
+ if (resource === "organizations")
83
+ return this.organization.list(actor, query);
84
+ if (resource === "memberships")
85
+ return this.userRoles.list(actor, query);
86
+ if (resource === "roles")
87
+ return this.roles.list(actor, query);
88
+ if (resource === "permissions")
89
+ return this.permissions.list(actor, query);
90
+ if (resource === "sessions")
91
+ return this.session.list(actor, query);
92
+ return this.audit.list(actor, query);
93
+ }
94
+ async show(actor, resource, id) {
95
+ const row = resource === "users"
96
+ ? await this.users.show(actor, id)
97
+ : resource === "organizations"
98
+ ? await this.organization.show(actor, id)
99
+ : resource === "memberships"
100
+ ? await this.userRoles.show(actor, id)
101
+ : resource === "roles"
102
+ ? await this.roles.show(actor, id)
103
+ : resource === "permissions"
104
+ ? await this.permissions.show(actor, id)
105
+ : resource === "sessions"
106
+ ? await this.session.show(actor, id)
107
+ : await this.audit.show(actor, id);
108
+ if (!row)
109
+ throw new IdentityError(404, "Resource not found.");
110
+ return row;
111
+ }
112
+ async create(actor, resource, raw) {
113
+ if (resource === "roles")
114
+ return this.roles.create(actor, raw);
115
+ if (resource === "users")
116
+ return this.users.create(actor, raw);
117
+ if (resource === "organizations")
118
+ return this.organization.create(actor, raw);
119
+ if (resource === "memberships")
120
+ return this.userRoles.createMembership(actor, raw);
121
+ throw new IdentityError(405, "Creation is not supported for this resource.");
122
+ }
123
+ async update(actor, resource, id, raw) {
124
+ if (resource === "memberships")
125
+ return this.userRoles.updateMembership(actor, id, raw);
126
+ if (resource === "roles" && !["user", "admin", "super-admin"].includes(id))
127
+ return this.roles.update(actor, id, raw);
128
+ if (resource === "roles") {
129
+ await this.show(actor, resource, id);
130
+ return this.roles.updateSystemPermissions(actor, id, raw);
131
+ }
132
+ if (resource === "users")
133
+ return this.users.update(actor, id, raw);
134
+ if (resource === "organizations")
135
+ return this.organization.update(actor, id, raw);
136
+ throw new IdentityError(405, "Update is not supported for this resource.");
137
+ }
138
+ async remove(actor, resource, id, expectedVersion) {
139
+ if (resource === "memberships")
140
+ return this.userRoles.removeMembership(actor, id, expectedVersion);
141
+ if (resource === "sessions") {
142
+ await this.session.remove(actor, id);
143
+ return;
144
+ }
145
+ await this.show(actor, resource, id);
146
+ throw new IdentityError(405, "Deletion is not supported for this resource.");
147
+ }
148
+ profile(actor, raw) {
149
+ return this.users.profile(actor, raw);
150
+ }
151
+ settings(actor, raw) {
152
+ return this.settingsProvider.organizationSettings(actor, raw);
153
+ }
154
+ applicationSettings(actor, security, raw, fallbackSeconds) {
155
+ return this.settingsProvider.applicationSettings(actor, security, raw, fallbackSeconds);
156
+ }
157
+ presentation(actor) {
158
+ return this.settingsProvider.presentation(actor);
159
+ }
160
+ configuration(appId, requiresOrganizationId) {
161
+ return this.settingsProvider.configuration(appId, requiresOrganizationId);
162
+ }
163
+ async verify() {
164
+ await this.audit.verify();
165
+ await this.session.verify();
166
+ await this.organization.verify();
167
+ await this.settingsProvider.verify();
168
+ await this.roles.verify();
169
+ await this.userRoles.verify();
170
+ }
171
+ }
@@ -0,0 +1,3 @@
1
+ import type { Kysely } from "kysely";
2
+ import type { IdentitySchema } from "../identity.types.js";
3
+ export declare function seedIdentity(db: Kysely<IdentitySchema>, env: NodeJS.ProcessEnv): Promise<void>;
@@ -0,0 +1,16 @@
1
+ import { seedOrganization } from "../organization/index.js";
2
+ import { seedRoles } from "../role/index.js";
3
+ import { seedPermissions } from "../permission/index.js";
4
+ import { seedRolePermissions } from "../role-permission/index.js";
5
+ import { seedAccounts, seedUsers } from "../user/index.js";
6
+ import { seedMemberships } from "../user-role/index.js";
7
+ export async function seedIdentity(db, env) {
8
+ const accounts = seedAccounts(env);
9
+ await db.transaction().execute(async (trx) => {
10
+ await seedOrganization(trx, env);
11
+ await seedRoles(trx);
12
+ await seedPermissions(trx);
13
+ await seedRolePermissions(trx);
14
+ await seedMemberships(trx, await seedUsers(trx, accounts));
15
+ });
16
+ }