@authup/server-core 1.0.0-beta.50 → 1.0.0-beta.52

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 (656) hide show
  1. package/dist/adapters/database/data-source/options/module.d.ts.map +1 -1
  2. package/dist/adapters/database/data-source/options/module.mjs +2 -0
  3. package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
  4. package/dist/adapters/database/domains/client/entity.d.ts +1 -0
  5. package/dist/adapters/database/domains/client/entity.d.ts.map +1 -1
  6. package/dist/adapters/database/domains/client/entity.mjs +5 -0
  7. package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
  8. package/dist/adapters/database/domains/client-permission/entity.d.ts +2 -1
  9. package/dist/adapters/database/domains/client-permission/entity.d.ts.map +1 -1
  10. package/dist/adapters/database/domains/client-permission/entity.mjs +6 -0
  11. package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
  12. package/dist/adapters/database/domains/index.d.ts +1 -0
  13. package/dist/adapters/database/domains/index.d.ts.map +1 -1
  14. package/dist/adapters/database/domains/index.mjs +3 -1
  15. package/dist/adapters/database/domains/robot-permission/entity.d.ts +2 -1
  16. package/dist/adapters/database/domains/robot-permission/entity.d.ts.map +1 -1
  17. package/dist/adapters/database/domains/robot-permission/entity.mjs +6 -0
  18. package/dist/adapters/database/domains/robot-permission/entity.mjs.map +1 -1
  19. package/dist/adapters/database/domains/robot-role/entity.mjs +1 -1
  20. package/dist/adapters/database/domains/robot-role/entity.mjs.map +1 -1
  21. package/dist/adapters/database/domains/role-permission/entity.d.ts +2 -1
  22. package/dist/adapters/database/domains/role-permission/entity.d.ts.map +1 -1
  23. package/dist/adapters/database/domains/role-permission/entity.mjs +6 -0
  24. package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
  25. package/dist/adapters/database/domains/session/entity.mjs +1 -1
  26. package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
  27. package/dist/adapters/database/domains/session-token/entity.d.ts +17 -0
  28. package/dist/adapters/database/domains/session-token/entity.d.ts.map +1 -0
  29. package/dist/adapters/database/domains/session-token/entity.mjs +95 -0
  30. package/dist/adapters/database/domains/session-token/entity.mjs.map +1 -0
  31. package/dist/adapters/database/domains/session-token/index.d.ts +2 -0
  32. package/dist/adapters/database/domains/session-token/index.d.ts.map +1 -0
  33. package/dist/adapters/database/domains/session-token/index.mjs +5 -0
  34. package/dist/adapters/database/domains/user-permission/entity.d.ts +2 -1
  35. package/dist/adapters/database/domains/user-permission/entity.d.ts.map +1 -1
  36. package/dist/adapters/database/domains/user-permission/entity.mjs +6 -0
  37. package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
  38. package/dist/adapters/database/index.mjs +2 -1
  39. package/dist/adapters/database/migrations/mysql/1779300000000-Default.d.ts +7 -0
  40. package/dist/adapters/database/migrations/mysql/1779300000000-Default.d.ts.map +1 -0
  41. package/dist/adapters/database/migrations/mysql/1779300000000-Default.mjs +85 -0
  42. package/dist/adapters/database/migrations/mysql/1779300000000-Default.mjs.map +1 -0
  43. package/dist/adapters/database/migrations/mysql/1783325495597-Default.d.ts +28 -0
  44. package/dist/adapters/database/migrations/mysql/1783325495597-Default.d.ts.map +1 -0
  45. package/dist/adapters/database/migrations/mysql/1783325495597-Default.mjs +85 -0
  46. package/dist/adapters/database/migrations/mysql/1783325495597-Default.mjs.map +1 -0
  47. package/dist/adapters/database/migrations/postgres/1779300000000-Default.d.ts +7 -0
  48. package/dist/adapters/database/migrations/postgres/1779300000000-Default.d.ts.map +1 -0
  49. package/dist/adapters/database/migrations/postgres/1779300000000-Default.mjs +87 -0
  50. package/dist/adapters/database/migrations/postgres/1779300000000-Default.mjs.map +1 -0
  51. package/dist/adapters/database/migrations/postgres/1783325495597-Default.d.ts +28 -0
  52. package/dist/adapters/database/migrations/postgres/1783325495597-Default.d.ts.map +1 -0
  53. package/dist/adapters/database/migrations/postgres/1783325495597-Default.mjs +79 -0
  54. package/dist/adapters/database/migrations/postgres/1783325495597-Default.mjs.map +1 -0
  55. package/dist/adapters/database/subscriber/module.d.ts.map +1 -1
  56. package/dist/adapters/database/subscriber/module.mjs +4 -3
  57. package/dist/adapters/database/subscriber/module.mjs.map +1 -1
  58. package/dist/adapters/http/adapters/index.mjs +3 -2
  59. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +2 -1
  60. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  61. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts +2 -1
  62. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts.map +1 -1
  63. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +10 -4
  64. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
  65. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts.map +1 -1
  66. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +3 -0
  67. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
  68. package/dist/adapters/http/adapters/oauth2/grant-types/index.mjs +3 -2
  69. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts +2 -1
  70. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts.map +1 -1
  71. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +14 -4
  72. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  73. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts +2 -1
  74. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts.map +1 -1
  75. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +12 -5
  76. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
  77. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +4 -1
  78. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
  79. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts +1 -0
  80. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts.map +1 -1
  81. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +2 -2
  82. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs.map +1 -1
  83. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +1 -1
  84. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.d.ts +1 -0
  85. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.d.ts.map +1 -1
  86. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.mjs +3 -2
  87. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.d.ts +9 -0
  88. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.d.ts.map +1 -0
  89. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.mjs +21 -0
  90. package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.mjs.map +1 -0
  91. package/dist/adapters/http/adapters/oauth2/index.mjs +3 -2
  92. package/dist/adapters/http/controllers/entities/client/module.mjs +2 -2
  93. package/dist/adapters/http/controllers/entities/client-permission/module.mjs +1 -1
  94. package/dist/adapters/http/controllers/entities/client-role/module.mjs +1 -1
  95. package/dist/adapters/http/controllers/entities/client-scope/module.mjs +1 -1
  96. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +1 -1
  97. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  98. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +28 -12
  99. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  100. package/dist/adapters/http/controllers/entities/index.d.ts +1 -0
  101. package/dist/adapters/http/controllers/entities/index.d.ts.map +1 -1
  102. package/dist/adapters/http/controllers/entities/index.mjs +3 -1
  103. package/dist/adapters/http/controllers/entities/permission/module.mjs +1 -1
  104. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +1 -1
  105. package/dist/adapters/http/controllers/entities/policy/module.mjs +1 -1
  106. package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
  107. package/dist/adapters/http/controllers/entities/realm/module.mjs +11 -8
  108. package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
  109. package/dist/adapters/http/controllers/entities/robot/module.mjs +2 -2
  110. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs +1 -1
  111. package/dist/adapters/http/controllers/entities/robot-role/module.mjs +1 -1
  112. package/dist/adapters/http/controllers/entities/role/module.mjs +1 -1
  113. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +1 -1
  114. package/dist/adapters/http/controllers/entities/role-permission/module.mjs +1 -1
  115. package/dist/adapters/http/controllers/entities/scope/module.mjs +1 -1
  116. package/dist/adapters/http/controllers/entities/session/index.d.ts +2 -0
  117. package/dist/adapters/http/controllers/entities/session/index.d.ts.map +1 -0
  118. package/dist/adapters/http/controllers/entities/session/index.mjs +5 -0
  119. package/dist/adapters/http/controllers/entities/session/module.d.ts +16 -0
  120. package/dist/adapters/http/controllers/entities/session/module.d.ts.map +1 -0
  121. package/dist/adapters/http/controllers/entities/session/module.mjs +102 -0
  122. package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -0
  123. package/dist/adapters/http/controllers/entities/user/module.mjs +2 -2
  124. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +1 -1
  125. package/dist/adapters/http/controllers/entities/user-permission/module.mjs +1 -1
  126. package/dist/adapters/http/controllers/entities/user-role/module.mjs +1 -1
  127. package/dist/adapters/http/controllers/index.mjs +3 -1
  128. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  129. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +22 -9
  130. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  131. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts +7 -4
  132. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts.map +1 -1
  133. package/dist/adapters/http/controllers/workflows/index.d.ts +1 -0
  134. package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
  135. package/dist/adapters/http/controllers/workflows/index.mjs +3 -1
  136. package/dist/adapters/http/controllers/workflows/logout/index.d.ts +3 -0
  137. package/dist/adapters/http/controllers/workflows/logout/index.d.ts.map +1 -0
  138. package/dist/adapters/http/controllers/workflows/logout/index.mjs +5 -0
  139. package/dist/adapters/http/controllers/workflows/logout/module.d.ts +14 -0
  140. package/dist/adapters/http/controllers/workflows/logout/module.d.ts.map +1 -0
  141. package/dist/adapters/http/controllers/workflows/logout/module.mjs +101 -0
  142. package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -0
  143. package/dist/adapters/http/controllers/workflows/logout/types.d.ts +9 -0
  144. package/dist/adapters/http/controllers/workflows/logout/types.d.ts.map +1 -0
  145. package/dist/adapters/http/controllers/workflows/logout/types.mjs +4 -0
  146. package/dist/adapters/http/controllers/workflows/status/module.mjs +1 -1
  147. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  148. package/dist/adapters/http/controllers/workflows/token/module.mjs +12 -4
  149. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  150. package/dist/adapters/http/controllers/workflows/token/types.d.ts +9 -1
  151. package/dist/adapters/http/controllers/workflows/token/types.d.ts.map +1 -1
  152. package/dist/adapters/http/index.mjs +17 -13
  153. package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
  154. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +2 -0
  155. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  156. package/dist/adapters/http/middleware/built-in/index.mjs +2 -2
  157. package/dist/adapters/http/middleware/built-in/logger.d.ts +1 -0
  158. package/dist/adapters/http/middleware/built-in/logger.d.ts.map +1 -1
  159. package/dist/adapters/http/middleware/built-in/logger.mjs +23 -2
  160. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  161. package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
  162. package/dist/adapters/http/middleware/built-in/prometheus.mjs +1 -1
  163. package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
  164. package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts.map +1 -1
  165. package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs +3 -8
  166. package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs.map +1 -1
  167. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts +2 -2
  168. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs +2 -2
  169. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs.map +1 -1
  170. package/dist/adapters/http/middleware/index.mjs +2 -2
  171. package/dist/adapters/http/request/helpers/identity.d.ts +0 -1
  172. package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
  173. package/dist/adapters/http/request/helpers/identity.mjs +2 -5
  174. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  175. package/dist/adapters/http/request/helpers/index.d.ts +1 -0
  176. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  177. package/dist/adapters/http/request/helpers/index.mjs +3 -2
  178. package/dist/adapters/http/request/helpers/session-id.d.ts +9 -0
  179. package/dist/adapters/http/request/helpers/session-id.d.ts.map +1 -0
  180. package/dist/adapters/http/request/helpers/session-id.mjs +19 -0
  181. package/dist/adapters/http/request/helpers/session-id.mjs.map +1 -0
  182. package/dist/adapters/http/request/index.mjs +3 -2
  183. package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
  184. package/dist/adapters/http/request/permission/module.mjs +5 -3
  185. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  186. package/dist/adapters/http/ui/index.d.ts +1 -0
  187. package/dist/adapters/http/ui/index.d.ts.map +1 -1
  188. package/dist/adapters/http/ui/index.mjs +2 -1
  189. package/dist/adapters/http/ui/internal-http-client.d.ts +22 -0
  190. package/dist/adapters/http/ui/internal-http-client.d.ts.map +1 -0
  191. package/dist/adapters/http/ui/internal-http-client.mjs +52 -0
  192. package/dist/adapters/http/ui/internal-http-client.mjs.map +1 -0
  193. package/dist/adapters/http/ui/render.d.ts.map +1 -1
  194. package/dist/adapters/http/ui/render.mjs +5 -2
  195. package/dist/adapters/http/ui/render.mjs.map +1 -1
  196. package/dist/adapters/http/ui/types.d.ts +12 -0
  197. package/dist/adapters/http/ui/types.d.ts.map +1 -1
  198. package/dist/app/modules/authentication/repositories/session.d.ts +5 -2
  199. package/dist/app/modules/authentication/repositories/session.d.ts.map +1 -1
  200. package/dist/app/modules/authentication/repositories/session.mjs +63 -0
  201. package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
  202. package/dist/app/modules/config/constants.d.ts +4 -0
  203. package/dist/app/modules/config/constants.d.ts.map +1 -1
  204. package/dist/app/modules/config/constants.mjs +4 -0
  205. package/dist/app/modules/config/constants.mjs.map +1 -1
  206. package/dist/app/modules/config/normalize.d.ts.map +1 -1
  207. package/dist/app/modules/config/normalize.mjs +6 -1
  208. package/dist/app/modules/config/normalize.mjs.map +1 -1
  209. package/dist/app/modules/config/read/env.d.ts.map +1 -1
  210. package/dist/app/modules/config/read/env.mjs +8 -0
  211. package/dist/app/modules/config/read/env.mjs.map +1 -1
  212. package/dist/app/modules/config/types.d.ts +31 -2
  213. package/dist/app/modules/config/types.d.ts.map +1 -1
  214. package/dist/app/modules/config/validator.d.ts.map +1 -1
  215. package/dist/app/modules/config/validator.mjs +5 -0
  216. package/dist/app/modules/config/validator.mjs.map +1 -1
  217. package/dist/app/modules/database/module.d.ts +1 -0
  218. package/dist/app/modules/database/module.d.ts.map +1 -1
  219. package/dist/app/modules/database/module.mjs +19 -6
  220. package/dist/app/modules/database/module.mjs.map +1 -1
  221. package/dist/app/modules/database/repositories/bindings.d.ts +2 -0
  222. package/dist/app/modules/database/repositories/bindings.d.ts.map +1 -1
  223. package/dist/app/modules/database/repositories/bindings.mjs +3 -1
  224. package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
  225. package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
  226. package/dist/app/modules/database/repositories/client/repository.mjs +10 -6
  227. package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
  228. package/dist/app/modules/database/repositories/helpers.d.ts +11 -0
  229. package/dist/app/modules/database/repositories/helpers.d.ts.map +1 -1
  230. package/dist/app/modules/database/repositories/helpers.mjs +12 -1
  231. package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
  232. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
  233. package/dist/app/modules/database/repositories/identity-provider/repository.mjs +7 -5
  234. package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
  235. package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
  236. package/dist/app/modules/database/repositories/permission/repository.mjs +4 -3
  237. package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
  238. package/dist/app/modules/database/repositories/permission-provider/module.d.ts +2 -2
  239. package/dist/app/modules/database/repositories/permission-provider/module.d.ts.map +1 -1
  240. package/dist/app/modules/database/repositories/permission-provider/module.mjs +4 -3
  241. package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
  242. package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
  243. package/dist/app/modules/database/repositories/policy/repository.mjs +4 -3
  244. package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
  245. package/dist/app/modules/database/repositories/realm/repository.d.ts +1 -0
  246. package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
  247. package/dist/app/modules/database/repositories/realm/repository.mjs +20 -3
  248. package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
  249. package/dist/app/modules/database/repositories/robot/repository.d.ts.map +1 -1
  250. package/dist/app/modules/database/repositories/robot/repository.mjs +8 -6
  251. package/dist/app/modules/database/repositories/robot/repository.mjs.map +1 -1
  252. package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
  253. package/dist/app/modules/database/repositories/role/repository.mjs +4 -3
  254. package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
  255. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
  256. package/dist/app/modules/database/repositories/role-attribute/repository.mjs +2 -1
  257. package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
  258. package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
  259. package/dist/app/modules/database/repositories/scope/repository.mjs +4 -3
  260. package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
  261. package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
  262. package/dist/app/modules/database/repositories/user/repository.mjs +8 -5
  263. package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
  264. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
  265. package/dist/app/modules/database/repositories/user-attribute/repository.mjs +2 -1
  266. package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
  267. package/dist/app/modules/http/constants.d.ts +4 -2
  268. package/dist/app/modules/http/constants.d.ts.map +1 -1
  269. package/dist/app/modules/http/constants.mjs +4 -2
  270. package/dist/app/modules/http/constants.mjs.map +1 -1
  271. package/dist/app/modules/http/module.d.ts +10 -0
  272. package/dist/app/modules/http/module.d.ts.map +1 -1
  273. package/dist/app/modules/http/module.mjs +30 -0
  274. package/dist/app/modules/http/module.mjs.map +1 -1
  275. package/dist/app/modules/http/modules/controller.d.ts +6 -2
  276. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  277. package/dist/app/modules/http/modules/controller.mjs +75 -15
  278. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  279. package/dist/app/modules/http/modules/middleware.mjs +1 -1
  280. package/dist/app/modules/identity/repositories/client.mjs +2 -2
  281. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  282. package/dist/app/modules/identity/repositories/robot.mjs +2 -2
  283. package/dist/app/modules/identity/repositories/robot.mjs.map +1 -1
  284. package/dist/app/modules/identity/repositories/user.mjs +2 -2
  285. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  286. package/dist/app/modules/oauth2/constants.d.ts +2 -1
  287. package/dist/app/modules/oauth2/constants.d.ts.map +1 -1
  288. package/dist/app/modules/oauth2/constants.mjs +1 -0
  289. package/dist/app/modules/oauth2/constants.mjs.map +1 -1
  290. package/dist/app/modules/oauth2/module.d.ts.map +1 -1
  291. package/dist/app/modules/oauth2/module.mjs +10 -4
  292. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  293. package/dist/app/modules/oauth2/repositories/client/repository.mjs +2 -2
  294. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  295. package/dist/app/modules/oauth2/repositories/index.d.ts +1 -0
  296. package/dist/app/modules/oauth2/repositories/index.d.ts.map +1 -1
  297. package/dist/app/modules/oauth2/repositories/index.mjs +3 -1
  298. package/dist/app/modules/oauth2/repositories/session-token/index.d.ts +2 -0
  299. package/dist/app/modules/oauth2/repositories/session-token/index.d.ts.map +1 -0
  300. package/dist/app/modules/oauth2/repositories/session-token/index.mjs +5 -0
  301. package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts +17 -0
  302. package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts.map +1 -0
  303. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +63 -0
  304. package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -0
  305. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  306. package/dist/app/modules/provisioning/module.mjs +0 -1
  307. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  308. package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
  309. package/dist/app/modules/provisioning/sources/default/module.mjs +15 -56
  310. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  311. package/dist/app/modules/provisioning/sources/file/module.d.ts.map +1 -1
  312. package/dist/app/modules/provisioning/sources/file/module.mjs +2 -1
  313. package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
  314. package/dist/cli/commands/migration.d.ts.map +1 -1
  315. package/dist/cli/commands/migration.mjs +12 -4
  316. package/dist/cli/commands/migration.mjs.map +1 -1
  317. package/dist/components/oauth2-cleaner/module.d.ts.map +1 -1
  318. package/dist/components/oauth2-cleaner/module.mjs +3 -0
  319. package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
  320. package/dist/core/authentication/index.mjs +2 -1
  321. package/dist/core/authentication/session/index.mjs +2 -1
  322. package/dist/core/authentication/session/module.d.ts +1 -0
  323. package/dist/core/authentication/session/module.d.ts.map +1 -1
  324. package/dist/core/authentication/session/module.mjs +3 -0
  325. package/dist/core/authentication/session/module.mjs.map +1 -1
  326. package/dist/core/authentication/session/types.d.ts +34 -0
  327. package/dist/core/authentication/session/types.d.ts.map +1 -1
  328. package/dist/core/authentication/session/types.mjs +18 -1
  329. package/dist/core/authentication/session/types.mjs.map +1 -0
  330. package/dist/core/entities/client/service.mjs +25 -7
  331. package/dist/core/entities/client/service.mjs.map +1 -1
  332. package/dist/core/entities/client/web-client.d.ts +5 -3
  333. package/dist/core/entities/client/web-client.d.ts.map +1 -1
  334. package/dist/core/entities/client/web-client.mjs +8 -4
  335. package/dist/core/entities/client/web-client.mjs.map +1 -1
  336. package/dist/core/entities/client-permission/service.d.ts +7 -4
  337. package/dist/core/entities/client-permission/service.d.ts.map +1 -1
  338. package/dist/core/entities/client-permission/service.mjs +59 -19
  339. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  340. package/dist/core/entities/client-role/service.d.ts +3 -2
  341. package/dist/core/entities/client-role/service.d.ts.map +1 -1
  342. package/dist/core/entities/client-role/service.mjs +12 -5
  343. package/dist/core/entities/client-role/service.mjs.map +1 -1
  344. package/dist/core/entities/client-scope/service.d.ts +3 -2
  345. package/dist/core/entities/client-scope/service.d.ts.map +1 -1
  346. package/dist/core/entities/client-scope/service.mjs +12 -5
  347. package/dist/core/entities/client-scope/service.mjs.map +1 -1
  348. package/dist/core/entities/identity-provider-role-mapping/service.d.ts +7 -4
  349. package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
  350. package/dist/core/entities/identity-provider-role-mapping/service.mjs +29 -6
  351. package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
  352. package/dist/core/entities/index.d.ts +1 -0
  353. package/dist/core/entities/index.d.ts.map +1 -1
  354. package/dist/core/entities/index.mjs +3 -1
  355. package/dist/core/entities/permission/service.d.ts +3 -5
  356. package/dist/core/entities/permission/service.d.ts.map +1 -1
  357. package/dist/core/entities/permission/service.mjs +30 -24
  358. package/dist/core/entities/permission/service.mjs.map +1 -1
  359. package/dist/core/entities/permission-policy/service.d.ts +3 -2
  360. package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
  361. package/dist/core/entities/permission-policy/service.mjs +12 -5
  362. package/dist/core/entities/permission-policy/service.mjs.map +1 -1
  363. package/dist/core/entities/policy/service.d.ts.map +1 -1
  364. package/dist/core/entities/policy/service.mjs +16 -7
  365. package/dist/core/entities/policy/service.mjs.map +1 -1
  366. package/dist/core/entities/realm/service.mjs +4 -4
  367. package/dist/core/entities/realm/service.mjs.map +1 -1
  368. package/dist/core/entities/realm/types.d.ts +13 -0
  369. package/dist/core/entities/realm/types.d.ts.map +1 -1
  370. package/dist/core/entities/robot/service.d.ts.map +1 -1
  371. package/dist/core/entities/robot/service.mjs +29 -11
  372. package/dist/core/entities/robot/service.mjs.map +1 -1
  373. package/dist/core/entities/robot-permission/service.d.ts +7 -4
  374. package/dist/core/entities/robot-permission/service.d.ts.map +1 -1
  375. package/dist/core/entities/robot-permission/service.mjs +59 -19
  376. package/dist/core/entities/robot-permission/service.mjs.map +1 -1
  377. package/dist/core/entities/robot-role/service.d.ts +3 -2
  378. package/dist/core/entities/robot-role/service.d.ts.map +1 -1
  379. package/dist/core/entities/robot-role/service.mjs +12 -5
  380. package/dist/core/entities/robot-role/service.mjs.map +1 -1
  381. package/dist/core/entities/role/service.d.ts.map +1 -1
  382. package/dist/core/entities/role/service.mjs +16 -7
  383. package/dist/core/entities/role/service.mjs.map +1 -1
  384. package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
  385. package/dist/core/entities/role-attribute/service.mjs +24 -6
  386. package/dist/core/entities/role-attribute/service.mjs.map +1 -1
  387. package/dist/core/entities/role-permission/service.d.ts +7 -4
  388. package/dist/core/entities/role-permission/service.d.ts.map +1 -1
  389. package/dist/core/entities/role-permission/service.mjs +61 -21
  390. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  391. package/dist/core/entities/scope/service.d.ts.map +1 -1
  392. package/dist/core/entities/scope/service.mjs +16 -7
  393. package/dist/core/entities/scope/service.mjs.map +1 -1
  394. package/dist/core/entities/session/index.d.ts +3 -0
  395. package/dist/core/entities/session/index.d.ts.map +1 -0
  396. package/dist/core/entities/session/index.mjs +5 -0
  397. package/dist/core/entities/session/service.d.ts +27 -0
  398. package/dist/core/entities/session/service.d.ts.map +1 -0
  399. package/dist/core/entities/session/service.mjs +151 -0
  400. package/dist/core/entities/session/service.mjs.map +1 -0
  401. package/dist/core/entities/session/types.d.ts +48 -0
  402. package/dist/core/entities/session/types.d.ts.map +1 -0
  403. package/dist/core/entities/session/types.mjs +4 -0
  404. package/dist/core/entities/user/service.d.ts +1 -0
  405. package/dist/core/entities/user/service.d.ts.map +1 -1
  406. package/dist/core/entities/user/service.mjs +29 -11
  407. package/dist/core/entities/user/service.mjs.map +1 -1
  408. package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
  409. package/dist/core/entities/user-attribute/service.mjs +18 -6
  410. package/dist/core/entities/user-attribute/service.mjs.map +1 -1
  411. package/dist/core/entities/user-permission/service.d.ts +7 -4
  412. package/dist/core/entities/user-permission/service.d.ts.map +1 -1
  413. package/dist/core/entities/user-permission/service.mjs +59 -19
  414. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  415. package/dist/core/entities/user-role/service.d.ts +3 -2
  416. package/dist/core/entities/user-role/service.d.ts.map +1 -1
  417. package/dist/core/entities/user-role/service.mjs +12 -5
  418. package/dist/core/entities/user-role/service.mjs.map +1 -1
  419. package/dist/core/identity/index.mjs +2 -1
  420. package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
  421. package/dist/core/identity/password-recovery/service.mjs +2 -1
  422. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  423. package/dist/core/identity/password-recovery/types.d.ts +1 -0
  424. package/dist/core/identity/password-recovery/types.d.ts.map +1 -1
  425. package/dist/core/identity/permission/checker/service.d.ts.map +1 -1
  426. package/dist/core/identity/permission/checker/service.mjs +12 -9
  427. package/dist/core/identity/permission/checker/service.mjs.map +1 -1
  428. package/dist/core/identity/permission/index.d.ts +1 -0
  429. package/dist/core/identity/permission/index.d.ts.map +1 -1
  430. package/dist/core/identity/permission/index.mjs +2 -1
  431. package/dist/core/identity/permission/junction-grant.d.ts +49 -0
  432. package/dist/core/identity/permission/junction-grant.d.ts.map +1 -0
  433. package/dist/core/identity/permission/junction-grant.mjs +57 -0
  434. package/dist/core/identity/permission/junction-grant.mjs.map +1 -0
  435. package/dist/core/identity/permission/module.d.ts +2 -3
  436. package/dist/core/identity/permission/module.d.ts.map +1 -1
  437. package/dist/core/identity/permission/module.mjs +52 -14
  438. package/dist/core/identity/permission/module.mjs.map +1 -1
  439. package/dist/core/identity/permission/types.d.ts +22 -2
  440. package/dist/core/identity/permission/types.d.ts.map +1 -1
  441. package/dist/core/identity/policy/checker/service.d.ts.map +1 -1
  442. package/dist/core/identity/policy/checker/service.mjs +6 -5
  443. package/dist/core/identity/policy/checker/service.mjs.map +1 -1
  444. package/dist/core/identity/provider/authentication/presets/facebook.d.ts.map +1 -1
  445. package/dist/core/identity/provider/authentication/presets/facebook.mjs +2 -1
  446. package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
  447. package/dist/core/identity/provider/authentication/presets/github.d.ts.map +1 -1
  448. package/dist/core/identity/provider/authentication/presets/github.mjs +2 -1
  449. package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
  450. package/dist/core/identity/provider/authentication/presets/google.d.ts.map +1 -1
  451. package/dist/core/identity/provider/authentication/presets/google.mjs +2 -1
  452. package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
  453. package/dist/core/identity/provider/authentication/presets/instagram.d.ts.map +1 -1
  454. package/dist/core/identity/provider/authentication/presets/instagram.mjs +2 -1
  455. package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
  456. package/dist/core/identity/provider/authentication/presets/paypal.d.ts.map +1 -1
  457. package/dist/core/identity/provider/authentication/presets/paypal.mjs +2 -1
  458. package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -1
  459. package/dist/core/identity/provider/authentication/protocols/oauth2/module.d.ts.map +1 -1
  460. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs +7 -2
  461. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
  462. package/dist/core/identity/provider/authentication/protocols/open-id/module.d.ts +2 -0
  463. package/dist/core/identity/provider/authentication/protocols/open-id/module.d.ts.map +1 -1
  464. package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs +5 -0
  465. package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs.map +1 -1
  466. package/dist/core/identity/registration/service.d.ts.map +1 -1
  467. package/dist/core/identity/registration/service.mjs +9 -6
  468. package/dist/core/identity/registration/service.mjs.map +1 -1
  469. package/dist/core/identity/registration/types.d.ts +1 -0
  470. package/dist/core/identity/registration/types.d.ts.map +1 -1
  471. package/dist/core/identity/resolver/module.d.ts +7 -0
  472. package/dist/core/identity/resolver/module.d.ts.map +1 -1
  473. package/dist/core/identity/resolver/module.mjs +7 -1
  474. package/dist/core/identity/resolver/module.mjs.map +1 -1
  475. package/dist/core/index.mjs +11 -2
  476. package/dist/core/oauth2/authorization/code/index.mjs +1 -0
  477. package/dist/core/oauth2/authorization/code/issuer/module.d.ts +0 -1
  478. package/dist/core/oauth2/authorization/code/issuer/module.d.ts.map +1 -1
  479. package/dist/core/oauth2/authorization/code/issuer/module.mjs +7 -7
  480. package/dist/core/oauth2/authorization/code/issuer/module.mjs.map +1 -1
  481. package/dist/core/oauth2/authorization/code/issuer/types.d.ts +11 -2
  482. package/dist/core/oauth2/authorization/code/issuer/types.d.ts.map +1 -1
  483. package/dist/core/oauth2/authorization/code/verifier/module.d.ts.map +1 -1
  484. package/dist/core/oauth2/authorization/code/verifier/module.mjs +1 -0
  485. package/dist/core/oauth2/authorization/code/verifier/module.mjs.map +1 -1
  486. package/dist/core/oauth2/authorization/code/verifier/types.d.ts +1 -0
  487. package/dist/core/oauth2/authorization/code/verifier/types.d.ts.map +1 -1
  488. package/dist/core/oauth2/authorization/code-request/validator.d.ts.map +1 -1
  489. package/dist/core/oauth2/authorization/code-request/validator.mjs +19 -5
  490. package/dist/core/oauth2/authorization/code-request/validator.mjs.map +1 -1
  491. package/dist/core/oauth2/authorization/code-request/verifier/module.d.ts.map +1 -1
  492. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +13 -10
  493. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
  494. package/dist/core/oauth2/authorization/code-request/verifier/types.d.ts +7 -0
  495. package/dist/core/oauth2/authorization/code-request/verifier/types.d.ts.map +1 -1
  496. package/dist/core/oauth2/authorization/helpers.d.ts +2 -1
  497. package/dist/core/oauth2/authorization/helpers.d.ts.map +1 -1
  498. package/dist/core/oauth2/authorization/helpers.mjs +19 -2
  499. package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
  500. package/dist/core/oauth2/authorization/module.d.ts +6 -7
  501. package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
  502. package/dist/core/oauth2/authorization/module.mjs +24 -38
  503. package/dist/core/oauth2/authorization/module.mjs.map +1 -1
  504. package/dist/core/oauth2/authorization/types.d.ts +15 -7
  505. package/dist/core/oauth2/authorization/types.d.ts.map +1 -1
  506. package/dist/core/oauth2/client/grant-type.d.ts +9 -0
  507. package/dist/core/oauth2/client/grant-type.d.ts.map +1 -0
  508. package/dist/core/oauth2/client/grant-type.mjs +18 -0
  509. package/dist/core/oauth2/client/grant-type.mjs.map +1 -0
  510. package/dist/core/oauth2/client/index.d.ts +1 -0
  511. package/dist/core/oauth2/client/index.d.ts.map +1 -1
  512. package/dist/core/oauth2/client/index.mjs +2 -1
  513. package/dist/core/oauth2/end-session/index.d.ts +4 -0
  514. package/dist/core/oauth2/end-session/index.d.ts.map +1 -0
  515. package/dist/core/oauth2/end-session/index.mjs +6 -0
  516. package/dist/core/oauth2/end-session/service.d.ts +30 -0
  517. package/dist/core/oauth2/end-session/service.d.ts.map +1 -0
  518. package/dist/core/oauth2/end-session/service.mjs +117 -0
  519. package/dist/core/oauth2/end-session/service.mjs.map +1 -0
  520. package/dist/core/oauth2/end-session/types.d.ts +55 -0
  521. package/dist/core/oauth2/end-session/types.d.ts.map +1 -0
  522. package/dist/core/oauth2/end-session/types.mjs +4 -0
  523. package/dist/core/oauth2/end-session/validator.d.ts +6 -0
  524. package/dist/core/oauth2/end-session/validator.d.ts.map +1 -0
  525. package/dist/core/oauth2/end-session/validator.mjs +23 -0
  526. package/dist/core/oauth2/end-session/validator.mjs.map +1 -0
  527. package/dist/core/oauth2/grant-types/authorize.d.ts +19 -2
  528. package/dist/core/oauth2/grant-types/authorize.d.ts.map +1 -1
  529. package/dist/core/oauth2/grant-types/authorize.mjs +53 -10
  530. package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
  531. package/dist/core/oauth2/grant-types/refresh-token.d.ts +21 -2
  532. package/dist/core/oauth2/grant-types/refresh-token.d.ts.map +1 -1
  533. package/dist/core/oauth2/grant-types/refresh-token.mjs +55 -9
  534. package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
  535. package/dist/core/oauth2/grant-types/types.d.ts +22 -2
  536. package/dist/core/oauth2/grant-types/types.d.ts.map +1 -1
  537. package/dist/core/oauth2/index.d.ts +2 -0
  538. package/dist/core/oauth2/index.d.ts.map +1 -1
  539. package/dist/core/oauth2/index.mjs +7 -3
  540. package/dist/core/oauth2/session-token/index.d.ts +2 -0
  541. package/dist/core/oauth2/session-token/index.d.ts.map +1 -0
  542. package/dist/core/oauth2/session-token/index.mjs +4 -0
  543. package/dist/core/oauth2/session-token/types.d.ts +70 -0
  544. package/dist/core/oauth2/session-token/types.d.ts.map +1 -0
  545. package/dist/core/oauth2/session-token/types.mjs +4 -0
  546. package/dist/core/oauth2/token/issuer/access/module.d.ts +3 -1
  547. package/dist/core/oauth2/token/issuer/access/module.d.ts.map +1 -1
  548. package/dist/core/oauth2/token/issuer/access/module.mjs +12 -1
  549. package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
  550. package/dist/core/oauth2/token/issuer/open-id/module.d.ts.map +1 -1
  551. package/dist/core/oauth2/token/issuer/open-id/module.mjs +1 -1
  552. package/dist/core/oauth2/token/issuer/open-id/module.mjs.map +1 -1
  553. package/dist/core/oauth2/token/issuer/refresh/module.d.ts +3 -1
  554. package/dist/core/oauth2/token/issuer/refresh/module.d.ts.map +1 -1
  555. package/dist/core/oauth2/token/issuer/refresh/module.mjs +12 -1
  556. package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
  557. package/dist/core/oauth2/token/revoker/module.d.ts +3 -1
  558. package/dist/core/oauth2/token/revoker/module.d.ts.map +1 -1
  559. package/dist/core/oauth2/token/revoker/module.mjs +4 -1
  560. package/dist/core/oauth2/token/revoker/module.mjs.map +1 -1
  561. package/dist/core/oauth2/token/verifier/module.d.ts.map +1 -1
  562. package/dist/core/oauth2/token/verifier/module.mjs +4 -4
  563. package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
  564. package/dist/core/oauth2/token/verifier/types.d.ts +6 -0
  565. package/dist/core/oauth2/token/verifier/types.d.ts.map +1 -1
  566. package/dist/core/provisioning/entities/client/relations-validator.d.ts.map +1 -1
  567. package/dist/core/provisioning/entities/client/relations-validator.mjs +3 -2
  568. package/dist/core/provisioning/entities/client/relations-validator.mjs.map +1 -1
  569. package/dist/core/provisioning/entities/index.d.ts +1 -0
  570. package/dist/core/provisioning/entities/index.d.ts.map +1 -1
  571. package/dist/core/provisioning/entities/index.mjs +5 -1
  572. package/dist/core/provisioning/entities/permission/index.d.ts +1 -0
  573. package/dist/core/provisioning/entities/permission/index.d.ts.map +1 -1
  574. package/dist/core/provisioning/entities/permission/index.mjs +2 -1
  575. package/dist/core/provisioning/entities/permission/relations-validator.d.ts +6 -0
  576. package/dist/core/provisioning/entities/permission/relations-validator.d.ts.map +1 -0
  577. package/dist/core/provisioning/entities/permission/relations-validator.mjs +17 -0
  578. package/dist/core/provisioning/entities/permission/relations-validator.mjs.map +1 -0
  579. package/dist/core/provisioning/entities/permission/validator.d.ts.map +1 -1
  580. package/dist/core/provisioning/entities/permission/validator.mjs +3 -0
  581. package/dist/core/provisioning/entities/permission/validator.mjs.map +1 -1
  582. package/dist/core/provisioning/entities/policy/index.d.ts +1 -0
  583. package/dist/core/provisioning/entities/policy/index.d.ts.map +1 -1
  584. package/dist/core/provisioning/entities/policy/index.mjs +2 -1
  585. package/dist/core/provisioning/entities/policy/validator.d.ts +6 -0
  586. package/dist/core/provisioning/entities/policy/validator.d.ts.map +1 -0
  587. package/dist/core/provisioning/entities/policy/validator.mjs +26 -0
  588. package/dist/core/provisioning/entities/policy/validator.mjs.map +1 -0
  589. package/dist/core/provisioning/entities/realm/relations-validator.d.ts.map +1 -1
  590. package/dist/core/provisioning/entities/realm/relations-validator.mjs +9 -52
  591. package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
  592. package/dist/core/provisioning/entities/role/relations-validator.d.ts.map +1 -1
  593. package/dist/core/provisioning/entities/role/relations-validator.mjs +4 -0
  594. package/dist/core/provisioning/entities/role/relations-validator.mjs.map +1 -1
  595. package/dist/core/provisioning/entities/role/types.d.ts +8 -5
  596. package/dist/core/provisioning/entities/role/types.d.ts.map +1 -1
  597. package/dist/core/provisioning/entities/root/validator.d.ts.map +1 -1
  598. package/dist/core/provisioning/entities/root/validator.mjs +11 -26
  599. package/dist/core/provisioning/entities/root/validator.mjs.map +1 -1
  600. package/dist/core/provisioning/entities/utils.d.ts +10 -0
  601. package/dist/core/provisioning/entities/utils.d.ts.map +1 -0
  602. package/dist/core/provisioning/entities/utils.mjs +29 -0
  603. package/dist/core/provisioning/entities/utils.mjs.map +1 -0
  604. package/dist/core/provisioning/index.mjs +4 -1
  605. package/dist/core/provisioning/synchronizer/base.d.ts +3 -0
  606. package/dist/core/provisioning/synchronizer/base.d.ts.map +1 -1
  607. package/dist/core/provisioning/synchronizer/base.mjs +3 -0
  608. package/dist/core/provisioning/synchronizer/base.mjs.map +1 -1
  609. package/dist/core/provisioning/synchronizer/client/module.d.ts.map +1 -1
  610. package/dist/core/provisioning/synchronizer/client/module.mjs +1 -0
  611. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  612. package/dist/core/provisioning/synchronizer/entity-resolver.d.ts.map +1 -1
  613. package/dist/core/provisioning/synchronizer/entity-resolver.mjs +3 -0
  614. package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
  615. package/dist/core/provisioning/synchronizer/index.mjs +1 -0
  616. package/dist/core/provisioning/synchronizer/permission/module.d.ts.map +1 -1
  617. package/dist/core/provisioning/synchronizer/permission/module.mjs +2 -1
  618. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  619. package/dist/core/provisioning/synchronizer/policy/module.d.ts +2 -0
  620. package/dist/core/provisioning/synchronizer/policy/module.d.ts.map +1 -1
  621. package/dist/core/provisioning/synchronizer/policy/module.mjs +19 -1
  622. package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
  623. package/dist/core/provisioning/synchronizer/realm/module.d.ts.map +1 -1
  624. package/dist/core/provisioning/synchronizer/realm/module.mjs +1 -0
  625. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  626. package/dist/core/provisioning/synchronizer/robot/module.d.ts.map +1 -1
  627. package/dist/core/provisioning/synchronizer/robot/module.mjs +1 -0
  628. package/dist/core/provisioning/synchronizer/robot/module.mjs.map +1 -1
  629. package/dist/core/provisioning/synchronizer/role/module.d.ts +2 -3
  630. package/dist/core/provisioning/synchronizer/role/module.d.ts.map +1 -1
  631. package/dist/core/provisioning/synchronizer/role/module.mjs +14 -20
  632. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  633. package/dist/core/provisioning/synchronizer/role/types.d.ts +1 -2
  634. package/dist/core/provisioning/synchronizer/role/types.d.ts.map +1 -1
  635. package/dist/core/provisioning/synchronizer/scope/module.d.ts.map +1 -1
  636. package/dist/core/provisioning/synchronizer/scope/module.mjs +1 -0
  637. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  638. package/dist/core/provisioning/synchronizer/user/module.d.ts.map +1 -1
  639. package/dist/core/provisioning/synchronizer/user/module.mjs +1 -0
  640. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  641. package/dist/core/security/policy/evaluator.d.ts +4 -4
  642. package/dist/core/security/policy/evaluator.d.ts.map +1 -1
  643. package/dist/core/security/policy/evaluator.mjs +19 -18
  644. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  645. package/dist/index.mjs +17 -12
  646. package/dist/swagger.json +585 -23
  647. package/dist/ui/client/.vite/ssr-manifest.json +1981 -577
  648. package/dist/ui/client/assets/index-CP9HCHoS.js +127 -0
  649. package/dist/ui/client/assets/index-VM4JXBXw.css +2 -0
  650. package/dist/ui/client/index.html +2 -2
  651. package/dist/ui/server/assets/{multipart-parser-Dn2Ly9xU.js → multipart-parser-BCMy8Xwv.js} +11 -1
  652. package/dist/ui/server/assets/{multipart-parser-DyM9gi59.js → multipart-parser-BVY8pIV2.js} +11 -1
  653. package/dist/ui/server/server.js +21503 -11128
  654. package/package.json +38 -36
  655. package/dist/ui/client/assets/index-BFXs98mu.js +0 -102
  656. package/dist/ui/client/assets/index-C_-HM1P-.css +0 -2
@@ -11,13 +11,11 @@ import { pickRecord } from "@authup/kit";
11
11
  //#region src/core/provisioning/synchronizer/role/module.ts
12
12
  var RoleProvisioningSynchronizer = class extends BaseProvisioningSynchronizer {
13
13
  repository;
14
- policyRepository;
15
14
  permissionResolver;
16
15
  permissionJunction;
17
16
  constructor(ctx) {
18
17
  super();
19
18
  this.repository = ctx.repository;
20
- this.policyRepository = ctx.policyRepository;
21
19
  this.permissionResolver = new ProvisioningEntityResolver(ctx.permissionRepository);
22
20
  this.permissionJunction = new ProvisioningJunctionSynchronizer({
23
21
  repository: ctx.rolePermissionRepository,
@@ -26,6 +24,7 @@ var RoleProvisioningSynchronizer = class extends BaseProvisioningSynchronizer {
26
24
  });
27
25
  }
28
26
  async synchronize(input) {
27
+ this.canonicalizeName(input.attributes);
29
28
  const strategy = normalizeEntityProvisioningStrategy(input.strategy);
30
29
  let attributes = await this.repository.findOneBy({
31
30
  name: input.attributes.name,
@@ -62,32 +61,27 @@ var RoleProvisioningSynchronizer = class extends BaseProvisioningSynchronizer {
62
61
  const realmPermissions = attributes.realm_id ? await this.permissionResolver.resolveRealm(input.relations.realmPermissions, attributes.realm_id) : [];
63
62
  const permissions = [...globalPermissions, ...realmPermissions];
64
63
  if (permissions.length > 0) {
65
- const policyMap = await this.resolvePolicyMap(input, attributes.name);
66
- if (policyMap) for (const permission of permissions) {
67
- const policyId = policyMap.overrides.get(permission.name) ?? policyMap.defaultPolicyId;
68
- await this.permissionJunction.synchronize(attributes, [permission], "permission_id", "permission_realm_id", policyId ? { policy_id: policyId } : void 0);
69
- }
70
- else await this.permissionJunction.synchronize(attributes, permissions, "permission_id", "permission_realm_id");
64
+ const defaultScope = input.relations.globalPermissionsRealmScope;
65
+ if (defaultScope) {
66
+ const overrides = this.buildRealmScopeOverrides(input);
67
+ for (const permission of permissions) {
68
+ const realmScope = overrides.get(permission.name) ?? defaultScope;
69
+ await this.permissionJunction.synchronize(attributes, [permission], "permission_id", "permission_realm_id", { realm_scope: realmScope });
70
+ }
71
+ } else await this.permissionJunction.synchronize(attributes, permissions, "permission_id", "permission_realm_id");
71
72
  }
72
73
  return {
73
74
  ...input,
74
75
  attributes
75
76
  };
76
77
  }
77
- async resolvePolicyMap(input, roleName) {
78
- if (!input.relations?.globalPermissionsPolicyName || !this.policyRepository) return;
79
- const defaultPolicy = await this.policyRepository.findOneByName(input.relations.globalPermissionsPolicyName);
80
- if (!defaultPolicy) throw new Error(`Provisioning: policy '${input.relations.globalPermissionsPolicyName}' not found for role '${roleName}'.`);
78
+ buildRealmScopeOverrides(input) {
81
79
  const overrides = /* @__PURE__ */ new Map();
82
- if (input.relations.globalPermissionsPolicyOverrides) for (const [policyName, permissionNames] of Object.entries(input.relations.globalPermissionsPolicyOverrides)) {
83
- const policy = await this.policyRepository.findOneByName(policyName);
84
- if (!policy) throw new Error(`Provisioning: override policy '${policyName}' not found for role '${roleName}'.`);
85
- for (const permName of permissionNames) overrides.set(permName, policy.id);
80
+ if (input.relations?.globalPermissionsRealmScopeOverrides) for (const [realmScope, permissionNames] of Object.entries(input.relations.globalPermissionsRealmScopeOverrides)) {
81
+ if (!permissionNames) continue;
82
+ for (const permName of permissionNames) overrides.set(permName, realmScope);
86
83
  }
87
- return {
88
- defaultPolicyId: defaultPolicy.id,
89
- overrides
90
- };
84
+ return overrides;
91
85
  }
92
86
  };
93
87
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["pickRecord","ProvisioningEntityStrategyType","normalizeEntityProvisioningStrategy","BaseProvisioningSynchronizer","ProvisioningEntityResolver","ProvisioningJunctionSynchronizer","RoleProvisioningSynchronizer","repository","policyRepository","permissionResolver","permissionJunction","ctx","permissionRepository","rolePermissionRepository","ownerKey","ownerRealmKey","synchronize","input","strategy","attributes","findOneBy","name","realm_id","client_id","type","ABSENT","remove","MERGE","merge","save","REPLACE","id","create","relations","globalPermissions","resolveGlobal","globalPermissionsExclude","length","excludeSet","Set","filter","p","has","realmPermissions","resolveRealm","permissions","policyMap","resolvePolicyMap","permission","policyId","overrides","get","defaultPolicyId","policy_id","undefined","roleName","globalPermissionsPolicyName","defaultPolicy","findOneByName","Error","Map","globalPermissionsPolicyOverrides","policyName","permissionNames","Object","entries","policy","permName","set"],"sources":["../../../../../src/core/provisioning/synchronizer/role/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { pickRecord } from '@authup/kit';\nimport type { Permission, RolePermission } from '@authup/core-kit';\nimport type { IPolicyRepository, IRoleRepository } from '../../../entities/index.ts';\nimport type { RoleProvisioningEntity } from '../../entities/role/index.ts';\nimport { ProvisioningEntityStrategyType, normalizeEntityProvisioningStrategy } from '../../strategy/index.ts';\nimport { BaseProvisioningSynchronizer } from '../base.ts';\nimport { ProvisioningEntityResolver } from '../entity-resolver.ts';\nimport { ProvisioningJunctionSynchronizer } from '../junction-synchronizer.ts';\nimport type { RoleProvisioningSynchronizerContext } from './types.ts';\n\nexport class RoleProvisioningSynchronizer extends BaseProvisioningSynchronizer<RoleProvisioningEntity> {\n protected repository : IRoleRepository;\n\n protected policyRepository?: IPolicyRepository;\n\n protected permissionResolver : ProvisioningEntityResolver<Permission>;\n\n protected permissionJunction: ProvisioningJunctionSynchronizer<RolePermission>;\n\n constructor(ctx: RoleProvisioningSynchronizerContext) {\n super();\n\n this.repository = ctx.repository;\n this.policyRepository = ctx.policyRepository;\n this.permissionResolver = new ProvisioningEntityResolver(ctx.permissionRepository);\n this.permissionJunction = new ProvisioningJunctionSynchronizer({\n repository: ctx.rolePermissionRepository,\n ownerKey: 'role_id',\n ownerRealmKey: 'role_realm_id',\n });\n }\n\n async synchronize(input: RoleProvisioningEntity): Promise<RoleProvisioningEntity> {\n const strategy = normalizeEntityProvisioningStrategy(input.strategy);\n let attributes = await this.repository.findOneBy({\n name: input.attributes.name,\n realm_id: input.attributes.realm_id || null,\n client_id: input.attributes.client_id || null,\n });\n\n if (strategy.type === ProvisioningEntityStrategyType.ABSENT) {\n if (attributes) {\n await this.repository.remove(attributes);\n }\n return {\n ...input,\n attributes: attributes || input.attributes, \n };\n }\n\n if (attributes) {\n switch (strategy.type) {\n case ProvisioningEntityStrategyType.MERGE:\n attributes = this.repository.merge(\n attributes,\n strategy.attributes ?\n pickRecord(input.attributes, strategy.attributes) :\n input.attributes,\n );\n\n attributes = await this.repository.save(attributes);\n break;\n case ProvisioningEntityStrategyType.REPLACE:\n input.attributes.id = attributes.id;\n attributes = await this.repository.save(this.repository.create(input.attributes));\n break;\n }\n } else {\n attributes = await this.repository.save(this.repository.create(input.attributes));\n }\n\n if (!input.relations) {\n return {\n ...input,\n attributes,\n };\n }\n\n let globalPermissions = await this.permissionResolver.resolveGlobal(input.relations.globalPermissions);\n\n if (input.relations.globalPermissionsExclude && input.relations.globalPermissionsExclude.length > 0) {\n const excludeSet = new Set(input.relations.globalPermissionsExclude);\n globalPermissions = globalPermissions.filter((p) => !excludeSet.has(p.name));\n }\n\n const realmPermissions = attributes.realm_id ?\n await this.permissionResolver.resolveRealm(input.relations.realmPermissions, attributes.realm_id) :\n [];\n\n const permissions = [\n ...globalPermissions,\n ...realmPermissions,\n ];\n\n if (permissions.length > 0) {\n const policyMap = await this.resolvePolicyMap(input, attributes.name);\n\n if (policyMap) {\n for (const permission of permissions) {\n const policyId = policyMap.overrides.get(permission.name) ?? policyMap.defaultPolicyId;\n await this.permissionJunction.synchronize(\n attributes,\n [permission],\n 'permission_id',\n 'permission_realm_id',\n policyId ? { policy_id: policyId } : undefined,\n );\n }\n } else {\n await this.permissionJunction.synchronize(\n attributes,\n permissions,\n 'permission_id',\n 'permission_realm_id',\n );\n }\n }\n\n return {\n ...input,\n attributes,\n };\n }\n\n private async resolvePolicyMap(\n input: RoleProvisioningEntity,\n roleName: string | undefined,\n ): Promise<{\n defaultPolicyId: string | undefined,\n overrides: Map<string, string> \n } | undefined> {\n if (!input.relations?.globalPermissionsPolicyName || !this.policyRepository) {\n return undefined;\n }\n\n const defaultPolicy = await this.policyRepository.findOneByName(input.relations.globalPermissionsPolicyName);\n if (!defaultPolicy) {\n throw new Error(\n `Provisioning: policy '${input.relations.globalPermissionsPolicyName}' not found for role '${roleName}'.`,\n );\n }\n\n const overrides = new Map<string, string>();\n\n if (input.relations.globalPermissionsPolicyOverrides) {\n for (const [policyName, permissionNames] of Object.entries(input.relations.globalPermissionsPolicyOverrides)) {\n const policy = await this.policyRepository.findOneByName(policyName);\n if (!policy) {\n throw new Error(\n `Provisioning: override policy '${policyName}' not found for role '${roleName}'.`,\n );\n }\n for (const permName of permissionNames) {\n overrides.set(permName, policy.id);\n }\n }\n }\n\n return {\n defaultPolicyId: defaultPolicy.id,\n overrides,\n };\n }\n}\n"],"mappings":";;;;;;;;;;;AAiBA,IAAaM,+BAAb,cAAkDH,6BAAAA;CACpCI;CAEAC;CAEAC;CAEAC;CAEV,YAAYC,KAA0C;EAClD,MAAK;EAEL,KAAKJ,aAAaI,IAAIJ;EACtB,KAAKC,mBAAmBG,IAAIH;EAC5B,KAAKC,qBAAqB,IAAIL,2BAA2BO,IAAIC,oBAAoB;EACjF,KAAKF,qBAAqB,IAAIL,iCAAiC;GAC3DE,YAAYI,IAAIE;GAChBC,UAAU;GACVC,eAAe;EACnB,CAAA;CACJ;CAEA,MAAMC,YAAYC,OAAgE;EAC9E,MAAMC,WAAWhB,oCAAoCe,MAAMC,QAAQ;EACnE,IAAIC,aAAa,MAAM,KAAKZ,WAAWa,UAAU;GAC7CC,MAAMJ,MAAME,WAAWE;GACvBC,UAAUL,MAAME,WAAWG,YAAY;GACvCC,WAAWN,MAAME,WAAWI,aAAa;EAC7C,CAAA;EAEA,IAAIL,SAASM,SAASvB,+BAA+BwB,QAAQ;GACzD,IAAIN,YACA,MAAM,KAAKZ,WAAWmB,OAAOP,UAAAA;GAEjC,OAAO;IACH,GAAGF;IACHE,YAAYA,cAAcF,MAAME;GACpC;EACJ;EAEA,IAAIA,YACA,QAAQD,SAASM,MAAjB;GACI,KAAKvB,+BAA+B0B;IAChCR,aAAa,KAAKZ,WAAWqB,MACzBT,YACAD,SAASC,aACLnB,WAAWiB,MAAME,YAAYD,SAASC,UAAU,IAChDF,MAAME,UAAU;IAGxBA,aAAa,MAAM,KAAKZ,WAAWsB,KAAKV,UAAAA;IACxC;GACJ,KAAKlB,+BAA+B6B;IAChCb,MAAME,WAAWY,KAAKZ,WAAWY;IACjCZ,aAAa,MAAM,KAAKZ,WAAWsB,KAAK,KAAKtB,WAAWyB,OAAOf,MAAME,UAAU,CAAA;IAC/E;EACR;OAEAA,aAAa,MAAM,KAAKZ,WAAWsB,KAAK,KAAKtB,WAAWyB,OAAOf,MAAME,UAAU,CAAA;EAGnF,IAAI,CAACF,MAAMgB,WACP,OAAO;GACH,GAAGhB;GACHE;EACJ;EAGJ,IAAIe,oBAAoB,MAAM,KAAKzB,mBAAmB0B,cAAclB,MAAMgB,UAAUC,iBAAiB;EAErG,IAAIjB,MAAMgB,UAAUG,4BAA4BnB,MAAMgB,UAAUG,yBAAyBC,SAAS,GAAG;GACjG,MAAMC,aAAa,IAAIC,IAAItB,MAAMgB,UAAUG,wBAAwB;GACnEF,oBAAoBA,kBAAkBM,QAAQC,MAAM,CAACH,WAAWI,IAAID,EAAEpB,IAAI,CAAA;EAC9E;EAEA,MAAMsB,mBAAmBxB,WAAWG,WAChC,MAAM,KAAKb,mBAAmBmC,aAAa3B,MAAMgB,UAAUU,kBAAkBxB,WAAWG,QAAQ,IAChG,CAAA;EAEJ,MAAMuB,cAAc,CAAA,GACbX,mBAAAA,GACAS,gBAAAA;EAGP,IAAIE,YAAYR,SAAS,GAAG;GACxB,MAAMS,YAAY,MAAM,KAAKC,iBAAiB9B,OAAOE,WAAWE,IAAI;GAEpE,IAAIyB,WACA,KAAK,MAAME,cAAcH,aAAa;IAClC,MAAMI,WAAWH,UAAUI,UAAUC,IAAIH,WAAW3B,IAAI,KAAKyB,UAAUM;IACvE,MAAM,KAAK1C,mBAAmBM,YAC1BG,YACA,CAAC6B,UAAAA,GACD,iBACA,uBACAC,WAAW,EAAEI,WAAWJ,SAAS,IAAIK,KAAAA,CAAAA;GAE7C;QAEA,MAAM,KAAK5C,mBAAmBM,YAC1BG,YACA0B,aACA,iBACA,qBAAA;EAGZ;EAEA,OAAO;GACH,GAAG5B;GACHE;EACJ;CACJ;CAEA,MAAc4B,iBACV9B,OACAsC,UAIW;EACX,IAAI,CAACtC,MAAMgB,WAAWuB,+BAA+B,CAAC,KAAKhD,kBACvD;EAGJ,MAAMiD,gBAAgB,MAAM,KAAKjD,iBAAiBkD,cAAczC,MAAMgB,UAAUuB,2BAA2B;EAC3G,IAAI,CAACC,eACD,MAAM,IAAIE,MACN,yBAAyB1C,MAAMgB,UAAUuB,4BAA4B,wBAAwBD,SAAS,GAAG;EAIjH,MAAML,4BAAY,IAAIU,IAAAA;EAEtB,IAAI3C,MAAMgB,UAAU4B,kCAChB,KAAK,MAAM,CAACC,YAAYC,oBAAoBC,OAAOC,QAAQhD,MAAMgB,UAAU4B,gCAAgC,GAAG;GAC1G,MAAMK,SAAS,MAAM,KAAK1D,iBAAiBkD,cAAcI,UAAAA;GACzD,IAAI,CAACI,QACD,MAAM,IAAIP,MACN,kCAAkCG,WAAW,wBAAwBP,SAAS,GAAG;GAGzF,KAAK,MAAMY,YAAYJ,iBACnBb,UAAUkB,IAAID,UAAUD,OAAOnC,EAAE;EAEzC;EAGJ,OAAO;GACHqB,iBAAiBK,cAAc1B;GAC/BmB;EACJ;CACJ;AACJ"}
1
+ {"version":3,"file":"module.mjs","names":["pickRecord","ProvisioningEntityStrategyType","normalizeEntityProvisioningStrategy","BaseProvisioningSynchronizer","ProvisioningEntityResolver","ProvisioningJunctionSynchronizer","RoleProvisioningSynchronizer","repository","permissionResolver","permissionJunction","ctx","permissionRepository","rolePermissionRepository","ownerKey","ownerRealmKey","synchronize","input","canonicalizeName","attributes","strategy","findOneBy","name","realm_id","client_id","type","ABSENT","remove","MERGE","merge","save","REPLACE","id","create","relations","globalPermissions","resolveGlobal","globalPermissionsExclude","length","excludeSet","Set","filter","p","has","realmPermissions","resolveRealm","permissions","defaultScope","globalPermissionsRealmScope","overrides","buildRealmScopeOverrides","permission","realmScope","get","realm_scope","Map","globalPermissionsRealmScopeOverrides","permissionNames","Object","entries","permName","set"],"sources":["../../../../../src/core/provisioning/synchronizer/role/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { pickRecord } from '@authup/kit';\nimport type { Permission, RolePermission } from '@authup/core-kit';\nimport type { IRoleRepository } from '../../../entities/index.ts';\nimport type { RoleProvisioningEntity } from '../../entities/role/index.ts';\nimport { ProvisioningEntityStrategyType, normalizeEntityProvisioningStrategy } from '../../strategy/index.ts';\nimport { BaseProvisioningSynchronizer } from '../base.ts';\nimport { ProvisioningEntityResolver } from '../entity-resolver.ts';\nimport { ProvisioningJunctionSynchronizer } from '../junction-synchronizer.ts';\nimport type { RoleProvisioningSynchronizerContext } from './types.ts';\n\nexport class RoleProvisioningSynchronizer extends BaseProvisioningSynchronizer<RoleProvisioningEntity> {\n protected repository : IRoleRepository;\n\n protected permissionResolver : ProvisioningEntityResolver<Permission>;\n\n protected permissionJunction: ProvisioningJunctionSynchronizer<RolePermission>;\n\n constructor(ctx: RoleProvisioningSynchronizerContext) {\n super();\n\n this.repository = ctx.repository;\n this.permissionResolver = new ProvisioningEntityResolver(ctx.permissionRepository);\n this.permissionJunction = new ProvisioningJunctionSynchronizer({\n repository: ctx.rolePermissionRepository,\n ownerKey: 'role_id',\n ownerRealmKey: 'role_realm_id',\n });\n }\n\n async synchronize(input: RoleProvisioningEntity): Promise<RoleProvisioningEntity> {\n this.canonicalizeName(input.attributes);\n\n const strategy = normalizeEntityProvisioningStrategy(input.strategy);\n let attributes = await this.repository.findOneBy({\n name: input.attributes.name,\n realm_id: input.attributes.realm_id || null,\n client_id: input.attributes.client_id || null,\n });\n\n if (strategy.type === ProvisioningEntityStrategyType.ABSENT) {\n if (attributes) {\n await this.repository.remove(attributes);\n }\n return {\n ...input,\n attributes: attributes || input.attributes,\n };\n }\n\n if (attributes) {\n switch (strategy.type) {\n case ProvisioningEntityStrategyType.MERGE:\n attributes = this.repository.merge(\n attributes,\n strategy.attributes ?\n pickRecord(input.attributes, strategy.attributes) :\n input.attributes,\n );\n\n attributes = await this.repository.save(attributes);\n break;\n case ProvisioningEntityStrategyType.REPLACE:\n input.attributes.id = attributes.id;\n attributes = await this.repository.save(this.repository.create(input.attributes));\n break;\n }\n } else {\n attributes = await this.repository.save(this.repository.create(input.attributes));\n }\n\n if (!input.relations) {\n return {\n ...input,\n attributes,\n };\n }\n\n let globalPermissions = await this.permissionResolver.resolveGlobal(input.relations.globalPermissions);\n\n if (input.relations.globalPermissionsExclude && input.relations.globalPermissionsExclude.length > 0) {\n const excludeSet = new Set(input.relations.globalPermissionsExclude);\n globalPermissions = globalPermissions.filter((p) => !excludeSet.has(p.name));\n }\n\n const realmPermissions = attributes.realm_id ?\n await this.permissionResolver.resolveRealm(input.relations.realmPermissions, attributes.realm_id) :\n [];\n\n const permissions = [\n ...globalPermissions,\n ...realmPermissions,\n ];\n\n if (permissions.length > 0) {\n const defaultScope = input.relations.globalPermissionsRealmScope;\n\n if (defaultScope) {\n const overrides = this.buildRealmScopeOverrides(input);\n for (const permission of permissions) {\n const realmScope = overrides.get(permission.name) ?? defaultScope;\n await this.permissionJunction.synchronize(\n attributes,\n [permission],\n 'permission_id',\n 'permission_realm_id',\n { realm_scope: realmScope },\n );\n }\n } else {\n await this.permissionJunction.synchronize(\n attributes,\n permissions,\n 'permission_id',\n 'permission_realm_id',\n );\n }\n }\n\n return {\n ...input,\n attributes,\n };\n }\n\n private buildRealmScopeOverrides(input: RoleProvisioningEntity): Map<string, string> {\n const overrides = new Map<string, string>();\n if (input.relations?.globalPermissionsRealmScopeOverrides) {\n for (const [realmScope, permissionNames] of Object.entries(input.relations.globalPermissionsRealmScopeOverrides)) {\n if (!permissionNames) {\n continue;\n }\n for (const permName of permissionNames) {\n overrides.set(permName, realmScope);\n }\n }\n }\n return overrides;\n }\n}\n"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import type { IPermissionRepository, IPolicyRepository, IRolePermissionRepository, IRoleRepository } from '../../../entities/index.ts';
1
+ import type { IPermissionRepository, IRolePermissionRepository, IRoleRepository } from '../../../entities/index.ts';
2
2
  export type RoleProvisioningSynchronizerContext = {
3
3
  repository: IRoleRepository;
4
4
  permissionRepository: IPermissionRepository;
5
5
  rolePermissionRepository: IRolePermissionRepository;
6
- policyRepository?: IPolicyRepository;
7
6
  };
8
7
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/provisioning/synchronizer/role/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EAClB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,mCAAmC,GAAG;IAC9C,UAAU,EAAE,eAAe,CAAC;IAC5B,oBAAoB,EAAE,qBAAqB,CAAC;IAC5C,wBAAwB,EAAE,yBAAyB,CAAC;IACpD,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;CACxC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/provisioning/synchronizer/role/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EAClB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,mCAAmC,GAAG;IAC9C,UAAU,EAAE,eAAe,CAAC;IAC5B,oBAAoB,EAAE,qBAAqB,CAAC;IAC5C,wBAAwB,EAAE,yBAAyB,CAAC;CACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/core/provisioning/synchronizer/scope/module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,6BAA8B,SAAQ,4BAA4B,CAAC,uBAAuB,CAAC;IACpG,SAAS,CAAC,UAAU,EAAG,gBAAgB,CAAC;gBAE5B,GAAG,EAAE,oCAAoC;IAM/C,WAAW,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA4CtF"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/core/provisioning/synchronizer/scope/module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,6BAA8B,SAAQ,4BAA4B,CAAC,uBAAuB,CAAC;IACpG,SAAS,CAAC,UAAU,EAAG,gBAAgB,CAAC;gBAE5B,GAAG,EAAE,oCAAoC;IAM/C,WAAW,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA8CtF"}
@@ -14,6 +14,7 @@ var ScopeProvisioningSynchronizer = class extends BaseProvisioningSynchronizer {
14
14
  this.repository = ctx.repository;
15
15
  }
16
16
  async synchronize(input) {
17
+ this.canonicalizeName(input.attributes);
17
18
  const strategy = normalizeEntityProvisioningStrategy(input.strategy);
18
19
  let attributes = await this.repository.findOneBy({
19
20
  name: input.attributes.name,
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["pickRecord","ProvisioningEntityStrategyType","normalizeEntityProvisioningStrategy","BaseProvisioningSynchronizer","ScopeProvisioningSynchronizer","repository","ctx","synchronize","input","strategy","attributes","findOneBy","name","realm_id","type","ABSENT","remove","MERGE","merge","save","REPLACE","id","create"],"sources":["../../../../../src/core/provisioning/synchronizer/scope/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { pickRecord } from '@authup/kit';\nimport type { IScopeRepository } from '../../../entities/index.ts';\nimport type { ScopeProvisioningEntity } from '../../entities/index.ts';\nimport { ProvisioningEntityStrategyType, normalizeEntityProvisioningStrategy } from '../../strategy/index.ts';\nimport { BaseProvisioningSynchronizer } from '../base.ts';\nimport type { ScopeProvisioningSynchronizerContext } from './types.ts';\n\nexport class ScopeProvisioningSynchronizer extends BaseProvisioningSynchronizer<ScopeProvisioningEntity> {\n protected repository : IScopeRepository;\n\n constructor(ctx: ScopeProvisioningSynchronizerContext) {\n super();\n\n this.repository = ctx.repository;\n }\n\n async synchronize(input: ScopeProvisioningEntity): Promise<ScopeProvisioningEntity> {\n const strategy = normalizeEntityProvisioningStrategy(input.strategy);\n\n let attributes = await this.repository.findOneBy({\n name: input.attributes.name,\n realm_id: input.attributes.realm_id || null,\n });\n\n if (strategy.type === ProvisioningEntityStrategyType.ABSENT) {\n if (attributes) {\n await this.repository.remove(attributes);\n }\n return {\n ...input,\n attributes: attributes || input.attributes, \n };\n }\n\n if (attributes) {\n switch (strategy.type) {\n case ProvisioningEntityStrategyType.MERGE:\n attributes = this.repository.merge(\n attributes,\n strategy.attributes ?\n pickRecord(input.attributes, strategy.attributes) :\n input.attributes,\n );\n\n attributes = await this.repository.save(attributes);\n break;\n case ProvisioningEntityStrategyType.REPLACE:\n input.attributes.id = attributes.id;\n attributes = await this.repository.save(this.repository.create(input.attributes));\n break;\n }\n } else {\n attributes = await this.repository.save(this.repository.create(input.attributes));\n }\n\n return {\n ...input,\n attributes,\n };\n }\n}\n"],"mappings":";;;;;;;;;AAcA,IAAaI,gCAAb,cAAmDD,6BAAAA;CACrCE;CAEV,YAAYC,KAA2C;EACnD,MAAK;EAEL,KAAKD,aAAaC,IAAID;CAC1B;CAEA,MAAME,YAAYC,OAAkE;EAChF,MAAMC,WAAWP,oCAAoCM,MAAMC,QAAQ;EAEnE,IAAIC,aAAa,MAAM,KAAKL,WAAWM,UAAU;GAC7CC,MAAMJ,MAAME,WAAWE;GACvBC,UAAUL,MAAME,WAAWG,YAAY;EAC3C,CAAA;EAEA,IAAIJ,SAASK,SAASb,+BAA+Bc,QAAQ;GACzD,IAAIL,YACA,MAAM,KAAKL,WAAWW,OAAON,UAAAA;GAEjC,OAAO;IACH,GAAGF;IACHE,YAAYA,cAAcF,MAAME;GACpC;EACJ;EAEA,IAAIA,YACA,QAAQD,SAASK,MAAjB;GACI,KAAKb,+BAA+BgB;IAChCP,aAAa,KAAKL,WAAWa,MACzBR,YACAD,SAASC,aACLV,WAAWQ,MAAME,YAAYD,SAASC,UAAU,IAChDF,MAAME,UAAU;IAGxBA,aAAa,MAAM,KAAKL,WAAWc,KAAKT,UAAAA;IACxC;GACJ,KAAKT,+BAA+BmB;IAChCZ,MAAME,WAAWW,KAAKX,WAAWW;IACjCX,aAAa,MAAM,KAAKL,WAAWc,KAAK,KAAKd,WAAWiB,OAAOd,MAAME,UAAU,CAAA;IAC/E;EACR;OAEAA,aAAa,MAAM,KAAKL,WAAWc,KAAK,KAAKd,WAAWiB,OAAOd,MAAME,UAAU,CAAA;EAGnF,OAAO;GACH,GAAGF;GACHE;EACJ;CACJ;AACJ"}
1
+ {"version":3,"file":"module.mjs","names":["pickRecord","ProvisioningEntityStrategyType","normalizeEntityProvisioningStrategy","BaseProvisioningSynchronizer","ScopeProvisioningSynchronizer","repository","ctx","synchronize","input","canonicalizeName","attributes","strategy","findOneBy","name","realm_id","type","ABSENT","remove","MERGE","merge","save","REPLACE","id","create"],"sources":["../../../../../src/core/provisioning/synchronizer/scope/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { pickRecord } from '@authup/kit';\nimport type { IScopeRepository } from '../../../entities/index.ts';\nimport type { ScopeProvisioningEntity } from '../../entities/index.ts';\nimport { ProvisioningEntityStrategyType, normalizeEntityProvisioningStrategy } from '../../strategy/index.ts';\nimport { BaseProvisioningSynchronizer } from '../base.ts';\nimport type { ScopeProvisioningSynchronizerContext } from './types.ts';\n\nexport class ScopeProvisioningSynchronizer extends BaseProvisioningSynchronizer<ScopeProvisioningEntity> {\n protected repository : IScopeRepository;\n\n constructor(ctx: ScopeProvisioningSynchronizerContext) {\n super();\n\n this.repository = ctx.repository;\n }\n\n async synchronize(input: ScopeProvisioningEntity): Promise<ScopeProvisioningEntity> {\n this.canonicalizeName(input.attributes);\n\n const strategy = normalizeEntityProvisioningStrategy(input.strategy);\n\n let attributes = await this.repository.findOneBy({\n name: input.attributes.name,\n realm_id: input.attributes.realm_id || null,\n });\n\n if (strategy.type === ProvisioningEntityStrategyType.ABSENT) {\n if (attributes) {\n await this.repository.remove(attributes);\n }\n return {\n ...input,\n attributes: attributes || input.attributes, \n };\n }\n\n if (attributes) {\n switch (strategy.type) {\n case ProvisioningEntityStrategyType.MERGE:\n attributes = this.repository.merge(\n attributes,\n strategy.attributes ?\n pickRecord(input.attributes, strategy.attributes) :\n input.attributes,\n );\n\n attributes = await this.repository.save(attributes);\n break;\n case ProvisioningEntityStrategyType.REPLACE:\n input.attributes.id = attributes.id;\n attributes = await this.repository.save(this.repository.create(input.attributes));\n break;\n }\n } else {\n attributes = await this.repository.save(this.repository.create(input.attributes));\n }\n\n return {\n ...input,\n attributes,\n };\n }\n}\n"],"mappings":";;;;;;;;;AAcA,IAAaI,gCAAb,cAAmDD,6BAAAA;CACrCE;CAEV,YAAYC,KAA2C;EACnD,MAAK;EAEL,KAAKD,aAAaC,IAAID;CAC1B;CAEA,MAAME,YAAYC,OAAkE;EAChF,KAAKC,iBAAiBD,MAAME,UAAU;EAEtC,MAAMC,WAAWT,oCAAoCM,MAAMG,QAAQ;EAEnE,IAAID,aAAa,MAAM,KAAKL,WAAWO,UAAU;GAC7CC,MAAML,MAAME,WAAWG;GACvBC,UAAUN,MAAME,WAAWI,YAAY;EAC3C,CAAA;EAEA,IAAIH,SAASI,SAASd,+BAA+Be,QAAQ;GACzD,IAAIN,YACA,MAAM,KAAKL,WAAWY,OAAOP,UAAAA;GAEjC,OAAO;IACH,GAAGF;IACHE,YAAYA,cAAcF,MAAME;GACpC;EACJ;EAEA,IAAIA,YACA,QAAQC,SAASI,MAAjB;GACI,KAAKd,+BAA+BiB;IAChCR,aAAa,KAAKL,WAAWc,MACzBT,YACAC,SAASD,aACLV,WAAWQ,MAAME,YAAYC,SAASD,UAAU,IAChDF,MAAME,UAAU;IAGxBA,aAAa,MAAM,KAAKL,WAAWe,KAAKV,UAAAA;IACxC;GACJ,KAAKT,+BAA+BoB;IAChCb,MAAME,WAAWY,KAAKZ,WAAWY;IACjCZ,aAAa,MAAM,KAAKL,WAAWe,KAAK,KAAKf,WAAWkB,OAAOf,MAAME,UAAU,CAAA;IAC/E;EACR;OAEAA,aAAa,MAAM,KAAKL,WAAWe,KAAK,KAAKf,WAAWkB,OAAOf,MAAME,UAAU,CAAA;EAGnF,OAAO;GACH,GAAGF;GACHE;EACJ;CACJ;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/core/provisioning/synchronizer/user/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,UAAU,EACV,IAAI,EACJ,cAAc,EACd,QAAQ,EACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EACR,iBAAiB,EACjB,eAAe,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAEtE,qBAAa,4BAA6B,SAAQ,4BAA4B,CAAC,sBAAsB,CAAC;IAClG,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC;IAE1C,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAE9C,SAAS,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAErE,SAAS,CAAC,YAAY,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAEzD,SAAS,CAAC,kBAAkB,EAAE,gCAAgC,CAAC,cAAc,CAAC,CAAC;IAE/E,SAAS,CAAC,YAAY,EAAE,gCAAgC,CAAC,QAAQ,CAAC,CAAC;gBAEvD,GAAG,EAAE,mCAAmC;IAqB9C,WAAW,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CA+IpF"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/core/provisioning/synchronizer/user/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,UAAU,EACV,IAAI,EACJ,cAAc,EACd,QAAQ,EACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EACR,iBAAiB,EACjB,eAAe,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAEtE,qBAAa,4BAA6B,SAAQ,4BAA4B,CAAC,sBAAsB,CAAC;IAClG,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC;IAE1C,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAE9C,SAAS,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAErE,SAAS,CAAC,YAAY,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAEzD,SAAS,CAAC,kBAAkB,EAAE,gCAAgC,CAAC,cAAc,CAAC,CAAC;IAE/E,SAAS,CAAC,YAAY,EAAE,gCAAgC,CAAC,QAAQ,CAAC,CAAC;gBAEvD,GAAG,EAAE,mCAAmC;IAqB9C,WAAW,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAiJpF"}
@@ -35,6 +35,7 @@ var UserProvisioningSynchronizer = class extends BaseProvisioningSynchronizer {
35
35
  });
36
36
  }
37
37
  async synchronize(input) {
38
+ this.canonicalizeName(input.attributes);
38
39
  const strategy = normalizeEntityProvisioningStrategy(input.strategy);
39
40
  let attributes = await this.userRepository.findOneBy({
40
41
  name: input.attributes.name,
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["buildUserFakeEmail","pickRecord","ProvisioningEntityStrategyType","normalizeEntityProvisioningStrategy","BaseProvisioningSynchronizer","ProvisioningEntityResolver","ProvisioningJunctionSynchronizer","UserProvisioningSynchronizer","userRepository","clientRepository","permissionResolver","roleResolver","permissionJunction","roleJunction","ctx","permissionRepository","roleRepository","repository","userPermissionRepository","ownerKey","ownerRealmKey","userRoleRepository","synchronize","input","strategy","attributes","findOneBy","name","realm_id","type","ABSENT","remove","MERGE","includes","email","merge","save","REPLACE","undefined","id","create","permissions","resolveGlobal","relations","globalPermissions","resolveRealm","realmPermissions","clientPermissions","clientKeys","Object","keys","clientKey","client","entities","resolveClient","push","length","roles","globalRoles","realmRoles","clientRoles"],"sources":["../../../../../src/core/provisioning/synchronizer/user/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n Permission, \n Role, \n UserPermission, \n UserRole,\n} from '@authup/core-kit';\nimport { buildUserFakeEmail } from '@authup/core-kit';\nimport { pickRecord } from '@authup/kit';\nimport type {\n IClientRepository,\n IUserRepository,\n} from '../../../entities/index.ts';\nimport type { UserProvisioningEntity } from '../../entities/user/index.ts';\nimport { ProvisioningEntityStrategyType, normalizeEntityProvisioningStrategy } from '../../strategy/index.ts';\nimport { BaseProvisioningSynchronizer } from '../base.ts';\nimport { ProvisioningEntityResolver } from '../entity-resolver.ts';\nimport { ProvisioningJunctionSynchronizer } from '../junction-synchronizer.ts';\nimport type { UserProvisioningSynchronizerContext } from './types.ts';\n\nexport class UserProvisioningSynchronizer extends BaseProvisioningSynchronizer<UserProvisioningEntity> {\n protected userRepository: IUserRepository;\n\n protected clientRepository: IClientRepository;\n\n protected permissionResolver: ProvisioningEntityResolver<Permission>;\n\n protected roleResolver: ProvisioningEntityResolver<Role>;\n\n protected permissionJunction: ProvisioningJunctionSynchronizer<UserPermission>;\n\n protected roleJunction: ProvisioningJunctionSynchronizer<UserRole>;\n\n constructor(ctx: UserProvisioningSynchronizerContext) {\n super();\n\n this.userRepository = ctx.userRepository;\n this.clientRepository = ctx.clientRepository;\n\n this.permissionResolver = new ProvisioningEntityResolver(ctx.permissionRepository);\n this.roleResolver = new ProvisioningEntityResolver(ctx.roleRepository);\n\n this.permissionJunction = new ProvisioningJunctionSynchronizer({\n repository: ctx.userPermissionRepository,\n ownerKey: 'user_id',\n ownerRealmKey: 'user_realm_id',\n });\n this.roleJunction = new ProvisioningJunctionSynchronizer({\n repository: ctx.userRoleRepository,\n ownerKey: 'user_id',\n ownerRealmKey: 'user_realm_id',\n });\n }\n\n async synchronize(input: UserProvisioningEntity): Promise<UserProvisioningEntity> {\n const strategy = normalizeEntityProvisioningStrategy(input.strategy);\n\n let attributes = await this.userRepository.findOneBy({\n name: input.attributes.name,\n realm_id: input.attributes.realm_id || null,\n });\n\n if (strategy.type === ProvisioningEntityStrategyType.ABSENT) {\n if (attributes) {\n await this.userRepository.remove(attributes);\n }\n return {\n ...input,\n attributes: attributes || input.attributes, \n };\n }\n\n if (attributes) {\n switch (strategy.type) {\n case ProvisioningEntityStrategyType.MERGE:\n if (\n strategy.attributes &&\n strategy.attributes.includes('email')\n ) {\n input.attributes.email = input.attributes.email ||\n attributes.email ||\n buildUserFakeEmail(input.attributes.name || attributes.name);\n }\n\n attributes = this.userRepository.merge(\n attributes,\n strategy.attributes ?\n pickRecord(input.attributes, strategy.attributes) :\n input.attributes,\n );\n\n attributes = await this.userRepository.save(attributes);\n break;\n case ProvisioningEntityStrategyType.REPLACE:\n input.attributes.email = input.attributes.email ||\n attributes.email ||\n (input.attributes.name ? buildUserFakeEmail(input.attributes.name) : undefined);\n\n input.attributes.id = attributes.id;\n attributes = await this.userRepository.save(this.userRepository.create(input.attributes));\n break;\n }\n } else {\n if (!input.attributes.email && input.attributes.name) {\n input.attributes.email = buildUserFakeEmail(input.attributes.name);\n }\n\n attributes = await this.userRepository.save(this.userRepository.create(input.attributes));\n }\n\n // Permissions (Global, Realm & Client)\n const permissions : Permission[] = [\n ...await this.permissionResolver.resolveGlobal(\n input.relations && input.relations.globalPermissions,\n ),\n ...(attributes.realm_id ?\n await this.permissionResolver.resolveRealm(\n input.relations && input.relations.realmPermissions,\n attributes.realm_id,\n ) :\n []),\n ];\n\n if (input.relations && input.relations.clientPermissions) {\n const clientKeys = Object.keys(input.relations.clientPermissions);\n for (const clientKey of clientKeys) {\n const client = await this.clientRepository.findOneBy({\n name: clientKey,\n realm_id: attributes.realm_id,\n });\n\n if (client) {\n const entities = await this.permissionResolver.resolveClient(\n input.relations.clientPermissions[clientKey],\n attributes.realm_id,\n client.id,\n );\n permissions.push(...entities);\n }\n }\n }\n\n if (permissions.length > 0) {\n await this.permissionJunction.synchronize(\n attributes,\n permissions,\n 'permission_id',\n 'permission_realm_id',\n );\n }\n\n // Roles (Global, Realm & Client)\n const roles : Role[] = [\n ...await this.roleResolver.resolveGlobal(\n input.relations && input.relations.globalRoles,\n ),\n ...(attributes.realm_id ?\n await this.roleResolver.resolveRealm(\n input.relations && input.relations.realmRoles,\n attributes.realm_id,\n ) :\n []),\n ];\n\n if (input.relations && input.relations.clientRoles) {\n const clientKeys = Object.keys(input.relations.clientRoles);\n for (const clientKey of clientKeys) {\n const client = await this.clientRepository.findOneBy({\n name: clientKey,\n realm_id: attributes.realm_id,\n });\n\n if (client) {\n const entities = await this.roleResolver.resolveClient(\n input.relations.clientRoles[clientKey],\n attributes.realm_id,\n client.id,\n );\n roles.push(...entities);\n }\n }\n }\n\n if (roles.length > 0) {\n await this.roleJunction.synchronize(\n attributes,\n roles,\n 'role_id',\n 'role_realm_id',\n );\n }\n\n return {\n ...input,\n attributes,\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.mjs","names":["buildUserFakeEmail","pickRecord","ProvisioningEntityStrategyType","normalizeEntityProvisioningStrategy","BaseProvisioningSynchronizer","ProvisioningEntityResolver","ProvisioningJunctionSynchronizer","UserProvisioningSynchronizer","userRepository","clientRepository","permissionResolver","roleResolver","permissionJunction","roleJunction","ctx","permissionRepository","roleRepository","repository","userPermissionRepository","ownerKey","ownerRealmKey","userRoleRepository","synchronize","input","canonicalizeName","attributes","strategy","findOneBy","name","realm_id","type","ABSENT","remove","MERGE","includes","email","merge","save","REPLACE","undefined","id","create","permissions","resolveGlobal","relations","globalPermissions","resolveRealm","realmPermissions","clientPermissions","clientKeys","Object","keys","clientKey","client","entities","resolveClient","push","length","roles","globalRoles","realmRoles","clientRoles"],"sources":["../../../../../src/core/provisioning/synchronizer/user/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2026-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n Permission, \n Role, \n UserPermission, \n UserRole,\n} from '@authup/core-kit';\nimport { buildUserFakeEmail } from '@authup/core-kit';\nimport { pickRecord } from '@authup/kit';\nimport type {\n IClientRepository,\n IUserRepository,\n} from '../../../entities/index.ts';\nimport type { UserProvisioningEntity } from '../../entities/user/index.ts';\nimport { ProvisioningEntityStrategyType, normalizeEntityProvisioningStrategy } from '../../strategy/index.ts';\nimport { BaseProvisioningSynchronizer } from '../base.ts';\nimport { ProvisioningEntityResolver } from '../entity-resolver.ts';\nimport { ProvisioningJunctionSynchronizer } from '../junction-synchronizer.ts';\nimport type { UserProvisioningSynchronizerContext } from './types.ts';\n\nexport class UserProvisioningSynchronizer extends BaseProvisioningSynchronizer<UserProvisioningEntity> {\n protected userRepository: IUserRepository;\n\n protected clientRepository: IClientRepository;\n\n protected permissionResolver: ProvisioningEntityResolver<Permission>;\n\n protected roleResolver: ProvisioningEntityResolver<Role>;\n\n protected permissionJunction: ProvisioningJunctionSynchronizer<UserPermission>;\n\n protected roleJunction: ProvisioningJunctionSynchronizer<UserRole>;\n\n constructor(ctx: UserProvisioningSynchronizerContext) {\n super();\n\n this.userRepository = ctx.userRepository;\n this.clientRepository = ctx.clientRepository;\n\n this.permissionResolver = new ProvisioningEntityResolver(ctx.permissionRepository);\n this.roleResolver = new ProvisioningEntityResolver(ctx.roleRepository);\n\n this.permissionJunction = new ProvisioningJunctionSynchronizer({\n repository: ctx.userPermissionRepository,\n ownerKey: 'user_id',\n ownerRealmKey: 'user_realm_id',\n });\n this.roleJunction = new ProvisioningJunctionSynchronizer({\n repository: ctx.userRoleRepository,\n ownerKey: 'user_id',\n ownerRealmKey: 'user_realm_id',\n });\n }\n\n async synchronize(input: UserProvisioningEntity): Promise<UserProvisioningEntity> {\n this.canonicalizeName(input.attributes);\n\n const strategy = normalizeEntityProvisioningStrategy(input.strategy);\n\n let attributes = await this.userRepository.findOneBy({\n name: input.attributes.name,\n realm_id: input.attributes.realm_id || null,\n });\n\n if (strategy.type === ProvisioningEntityStrategyType.ABSENT) {\n if (attributes) {\n await this.userRepository.remove(attributes);\n }\n return {\n ...input,\n attributes: attributes || input.attributes, \n };\n }\n\n if (attributes) {\n switch (strategy.type) {\n case ProvisioningEntityStrategyType.MERGE:\n if (\n strategy.attributes &&\n strategy.attributes.includes('email')\n ) {\n input.attributes.email = input.attributes.email ||\n attributes.email ||\n buildUserFakeEmail(input.attributes.name || attributes.name);\n }\n\n attributes = this.userRepository.merge(\n attributes,\n strategy.attributes ?\n pickRecord(input.attributes, strategy.attributes) :\n input.attributes,\n );\n\n attributes = await this.userRepository.save(attributes);\n break;\n case ProvisioningEntityStrategyType.REPLACE:\n input.attributes.email = input.attributes.email ||\n attributes.email ||\n (input.attributes.name ? buildUserFakeEmail(input.attributes.name) : undefined);\n\n input.attributes.id = attributes.id;\n attributes = await this.userRepository.save(this.userRepository.create(input.attributes));\n break;\n }\n } else {\n if (!input.attributes.email && input.attributes.name) {\n input.attributes.email = buildUserFakeEmail(input.attributes.name);\n }\n\n attributes = await this.userRepository.save(this.userRepository.create(input.attributes));\n }\n\n // Permissions (Global, Realm & Client)\n const permissions : Permission[] = [\n ...await this.permissionResolver.resolveGlobal(\n input.relations && input.relations.globalPermissions,\n ),\n ...(attributes.realm_id ?\n await this.permissionResolver.resolveRealm(\n input.relations && input.relations.realmPermissions,\n attributes.realm_id,\n ) :\n []),\n ];\n\n if (input.relations && input.relations.clientPermissions) {\n const clientKeys = Object.keys(input.relations.clientPermissions);\n for (const clientKey of clientKeys) {\n const client = await this.clientRepository.findOneBy({\n name: clientKey,\n realm_id: attributes.realm_id,\n });\n\n if (client) {\n const entities = await this.permissionResolver.resolveClient(\n input.relations.clientPermissions[clientKey],\n attributes.realm_id,\n client.id,\n );\n permissions.push(...entities);\n }\n }\n }\n\n if (permissions.length > 0) {\n await this.permissionJunction.synchronize(\n attributes,\n permissions,\n 'permission_id',\n 'permission_realm_id',\n );\n }\n\n // Roles (Global, Realm & Client)\n const roles : Role[] = [\n ...await this.roleResolver.resolveGlobal(\n input.relations && input.relations.globalRoles,\n ),\n ...(attributes.realm_id ?\n await this.roleResolver.resolveRealm(\n input.relations && input.relations.realmRoles,\n attributes.realm_id,\n ) :\n []),\n ];\n\n if (input.relations && input.relations.clientRoles) {\n const clientKeys = Object.keys(input.relations.clientRoles);\n for (const clientKey of clientKeys) {\n const client = await this.clientRepository.findOneBy({\n name: clientKey,\n realm_id: attributes.realm_id,\n });\n\n if (client) {\n const entities = await this.roleResolver.resolveClient(\n input.relations.clientRoles[clientKey],\n attributes.realm_id,\n client.id,\n );\n roles.push(...entities);\n }\n }\n }\n\n if (roles.length > 0) {\n await this.roleJunction.synchronize(\n attributes,\n roles,\n 'role_id',\n 'role_realm_id',\n );\n }\n\n return {\n ...input,\n attributes,\n };\n }\n}\n"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import type { IPolicyEvaluator, PermissionPolicyBinding, PolicyEvaluationContext, PolicyEvaluationResult } from '@authup/access';
2
- import { AttributesPolicyEvaluator, IdentityPolicyEvaluator, PermissionBindingPolicyValidator } from '@authup/access';
1
+ import type { IPolicyEvaluator, PermissionPolicyBindingAggregated, PolicyEvaluationContext, PolicyEvaluationResult } from '@authup/access';
2
+ import { IdentityPolicyEvaluator, PermissionBindingPolicyValidator, RealmMatchPolicyEvaluator } from '@authup/access';
3
3
  import type { IIdentityPermissionProvider } from '../../identity/permission/types.ts';
4
4
  export declare class PermissionBindingPolicyEvaluator implements IPolicyEvaluator {
5
5
  protected validator: PermissionBindingPolicyValidator;
6
6
  protected identityEvaluator: IdentityPolicyEvaluator;
7
- protected attributesEvaluator: AttributesPolicyEvaluator;
7
+ protected realmMatchEvaluator: RealmMatchPolicyEvaluator;
8
8
  protected identityPermissionProvider: IIdentityPermissionProvider;
9
9
  constructor(identityPermissionProvider: IIdentityPermissionProvider);
10
- accessData(ctx: PolicyEvaluationContext): Promise<PermissionPolicyBinding | null>;
10
+ accessData(ctx: PolicyEvaluationContext): Promise<PermissionPolicyBindingAggregated | null>;
11
11
  evaluate(value: Record<string, any>, ctx: PolicyEvaluationContext): Promise<PolicyEvaluationResult>;
12
12
  }
13
13
  //# sourceMappingURL=evaluator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../src/core/security/policy/evaluator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGR,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,yBAAyB,EAEzB,uBAAuB,EACvB,gCAAgC,EAMnC,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEtF,qBAAa,gCAAiC,YAAW,gBAAgB;IACrE,SAAS,CAAC,SAAS,EAAG,gCAAgC,CAAC;IAEvD,SAAS,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;IAErD,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;IAE1D,SAAS,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;gBAEtD,0BAA0B,EAAE,2BAA2B;IAO7D,UAAU,CAAC,GAAG,EAAE,uBAAuB,GAAI,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAiBlF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CA+E5G"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../src/core/security/policy/evaluator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACR,gBAAgB,EAChB,iCAAiC,EACjC,uBAAuB,EACvB,sBAAsB,EACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEH,uBAAuB,EACvB,gCAAgC,EAGhC,yBAAyB,EAI5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEtF,qBAAa,gCAAiC,YAAW,gBAAgB;IACrE,SAAS,CAAC,SAAS,EAAG,gCAAgC,CAAC;IAEvD,SAAS,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;IAErD,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;IAE1D,SAAS,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;gBAEtD,0BAA0B,EAAE,2BAA2B;IAO7D,UAAU,CAAC,GAAG,EAAE,uBAAuB,GAAI,OAAO,CAAC,iCAAiC,GAAG,IAAI,CAAC;IAiB5F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CA2G5G"}
@@ -1,17 +1,17 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
- import { AttributesPolicyEvaluator, BuiltInPolicyType, IdentityPolicyEvaluator, PermissionBindingPolicyValidator, PolicyEngine, PolicyIssueCode, definePolicyIssueItem, maybeInvertPolicyOutcome, mergePermissionPolicyBindings } from "@authup/access";
4
+ import { BuiltInPolicyType, IdentityPolicyEvaluator, PermissionBindingPolicyValidator, PolicyEngine, PolicyIssueCode, RealmMatchPolicyEvaluator, aggregatePermissionPolicyBindings, definePolicyIssueItem, maybeInvertPolicyOutcome } from "@authup/access";
5
5
  //#region src/core/security/policy/evaluator.ts
6
6
  var PermissionBindingPolicyEvaluator = class {
7
7
  validator;
8
8
  identityEvaluator;
9
- attributesEvaluator;
9
+ realmMatchEvaluator;
10
10
  identityPermissionProvider;
11
11
  constructor(identityPermissionProvider) {
12
12
  this.validator = new PermissionBindingPolicyValidator();
13
13
  this.identityEvaluator = new IdentityPolicyEvaluator();
14
- this.attributesEvaluator = new AttributesPolicyEvaluator();
14
+ this.realmMatchEvaluator = new RealmMatchPolicyEvaluator();
15
15
  this.identityPermissionProvider = identityPermissionProvider;
16
16
  }
17
17
  async accessData(ctx) {
@@ -47,22 +47,23 @@ var PermissionBindingPolicyEvaluator = class {
47
47
  return (binding.permission.realm_id ?? null) === (item.permission.realm_id ?? null) && (binding.permission.client_id ?? null) === (item.permission.client_id ?? null);
48
48
  }));
49
49
  if (identityBindings.length === 0) return { success: maybeInvertPolicyOutcome(false, policy.invert) };
50
- const bindingsMerged = mergePermissionPolicyBindings(identityBindings);
51
- if (bindingsMerged.length === 0) return { success: maybeInvertPolicyOutcome(false, policy.invert) };
52
- const policies = bindingsMerged.flatMap((b) => b.policies || []);
53
- if (policies.length === 0) return { success: maybeInvertPolicyOutcome(true, policy.invert) };
54
- if (!ctx.evaluators) return { success: maybeInvertPolicyOutcome(false, policy.invert) };
55
- const compositePolicy = {
56
- children: policies,
57
- type: BuiltInPolicyType.COMPOSITE
58
- };
59
- const outcome = await new PolicyEngine(ctx.evaluators).evaluate(compositePolicy, {
60
- ...ctx,
61
- path: [...ctx.path || [], ...compositePolicy.type ? [compositePolicy.type] : []]
62
- });
50
+ const [aggr] = aggregatePermissionPolicyBindings(identityBindings);
51
+ if (!aggr) return { success: maybeInvertPolicyOutcome(false, policy.invert) };
52
+ const issues = [];
53
+ for (const grant of aggr.grants) {
54
+ if (!(await this.realmMatchEvaluator.evaluate({ scope: grant.realm_scope }, ctx)).success) continue;
55
+ if (!grant.policy) return { success: maybeInvertPolicyOutcome(true, policy.invert) };
56
+ const outcome = await new PolicyEngine(ctx.evaluators).evaluate(grant.policy, {
57
+ ...ctx,
58
+ path: [...ctx.path || []]
59
+ });
60
+ if (outcome.success) return { success: maybeInvertPolicyOutcome(true, policy.invert) };
61
+ if (outcome.issues) issues.push(...outcome.issues);
62
+ }
63
+ const success = maybeInvertPolicyOutcome(false, policy.invert);
63
64
  return {
64
- ...outcome,
65
- success: maybeInvertPolicyOutcome(outcome.success, policy.invert)
65
+ success,
66
+ issues: success ? [] : issues
66
67
  };
67
68
  }
68
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.mjs","names":["AttributesPolicyEvaluator","BuiltInPolicyType","IdentityPolicyEvaluator","PermissionBindingPolicyValidator","PolicyEngine","PolicyIssueCode","definePolicyIssueItem","maybeInvertPolicyOutcome","mergePermissionPolicyBindings","PermissionBindingPolicyEvaluator","validator","identityEvaluator","attributesEvaluator","identityPermissionProvider","accessData","ctx","data","has","PERMISSION_BINDING","isValidated","get","set","setValidated","evaluate","value","policy","run","identity","success","issues","code","DATA_MISSING","message","path","binding","identityBindings","getFor","then","bindings","filter","item","permission","name","realm_id","client_id","length","invert","bindingsMerged","policies","flatMap","b","evaluators","compositePolicy","children","type","COMPOSITE","engine","outcome"],"sources":["../../../../src/core/security/policy/evaluator.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n BasePolicy,\n CompositePolicy,\n IPolicyEvaluator,\n PermissionPolicyBinding,\n PolicyEvaluationContext,\n PolicyEvaluationResult,\n} from '@authup/access';\nimport {\n AttributesPolicyEvaluator,\n BuiltInPolicyType,\n IdentityPolicyEvaluator,\n PermissionBindingPolicyValidator,\n PolicyEngine,\n PolicyIssueCode,\n definePolicyIssueItem,\n maybeInvertPolicyOutcome,\n mergePermissionPolicyBindings,\n} from '@authup/access';\nimport type { IIdentityPermissionProvider } from '../../identity/permission/types.ts';\n\nexport class PermissionBindingPolicyEvaluator implements IPolicyEvaluator {\n protected validator : PermissionBindingPolicyValidator;\n\n protected identityEvaluator: IdentityPolicyEvaluator;\n\n protected attributesEvaluator : AttributesPolicyEvaluator;\n\n protected identityPermissionProvider: IIdentityPermissionProvider;\n\n constructor(identityPermissionProvider: IIdentityPermissionProvider) {\n this.validator = new PermissionBindingPolicyValidator();\n this.identityEvaluator = new IdentityPolicyEvaluator();\n this.attributesEvaluator = new AttributesPolicyEvaluator();\n this.identityPermissionProvider = identityPermissionProvider;\n }\n\n async accessData(ctx: PolicyEvaluationContext) : Promise<PermissionPolicyBinding | null> {\n if (!ctx.data.has(BuiltInPolicyType.PERMISSION_BINDING)) {\n return null;\n }\n\n if (ctx.data.isValidated(BuiltInPolicyType.PERMISSION_BINDING)) {\n return ctx.data.get(BuiltInPolicyType.PERMISSION_BINDING);\n }\n\n const data = ctx.data.get<PermissionPolicyBinding>(BuiltInPolicyType.PERMISSION_BINDING);\n\n ctx.data.set(BuiltInPolicyType.PERMISSION_BINDING, data);\n ctx.data.setValidated(BuiltInPolicyType.PERMISSION_BINDING);\n\n return data;\n }\n\n async evaluate(value: Record<string, any>, ctx: PolicyEvaluationContext): Promise<PolicyEvaluationResult> {\n const policy = await this.validator.run(value);\n\n const identity = await this.identityEvaluator.accessData(ctx);\n if (!identity) {\n return {\n success: false,\n issues: [\n definePolicyIssueItem({\n code: PolicyIssueCode.DATA_MISSING,\n message: 'The data property identity is missing',\n path: ctx.path,\n }),\n ],\n };\n }\n const binding = await this.accessData(ctx);\n if (!binding) {\n return {\n success: false,\n issues: [\n definePolicyIssueItem({\n code: PolicyIssueCode.DATA_MISSING,\n message: 'The data property permission is missing',\n path: ctx.path,\n }),\n ],\n };\n }\n\n const identityBindings = await this.identityPermissionProvider.getFor(identity)\n .then((bindings) => bindings.filter((item) => {\n if (item.permission.name !== binding.permission.name) {\n return false;\n }\n\n return (binding.permission.realm_id ?? null) === (item.permission.realm_id ?? null) &&\n (binding.permission.client_id ?? null) === (item.permission.client_id ?? null);\n }));\n\n if (identityBindings.length === 0) {\n return { success: maybeInvertPolicyOutcome(false, policy.invert) };\n }\n\n const bindingsMerged = mergePermissionPolicyBindings(identityBindings);\n if (bindingsMerged.length === 0) {\n return { success: maybeInvertPolicyOutcome(false, policy.invert) };\n }\n\n const policies : BasePolicy[] = bindingsMerged\n .flatMap((b) => b.policies || []);\n\n if (policies.length === 0) {\n return { success: maybeInvertPolicyOutcome(true, policy.invert) };\n }\n\n if (!ctx.evaluators) {\n return { success: maybeInvertPolicyOutcome(false, policy.invert) };\n }\n\n const compositePolicy : CompositePolicy = {\n children: policies,\n type: BuiltInPolicyType.COMPOSITE,\n };\n\n const engine = new PolicyEngine(ctx.evaluators);\n const outcome = await engine.evaluate(compositePolicy, {\n ...ctx,\n path: [\n ...(ctx.path || []),\n ...(compositePolicy.type ? [compositePolicy.type] : []),\n ],\n });\n\n return {\n ...outcome,\n success: maybeInvertPolicyOutcome(outcome.success, policy.invert),\n };\n }\n}\n"],"mappings":";;;;;AA4BA,IAAaS,mCAAb,MAAaA;CACCC;CAEAC;CAEAC;CAEAC;CAEV,YAAYA,4BAAyD;EACjE,KAAKH,YAAY,IAAIP,iCAAAA;EACrB,KAAKQ,oBAAoB,IAAIT,wBAAAA;EAC7B,KAAKU,sBAAsB,IAAIZ,0BAAAA;EAC/B,KAAKa,6BAA6BA;CACtC;CAEA,MAAMC,WAAWC,KAAwE;EACrF,IAAI,CAACA,IAAIC,KAAKC,IAAIhB,kBAAkBiB,kBAAkB,GAClD,OAAO;EAGX,IAAIH,IAAIC,KAAKG,YAAYlB,kBAAkBiB,kBAAkB,GACzD,OAAOH,IAAIC,KAAKI,IAAInB,kBAAkBiB,kBAAkB;EAG5D,MAAMF,OAAOD,IAAIC,KAAKI,IAA6BnB,kBAAkBiB,kBAAkB;EAEvFH,IAAIC,KAAKK,IAAIpB,kBAAkBiB,oBAAoBF,IAAAA;EACnDD,IAAIC,KAAKM,aAAarB,kBAAkBiB,kBAAkB;EAE1D,OAAOF;CACX;CAEA,MAAMO,SAASC,OAA4BT,KAA+D;EACtG,MAAMU,SAAS,MAAM,KAAKf,UAAUgB,IAAIF,KAAAA;EAExC,MAAMG,WAAW,MAAM,KAAKhB,kBAAkBG,WAAWC,GAAAA;EACzD,IAAI,CAACY,UACD,OAAO;GACHC,SAAS;GACTC,QAAQ,CACJvB,sBAAsB;IAClBwB,MAAMzB,gBAAgB0B;IACtBC,SAAS;IACTC,MAAMlB,IAAIkB;GACd,CAAA,CAAA;EAER;EAEJ,MAAMC,UAAU,MAAM,KAAKpB,WAAWC,GAAAA;EACtC,IAAI,CAACmB,SACD,OAAO;GACHN,SAAS;GACTC,QAAQ,CACJvB,sBAAsB;IAClBwB,MAAMzB,gBAAgB0B;IACtBC,SAAS;IACTC,MAAMlB,IAAIkB;GACd,CAAA,CAAA;EAER;EAGJ,MAAME,mBAAmB,MAAM,KAAKtB,2BAA2BuB,OAAOT,QAAAA,CAAAA,CACjEU,MAAMC,aAAaA,SAASC,QAAQC,SAAAA;GACjC,IAAIA,KAAKC,WAAWC,SAASR,QAAQO,WAAWC,MAC5C,OAAO;GAGX,QAAQR,QAAQO,WAAWE,YAAY,WAAWH,KAAKC,WAAWE,YAAY,UACzET,QAAQO,WAAWG,aAAa,WAAWJ,KAAKC,WAAWG,aAAa;EACjF,CAAA,CAAA;EAEJ,IAAIT,iBAAiBU,WAAW,GAC5B,OAAO,EAAEjB,SAASrB,yBAAyB,OAAOkB,OAAOqB,MAAM,EAAE;EAGrE,MAAMC,iBAAiBvC,8BAA8B2B,gBAAAA;EACrD,IAAIY,eAAeF,WAAW,GAC1B,OAAO,EAAEjB,SAASrB,yBAAyB,OAAOkB,OAAOqB,MAAM,EAAE;EAGrE,MAAME,WAA0BD,eAC3BE,SAASC,MAAMA,EAAEF,YAAY,CAAA,CAAE;EAEpC,IAAIA,SAASH,WAAW,GACpB,OAAO,EAAEjB,SAASrB,yBAAyB,MAAMkB,OAAOqB,MAAM,EAAE;EAGpE,IAAI,CAAC/B,IAAIoC,YACL,OAAO,EAAEvB,SAASrB,yBAAyB,OAAOkB,OAAOqB,MAAM,EAAE;EAGrE,MAAMM,kBAAoC;GACtCC,UAAUL;GACVM,MAAMrD,kBAAkBsD;EAC5B;EAGA,MAAME,UAAU,MAAMD,IADHpD,aAAaW,IAAIoC,UACdK,CAAAA,CAAOjC,SAAS6B,iBAAiB;GACnD,GAAGrC;GACHkB,MAAM,CAAA,GACElB,IAAIkB,QAAQ,CAAA,GAAA,GACZmB,gBAAgBE,OAAO,CAACF,gBAAgBE,IAAAA,IAAQ,CAAA,CAAA;EAE5D,CAAA;EAEA,OAAO;GACH,GAAGG;GACH7B,SAASrB,yBAAyBkD,QAAQ7B,SAASH,OAAOqB,MAAM;EACpE;CACJ;AACJ"}
1
+ {"version":3,"file":"evaluator.mjs","names":["BuiltInPolicyType","IdentityPolicyEvaluator","PermissionBindingPolicyValidator","PolicyEngine","PolicyIssueCode","RealmMatchPolicyEvaluator","aggregatePermissionPolicyBindings","definePolicyIssueItem","maybeInvertPolicyOutcome","PermissionBindingPolicyEvaluator","validator","identityEvaluator","realmMatchEvaluator","identityPermissionProvider","accessData","ctx","data","has","PERMISSION_BINDING","isValidated","get","set","setValidated","evaluate","value","policy","run","identity","success","issues","code","DATA_MISSING","message","path","binding","identityBindings","getFor","then","bindings","filter","item","permission","name","realm_id","client_id","length","invert","aggr","grant","grants","realmOutcome","scope","realm_scope","engine","evaluators","outcome","push"],"sources":["../../../../src/core/security/policy/evaluator.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Issue } from 'validup';\nimport type {\n IPolicyEvaluator,\n PermissionPolicyBindingAggregated,\n PolicyEvaluationContext,\n PolicyEvaluationResult,\n} from '@authup/access';\nimport {\n BuiltInPolicyType,\n IdentityPolicyEvaluator,\n PermissionBindingPolicyValidator,\n PolicyEngine,\n PolicyIssueCode,\n RealmMatchPolicyEvaluator,\n aggregatePermissionPolicyBindings,\n definePolicyIssueItem,\n maybeInvertPolicyOutcome,\n} from '@authup/access';\nimport type { IIdentityPermissionProvider } from '../../identity/permission/types.ts';\n\nexport class PermissionBindingPolicyEvaluator implements IPolicyEvaluator {\n protected validator : PermissionBindingPolicyValidator;\n\n protected identityEvaluator: IdentityPolicyEvaluator;\n\n protected realmMatchEvaluator : RealmMatchPolicyEvaluator;\n\n protected identityPermissionProvider: IIdentityPermissionProvider;\n\n constructor(identityPermissionProvider: IIdentityPermissionProvider) {\n this.validator = new PermissionBindingPolicyValidator();\n this.identityEvaluator = new IdentityPolicyEvaluator();\n this.realmMatchEvaluator = new RealmMatchPolicyEvaluator();\n this.identityPermissionProvider = identityPermissionProvider;\n }\n\n async accessData(ctx: PolicyEvaluationContext) : Promise<PermissionPolicyBindingAggregated | null> {\n if (!ctx.data.has(BuiltInPolicyType.PERMISSION_BINDING)) {\n return null;\n }\n\n if (ctx.data.isValidated(BuiltInPolicyType.PERMISSION_BINDING)) {\n return ctx.data.get(BuiltInPolicyType.PERMISSION_BINDING);\n }\n\n const data = ctx.data.get<PermissionPolicyBindingAggregated>(BuiltInPolicyType.PERMISSION_BINDING);\n\n ctx.data.set(BuiltInPolicyType.PERMISSION_BINDING, data);\n ctx.data.setValidated(BuiltInPolicyType.PERMISSION_BINDING);\n\n return data;\n }\n\n async evaluate(value: Record<string, any>, ctx: PolicyEvaluationContext): Promise<PolicyEvaluationResult> {\n const policy = await this.validator.run(value);\n\n const identity = await this.identityEvaluator.accessData(ctx);\n if (!identity) {\n return {\n success: false,\n issues: [\n definePolicyIssueItem({\n code: PolicyIssueCode.DATA_MISSING,\n message: 'The data property identity is missing',\n path: ctx.path,\n }),\n ],\n };\n }\n const binding = await this.accessData(ctx);\n if (!binding) {\n return {\n success: false,\n issues: [\n definePolicyIssueItem({\n code: PolicyIssueCode.DATA_MISSING,\n message: 'The data property permission is missing',\n path: ctx.path,\n }),\n ],\n };\n }\n\n const identityBindings = await this.identityPermissionProvider.getFor(identity)\n .then((bindings) => bindings.filter((item) => {\n if (item.permission.name !== binding.permission.name) {\n return false;\n }\n\n return (binding.permission.realm_id ?? null) === (item.permission.realm_id ?? null) &&\n (binding.permission.client_id ?? null) === (item.permission.client_id ?? null);\n }));\n\n if (identityBindings.length === 0) {\n return { success: maybeInvertPolicyOutcome(false, policy.invert) };\n }\n\n const [aggr] = aggregatePermissionPolicyBindings(identityBindings);\n if (!aggr) {\n return { success: maybeInvertPolicyOutcome(false, policy.invert) };\n }\n\n // identityBindings is filtered to a single (name, realm_id, client_id) key, so the\n // aggregate yields exactly one entry whose `grants` are the actor's per-grant\n // (realm_scope, policy) disjunction terms; access is the DISJUNCTION over them:\n // ∃ grant . realmScopeMatches(grant.realm_scope, resource) ∧ (grant.policy passes)\n // Pairing each grant's realm reach with its OWN policy is what fixes both the mixed\n // policy-free + policy-bound UNDER-grant (a policy-free `own` grant must not mask a\n // policy-bound `any` grant's wider reach) and the symmetric OVER-grant (an `own`\n // grant's passing policy must not ride an `any` grant's wider reach).\n const issues : Issue[] = [];\n for (const grant of aggr.grants) {\n // Realm reach (coarse, actor-relative) — a SEPARATE factor from the grant's\n // policy, ANDed with it. The realm-match evaluator runs in SCOPE MODE: it reads the\n // resource realm from ctx.data[REALM_MATCH] (fallback ATTRIBUTES.realm_id) and\n // neutral-passes when absent (preEvaluate / gate checks / realm-less resources) —\n // key-PRESENCE is the discriminator. Invoked DIRECTLY (not via PolicyEngine —\n // REALM_MATCH is in policiesExcluded, so the engine would skip it).\n const realmOutcome = await this.realmMatchEvaluator.evaluate(\n { scope: grant.realm_scope },\n ctx,\n );\n if (!realmOutcome.success) {\n continue;\n }\n\n if (!grant.policy) {\n // Reach matches and this grant carries no further restriction.\n return { success: maybeInvertPolicyOutcome(true, policy.invert) };\n }\n\n // Missing evaluators is a misconfiguration: let the engine fail CLOSED with a\n // surfaced POLICY_EVALUATOR_NOT_FOUND issue (new PolicyEngine(undefined) defaults\n // to an empty registry, so grant.policy resolves to no evaluator) rather than\n // swallowing the grant with a silent issue-less deny.\n const engine = new PolicyEngine(ctx.evaluators);\n const outcome = await engine.evaluate(grant.policy, {\n ...ctx,\n path: [\n ...(ctx.path || []),\n ],\n });\n\n if (outcome.success) {\n return { success: maybeInvertPolicyOutcome(true, policy.invert) };\n }\n\n if (outcome.issues) {\n issues.push(...outcome.issues);\n }\n }\n\n // No grant term satisfied (reach ∧ policies). Apply `invert` ONCE to the aggregated\n // disjunction outcome — never per term, which would corrupt the quantifier.\n const success = maybeInvertPolicyOutcome(false, policy.invert);\n return {\n success,\n issues: success ? [] : issues,\n };\n }\n}\n"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -50,6 +50,7 @@ import { IdentityProviderRoleSubscriber } from "./adapters/database/domains/iden
50
50
  import { RobotEntity } from "./adapters/database/domains/robot/entity.mjs";
51
51
  import { RobotSubscriber } from "./adapters/database/domains/robot/subscriber.mjs";
52
52
  import { SessionEntity } from "./adapters/database/domains/session/entity.mjs";
53
+ import { SessionTokenEntity } from "./adapters/database/domains/session-token/entity.mjs";
53
54
  import { PermissionPolicyEntity } from "./adapters/database/domains/permission-policy/entity.mjs";
54
55
  import { RobotPermissionEntity } from "./adapters/database/domains/robot-permission/entity.mjs";
55
56
  import { RobotPermissionSubscriber } from "./adapters/database/domains/robot-permission/subscriber.mjs";
@@ -104,7 +105,7 @@ import { ComponentsModule } from "./app/modules/components/module.mjs";
104
105
  import { HTTPInjectionKey } from "./app/modules/http/constants.mjs";
105
106
  import { RequestHandlerOperation } from "./adapters/http/request/constants.mjs";
106
107
  import { setRequestPermissionEvaluator, useRequestPermissionEvaluator } from "./adapters/http/request/permission/helper.mjs";
107
- import { RequestIdentity, isRequestIdentityMasterRealmMember, setRequestIdentity, useRequestIdentity, useRequestIdentityOrFail } from "./adapters/http/request/helpers/identity.mjs";
108
+ import { RequestIdentity, setRequestIdentity, useRequestIdentity, useRequestIdentityOrFail } from "./adapters/http/request/helpers/identity.mjs";
108
109
  import { buildActorContext } from "./adapters/http/request/helpers/actor.mjs";
109
110
  import { getBodyRealmID } from "./adapters/http/request/helpers/body-realm-id.mjs";
110
111
  import { LOCALE_COOKIE, useRequestLocale } from "./adapters/http/request/helpers/locale.mjs";
@@ -113,17 +114,9 @@ import { getRequestParamID, getRequestStringParam, getRequestStringParamOrFail,
113
114
  import { applyRouteRealmIDToBody, getRequestRealmID, setRequestRealmID } from "./adapters/http/request/helpers/realm-id.mjs";
114
115
  import { sanitizeRelativeRedirect } from "./adapters/http/request/helpers/redirect.mjs";
115
116
  import { setRequestScopes, useRequestScopes } from "./adapters/http/request/helpers/scopes.mjs";
117
+ import { setRequestSessionId, useRequestSessionId } from "./adapters/http/request/helpers/session-id.mjs";
116
118
  import { setRequestToken, useRequestToken } from "./adapters/http/request/helpers/token.mjs";
117
119
  import { RequestPermissionEvaluator } from "./adapters/http/request/permission/module.mjs";
118
- import { HTTPOAuth2Authorizer } from "./adapters/http/adapters/oauth2/authorization/module.mjs";
119
- import { extractClientCredentialsFromRequest } from "./adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs";
120
- import { guessOauth2GrantTypeByRequest } from "./adapters/http/adapters/oauth2/grant-types/utils/guess.mjs";
121
- import { HTTPOAuth2AuthorizeGrant } from "./adapters/http/adapters/oauth2/grant-types/authorize.mjs";
122
- import { HTTPClientCredentialsGrant } from "./adapters/http/adapters/oauth2/grant-types/client-credentials.mjs";
123
- import { HTTPOAuth2IdentityGrantType } from "./adapters/http/adapters/oauth2/grant-types/identity.mjs";
124
- import { HTTPPasswordGrant } from "./adapters/http/adapters/oauth2/grant-types/password.mjs";
125
- import { HTTPOAuth2RefreshTokenGrant } from "./adapters/http/adapters/oauth2/grant-types/refresh_token.mjs";
126
- import { HTTPRobotCredentialsGrant } from "./adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs";
127
120
  import { AuthorizationMiddleware } from "./adapters/http/middleware/built-in/authorization/module.mjs";
128
121
  import { createAuthorizationMiddleware } from "./adapters/http/middleware/built-in/authorization/factory.mjs";
129
122
  import { ForceLoggedInMiddleware } from "./adapters/http/middleware/built-in/loggedin/module.mjs";
@@ -134,11 +127,21 @@ import { VITE_SERVER_STORE_KEY, registerAssetsMiddleware } from "./adapters/http
134
127
  import { registerBasicMiddleware } from "./adapters/http/middleware/built-in/basic.mjs";
135
128
  import { registerCorsMiddleware } from "./adapters/http/middleware/built-in/cors.mjs";
136
129
  import { registerErrorMiddleware } from "./adapters/http/middleware/built-in/error.mjs";
137
- import { createLoggerMiddleware } from "./adapters/http/middleware/built-in/logger.mjs";
130
+ import { createLoggerMiddleware, redactSensitiveURLParams } from "./adapters/http/middleware/built-in/logger.mjs";
138
131
  import { registerPrometheusMiddleware } from "./adapters/http/middleware/built-in/prometheus.mjs";
139
132
  import { registerRateLimitMiddleware } from "./adapters/http/middleware/built-in/rate-limit.mjs";
140
133
  import { createSwaggerMiddleware } from "./adapters/http/middleware/built-in/swagger.mjs";
141
134
  import { UI_HTTP_CLIENT_FACTORY_STORE_KEY, registerUIHttpClientMiddleware } from "./adapters/http/middleware/built-in/ui-http-client.mjs";
135
+ import { HTTPOAuth2Authorizer } from "./adapters/http/adapters/oauth2/authorization/module.mjs";
136
+ import { extractClientCredentialsFromRequest, readStringField } from "./adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs";
137
+ import { guessOauth2GrantTypeByRequest } from "./adapters/http/adapters/oauth2/grant-types/utils/guess.mjs";
138
+ import { readRealmHint } from "./adapters/http/adapters/oauth2/grant-types/utils/realm.mjs";
139
+ import { HTTPOAuth2AuthorizeGrant } from "./adapters/http/adapters/oauth2/grant-types/authorize.mjs";
140
+ import { HTTPClientCredentialsGrant } from "./adapters/http/adapters/oauth2/grant-types/client-credentials.mjs";
141
+ import { HTTPOAuth2IdentityGrantType } from "./adapters/http/adapters/oauth2/grant-types/identity.mjs";
142
+ import { HTTPPasswordGrant } from "./adapters/http/adapters/oauth2/grant-types/password.mjs";
143
+ import { HTTPOAuth2RefreshTokenGrant } from "./adapters/http/adapters/oauth2/grant-types/refresh_token.mjs";
144
+ import { HTTPRobotCredentialsGrant } from "./adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs";
142
145
  import { ClientController } from "./adapters/http/controllers/entities/client/module.mjs";
143
146
  import { ClientPermissionController } from "./adapters/http/controllers/entities/client-permission/module.mjs";
144
147
  import { ClientPermissionRequestValidator } from "./adapters/http/controllers/entities/client-permission/utils/validation.mjs";
@@ -154,6 +157,7 @@ import { ActivateController } from "./adapters/http/controllers/workflows/activa
154
157
  import { AuthorizeController } from "./adapters/http/controllers/workflows/authorize/module.mjs";
155
158
  import { getJwkRouteHandler, getJwksRouteHandler } from "./adapters/http/controllers/workflows/jwks/handlers/read.mjs";
156
159
  import { JwkController } from "./adapters/http/controllers/workflows/jwks/module.mjs";
160
+ import { LogoutController } from "./adapters/http/controllers/workflows/logout/module.mjs";
157
161
  import { OpenIDController } from "./adapters/http/controllers/workflows/openid/module.mjs";
158
162
  import { PasswordForgotController } from "./adapters/http/controllers/workflows/password-forgot/module.mjs";
159
163
  import { PasswordResetController } from "./adapters/http/controllers/workflows/password-reset/module.mjs";
@@ -175,6 +179,7 @@ import { PolicyController } from "./adapters/http/controllers/entities/policy/mo
175
179
  import { PolicyAttributesValidator } from "./adapters/http/controllers/entities/policy/utils/attributes-validator.mjs";
176
180
  import { PolicyValidator } from "./adapters/http/controllers/entities/policy/utils/validation.mjs";
177
181
  import { ScopeController } from "./adapters/http/controllers/entities/scope/module.mjs";
182
+ import { SessionController } from "./adapters/http/controllers/entities/session/module.mjs";
178
183
  import { UserController } from "./adapters/http/controllers/entities/user/module.mjs";
179
184
  import { UserAttributeController } from "./adapters/http/controllers/entities/user-attribute/module.mjs";
180
185
  import { UserAttributeRequestValidator } from "./adapters/http/controllers/entities/user-attribute/utils/validation.mjs";
@@ -213,4 +218,4 @@ import { defineCLIResetCommand } from "./cli/commands/reset.mjs";
213
218
  import { defineCLIStartCommand } from "./cli/commands/start.mjs";
214
219
  import "./cli/commands/index.mjs";
215
220
  import "reflect-metadata";
216
- export { ActivateController, ApplicationBuilder, AuthenticationInjectionKey, AuthenticationModule, AuthorizationMiddleware, AuthorizeController, CacheInjectionKey, CacheModule, CachePrefix, ClientController, ClientEntity, ClientIdentityRepository, ClientPermissionController, ClientPermissionEntity, ClientPermissionRepositoryAdapter, ClientPermissionRequestValidator, ClientPermissionSubscriber, ClientRepositoryAdapter, ClientRoleController, ClientRoleEntity, ClientRoleRepositoryAdapter, ClientRoleRequestValidator, ClientRoleSubscriber, ClientScopeController, ClientScopeEntity, ClientScopeRepositoryAdapter, ClientScopeRequestValidator, ClientScopeSubscriber, ClientSubscriber, ComponentsModule, CompositeProvisioningSource, ConfigEnvironmentVariableName, ConfigInjectionKey, ConfigModule, DataSourceOptionsBuilder, DatabaseConflictError, DatabaseInjectionKey, DatabaseModule, DatabaseQueryResultCache, DefaultProvisioningSource, EntitySubscriber, FileProvisioningSource, ForceLoggedInMiddleware, ForceUserLoggedInMiddleware, HTTPClientCredentialsGrant, HTTPInjectionKey, HTTPModule, HTTPOAuth2AuthorizeGrant, HTTPOAuth2Authorizer, HTTPOAuth2IdentityGrantType, HTTPOAuth2RefreshTokenGrant, HTTPPasswordGrant, HTTPRobotCredentialsGrant, IdentityInjectionKey, IdentityModule, IdentityProviderAccountEntity, IdentityProviderAccountRepository, IdentityProviderAccountSubscriber, IdentityProviderAttributeEntity, IdentityProviderAttributeMappingEntity, IdentityProviderAttributeMappingRepository, IdentityProviderAttributeSubscriber, IdentityProviderController, IdentityProviderEntity, IdentityProviderPermissionMappingEntity, IdentityProviderPermissionMappingRepository, IdentityProviderRepository, IdentityProviderRepositoryAdapter, IdentityProviderRoleMappingController, IdentityProviderRoleMappingEntity, IdentityProviderRoleMappingRepository, IdentityProviderRoleMappingRepositoryAdapter, IdentityProviderRoleSubscriber, IdentityProviderSubscriber, JwkController, KeyEntity, LDAPInjectionKey, LOCALE_COOKIE, LdapModule, LoggerInjectionKey, LoggerModule, MailInjectionKey, MailModule, MailTemplateRendererInjectionKey, ModuleName, OAuth2InjectionToken, OAuth2Module, OpenIDController, PasswordForgotController, PasswordResetController, PermissionController, PermissionDatabaseProvider, PermissionEntity, PermissionPolicyController, PermissionPolicyEntity, PermissionPolicyRepositoryAdapter, PermissionRepositoryAdapter, PermissionSubscriber, PolicyAttributeEntity, PolicyAttributeSubscriber, PolicyAttributesValidator, PolicyController, PolicyEntity, PolicyRepository, PolicyRepositoryAdapter, PolicySubscriber, PolicyValidator, ProvisionerModule, RealmController, RealmEntity, RealmRepository, RealmRepositoryAdapter, RealmResolverMiddleware, RealmSubscriber, RegisterController, RequestHandlerOperation, RequestIdentity, RequestPermissionEvaluator, RobotController, RobotEntity, RobotIdentityRepository, RobotPermissionController, RobotPermissionEntity, RobotPermissionRepositoryAdapter, RobotPermissionRequestValidator, RobotPermissionSubscriber, RobotRepositoryAdapter, RobotRoleController, RobotRoleEntity, RobotRoleRepositoryAdapter, RobotRoleRequestValidator, RobotRoleSubscriber, RobotSubscriber, RoleAttributeController, RoleAttributeEntity, RoleAttributeRepositoryAdapter, RoleAttributeRequestValidator, RoleAttributeSubscriber, RoleController, RoleEntity, RolePermissionController, RolePermissionEntity, RolePermissionRepositoryAdapter, RolePermissionRequestValidator, RolePermissionSubscriber, RoleRepository, RoleRepositoryAdapter, RoleSubscriber, RuntimeModule, ScopeController, ScopeEntity, ScopeRepositoryAdapter, ScopeSubscriber, SessionEntity, SessionRepository, StatusController, TokenController, UI_HTTP_CLIENT_FACTORY_STORE_KEY, UserAttributeController, UserAttributeEntity, UserAttributeRepositoryAdapter, UserAttributeRequestValidator, UserAttributeSubscriber, UserController, UserEntity, UserIdentityRepository, UserPermissionController, UserPermissionEntity, UserPermissionRepositoryAdapter, UserPermissionRequestValidator, UserPermissionSubscriber, UserRepository, UserRepositoryAdapter, UserRoleController, UserRoleEntity, UserRoleRepositoryAdapter, UserRoleRequestValidator, UserRoleSubscriber, UserSubscriber, VITE_SERVER_STORE_KEY, applyRouteRealmIDToBody, buildActorContext, buildEntityDestinations, createApplication, createAuthorizationMiddleware, createLoggerMiddleware, createRealmResolverMiddleware, createSwaggerMiddleware, dateToISOStringTransformer, defineCLIHealthCheckCommand, defineCLIMigrationCommand, defineCLIResetCommand, defineCLIStartCommand, expandToOrigins, extractClientCredentialsFromRequest, getAppOrigins, getBodyRealmID, getJwkRouteHandler, getJwksRouteHandler, getRequestParamID, getRequestRealmID, getRequestStringParam, getRequestStringParamOrFail, guessOauth2GrantTypeByRequest, isDatabaseTypeSupported, isDatabaseTypeSupportedForEnvironment, isRequestIdentityMasterRealmMember, readFromLocations, registerAssetsMiddleware, registerBasicMiddleware, registerCorsMiddleware, registerErrorMiddleware, registerPrometheusMiddleware, registerRateLimitMiddleware, registerUIHttpClientMiddleware, sanitizeRelativeRedirect, setRequestIdentity, setRequestPermissionEvaluator, setRequestRealmID, setRequestScopes, setRequestToken, useRequestIdentity, useRequestIdentityOrFail, useRequestLocale, useRequestParamID, useRequestPermissionEvaluator, useRequestScopes, useRequestToken };
221
+ export { ActivateController, ApplicationBuilder, AuthenticationInjectionKey, AuthenticationModule, AuthorizationMiddleware, AuthorizeController, CacheInjectionKey, CacheModule, CachePrefix, ClientController, ClientEntity, ClientIdentityRepository, ClientPermissionController, ClientPermissionEntity, ClientPermissionRepositoryAdapter, ClientPermissionRequestValidator, ClientPermissionSubscriber, ClientRepositoryAdapter, ClientRoleController, ClientRoleEntity, ClientRoleRepositoryAdapter, ClientRoleRequestValidator, ClientRoleSubscriber, ClientScopeController, ClientScopeEntity, ClientScopeRepositoryAdapter, ClientScopeRequestValidator, ClientScopeSubscriber, ClientSubscriber, ComponentsModule, CompositeProvisioningSource, ConfigEnvironmentVariableName, ConfigInjectionKey, ConfigModule, DataSourceOptionsBuilder, DatabaseConflictError, DatabaseInjectionKey, DatabaseModule, DatabaseQueryResultCache, DefaultProvisioningSource, EntitySubscriber, FileProvisioningSource, ForceLoggedInMiddleware, ForceUserLoggedInMiddleware, HTTPClientCredentialsGrant, HTTPInjectionKey, HTTPModule, HTTPOAuth2AuthorizeGrant, HTTPOAuth2Authorizer, HTTPOAuth2IdentityGrantType, HTTPOAuth2RefreshTokenGrant, HTTPPasswordGrant, HTTPRobotCredentialsGrant, IdentityInjectionKey, IdentityModule, IdentityProviderAccountEntity, IdentityProviderAccountRepository, IdentityProviderAccountSubscriber, IdentityProviderAttributeEntity, IdentityProviderAttributeMappingEntity, IdentityProviderAttributeMappingRepository, IdentityProviderAttributeSubscriber, IdentityProviderController, IdentityProviderEntity, IdentityProviderPermissionMappingEntity, IdentityProviderPermissionMappingRepository, IdentityProviderRepository, IdentityProviderRepositoryAdapter, IdentityProviderRoleMappingController, IdentityProviderRoleMappingEntity, IdentityProviderRoleMappingRepository, IdentityProviderRoleMappingRepositoryAdapter, IdentityProviderRoleSubscriber, IdentityProviderSubscriber, JwkController, KeyEntity, LDAPInjectionKey, LOCALE_COOKIE, LdapModule, LoggerInjectionKey, LoggerModule, LogoutController, MailInjectionKey, MailModule, MailTemplateRendererInjectionKey, ModuleName, OAuth2InjectionToken, OAuth2Module, OpenIDController, PasswordForgotController, PasswordResetController, PermissionController, PermissionDatabaseProvider, PermissionEntity, PermissionPolicyController, PermissionPolicyEntity, PermissionPolicyRepositoryAdapter, PermissionRepositoryAdapter, PermissionSubscriber, PolicyAttributeEntity, PolicyAttributeSubscriber, PolicyAttributesValidator, PolicyController, PolicyEntity, PolicyRepository, PolicyRepositoryAdapter, PolicySubscriber, PolicyValidator, ProvisionerModule, RealmController, RealmEntity, RealmRepository, RealmRepositoryAdapter, RealmResolverMiddleware, RealmSubscriber, RegisterController, RequestHandlerOperation, RequestIdentity, RequestPermissionEvaluator, RobotController, RobotEntity, RobotIdentityRepository, RobotPermissionController, RobotPermissionEntity, RobotPermissionRepositoryAdapter, RobotPermissionRequestValidator, RobotPermissionSubscriber, RobotRepositoryAdapter, RobotRoleController, RobotRoleEntity, RobotRoleRepositoryAdapter, RobotRoleRequestValidator, RobotRoleSubscriber, RobotSubscriber, RoleAttributeController, RoleAttributeEntity, RoleAttributeRepositoryAdapter, RoleAttributeRequestValidator, RoleAttributeSubscriber, RoleController, RoleEntity, RolePermissionController, RolePermissionEntity, RolePermissionRepositoryAdapter, RolePermissionRequestValidator, RolePermissionSubscriber, RoleRepository, RoleRepositoryAdapter, RoleSubscriber, RuntimeModule, ScopeController, ScopeEntity, ScopeRepositoryAdapter, ScopeSubscriber, SessionController, SessionEntity, SessionRepository, SessionTokenEntity, StatusController, TokenController, UI_HTTP_CLIENT_FACTORY_STORE_KEY, UserAttributeController, UserAttributeEntity, UserAttributeRepositoryAdapter, UserAttributeRequestValidator, UserAttributeSubscriber, UserController, UserEntity, UserIdentityRepository, UserPermissionController, UserPermissionEntity, UserPermissionRepositoryAdapter, UserPermissionRequestValidator, UserPermissionSubscriber, UserRepository, UserRepositoryAdapter, UserRoleController, UserRoleEntity, UserRoleRepositoryAdapter, UserRoleRequestValidator, UserRoleSubscriber, UserSubscriber, VITE_SERVER_STORE_KEY, applyRouteRealmIDToBody, buildActorContext, buildEntityDestinations, createApplication, createAuthorizationMiddleware, createLoggerMiddleware, createRealmResolverMiddleware, createSwaggerMiddleware, dateToISOStringTransformer, defineCLIHealthCheckCommand, defineCLIMigrationCommand, defineCLIResetCommand, defineCLIStartCommand, expandToOrigins, extractClientCredentialsFromRequest, getAppOrigins, getBodyRealmID, getJwkRouteHandler, getJwksRouteHandler, getRequestParamID, getRequestRealmID, getRequestStringParam, getRequestStringParamOrFail, guessOauth2GrantTypeByRequest, isDatabaseTypeSupported, isDatabaseTypeSupportedForEnvironment, readFromLocations, readRealmHint, readStringField, redactSensitiveURLParams, registerAssetsMiddleware, registerBasicMiddleware, registerCorsMiddleware, registerErrorMiddleware, registerPrometheusMiddleware, registerRateLimitMiddleware, registerUIHttpClientMiddleware, sanitizeRelativeRedirect, setRequestIdentity, setRequestPermissionEvaluator, setRequestRealmID, setRequestScopes, setRequestSessionId, setRequestToken, useRequestIdentity, useRequestIdentityOrFail, useRequestLocale, useRequestParamID, useRequestPermissionEvaluator, useRequestScopes, useRequestSessionId, useRequestToken };