@authup/server-core 1.0.0-beta.46 → 1.0.0-beta.48

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 (438) hide show
  1. package/LICENSE +661 -201
  2. package/README.md +3 -1
  3. package/dist/adapters/database/data-source/index.d.ts +0 -1
  4. package/dist/adapters/database/data-source/index.d.ts.map +1 -1
  5. package/dist/adapters/database/data-source/index.mjs +1 -2
  6. package/dist/adapters/database/domains/client/subscriber.d.ts +3 -6
  7. package/dist/adapters/database/domains/client/subscriber.d.ts.map +1 -1
  8. package/dist/adapters/database/domains/client/subscriber.mjs +21 -39
  9. package/dist/adapters/database/domains/client/subscriber.mjs.map +1 -1
  10. package/dist/adapters/database/domains/client-permission/subscriber.d.ts +3 -6
  11. package/dist/adapters/database/domains/client-permission/subscriber.d.ts.map +1 -1
  12. package/dist/adapters/database/domains/client-permission/subscriber.mjs +24 -49
  13. package/dist/adapters/database/domains/client-permission/subscriber.mjs.map +1 -1
  14. package/dist/adapters/database/domains/client-role/subscriber.d.ts +3 -6
  15. package/dist/adapters/database/domains/client-role/subscriber.d.ts.map +1 -1
  16. package/dist/adapters/database/domains/client-role/subscriber.mjs +24 -49
  17. package/dist/adapters/database/domains/client-role/subscriber.mjs.map +1 -1
  18. package/dist/adapters/database/domains/client-scope/subscriber.d.ts +3 -6
  19. package/dist/adapters/database/domains/client-scope/subscriber.d.ts.map +1 -1
  20. package/dist/adapters/database/domains/client-scope/subscriber.mjs +21 -36
  21. package/dist/adapters/database/domains/client-scope/subscriber.mjs.map +1 -1
  22. package/dist/adapters/database/domains/identity-provider/subscriber.d.ts +3 -6
  23. package/dist/adapters/database/domains/identity-provider/subscriber.d.ts.map +1 -1
  24. package/dist/adapters/database/domains/identity-provider/subscriber.mjs +21 -39
  25. package/dist/adapters/database/domains/identity-provider/subscriber.mjs.map +1 -1
  26. package/dist/adapters/database/domains/identity-provider-account/subscriber.d.ts +3 -6
  27. package/dist/adapters/database/domains/identity-provider-account/subscriber.d.ts.map +1 -1
  28. package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs +21 -36
  29. package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs.map +1 -1
  30. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.d.ts +3 -6
  31. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.d.ts.map +1 -1
  32. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs +21 -36
  33. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs.map +1 -1
  34. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.d.ts +3 -6
  35. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.d.ts.map +1 -1
  36. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs +21 -45
  37. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs.map +1 -1
  38. package/dist/adapters/database/domains/permission/subscriber.d.ts +3 -6
  39. package/dist/adapters/database/domains/permission/subscriber.d.ts.map +1 -1
  40. package/dist/adapters/database/domains/permission/subscriber.mjs +28 -47
  41. package/dist/adapters/database/domains/permission/subscriber.mjs.map +1 -1
  42. package/dist/adapters/database/domains/policy/subscriber.d.ts +3 -6
  43. package/dist/adapters/database/domains/policy/subscriber.d.ts.map +1 -1
  44. package/dist/adapters/database/domains/policy/subscriber.mjs +21 -36
  45. package/dist/adapters/database/domains/policy/subscriber.mjs.map +1 -1
  46. package/dist/adapters/database/domains/policy-attribute/subscriber.d.ts +3 -6
  47. package/dist/adapters/database/domains/policy-attribute/subscriber.d.ts.map +1 -1
  48. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs +24 -45
  49. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs.map +1 -1
  50. package/dist/adapters/database/domains/realm/subscriber.d.ts +3 -6
  51. package/dist/adapters/database/domains/realm/subscriber.d.ts.map +1 -1
  52. package/dist/adapters/database/domains/realm/subscriber.mjs +21 -36
  53. package/dist/adapters/database/domains/realm/subscriber.mjs.map +1 -1
  54. package/dist/adapters/database/domains/robot/subscriber.d.ts +3 -6
  55. package/dist/adapters/database/domains/robot/subscriber.d.ts.map +1 -1
  56. package/dist/adapters/database/domains/robot/subscriber.mjs +21 -39
  57. package/dist/adapters/database/domains/robot/subscriber.mjs.map +1 -1
  58. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts +3 -6
  59. package/dist/adapters/database/domains/robot-permission/subscriber.d.ts.map +1 -1
  60. package/dist/adapters/database/domains/robot-permission/subscriber.mjs +24 -49
  61. package/dist/adapters/database/domains/robot-permission/subscriber.mjs.map +1 -1
  62. package/dist/adapters/database/domains/robot-role/subscriber.d.ts +3 -6
  63. package/dist/adapters/database/domains/robot-role/subscriber.d.ts.map +1 -1
  64. package/dist/adapters/database/domains/robot-role/subscriber.mjs +24 -49
  65. package/dist/adapters/database/domains/robot-role/subscriber.mjs.map +1 -1
  66. package/dist/adapters/database/domains/role/subscriber.d.ts +3 -6
  67. package/dist/adapters/database/domains/role/subscriber.d.ts.map +1 -1
  68. package/dist/adapters/database/domains/role/subscriber.mjs +21 -41
  69. package/dist/adapters/database/domains/role/subscriber.mjs.map +1 -1
  70. package/dist/adapters/database/domains/role-attribute/subscriber.d.ts +3 -6
  71. package/dist/adapters/database/domains/role-attribute/subscriber.d.ts.map +1 -1
  72. package/dist/adapters/database/domains/role-attribute/subscriber.mjs +24 -45
  73. package/dist/adapters/database/domains/role-attribute/subscriber.mjs.map +1 -1
  74. package/dist/adapters/database/domains/role-permission/subscriber.d.ts +3 -6
  75. package/dist/adapters/database/domains/role-permission/subscriber.d.ts.map +1 -1
  76. package/dist/adapters/database/domains/role-permission/subscriber.mjs +24 -49
  77. package/dist/adapters/database/domains/role-permission/subscriber.mjs.map +1 -1
  78. package/dist/adapters/database/domains/scope/subscriber.d.ts +3 -6
  79. package/dist/adapters/database/domains/scope/subscriber.d.ts.map +1 -1
  80. package/dist/adapters/database/domains/scope/subscriber.mjs +17 -43
  81. package/dist/adapters/database/domains/scope/subscriber.mjs.map +1 -1
  82. package/dist/adapters/database/domains/user/subscriber.d.ts +3 -6
  83. package/dist/adapters/database/domains/user/subscriber.d.ts.map +1 -1
  84. package/dist/adapters/database/domains/user/subscriber.mjs +21 -39
  85. package/dist/adapters/database/domains/user/subscriber.mjs.map +1 -1
  86. package/dist/adapters/database/domains/user-attribute/subscriber.d.ts +3 -6
  87. package/dist/adapters/database/domains/user-attribute/subscriber.d.ts.map +1 -1
  88. package/dist/adapters/database/domains/user-attribute/subscriber.mjs +24 -43
  89. package/dist/adapters/database/domains/user-attribute/subscriber.mjs.map +1 -1
  90. package/dist/adapters/database/domains/user-permission/subscriber.d.ts +3 -6
  91. package/dist/adapters/database/domains/user-permission/subscriber.d.ts.map +1 -1
  92. package/dist/adapters/database/domains/user-permission/subscriber.mjs +24 -49
  93. package/dist/adapters/database/domains/user-permission/subscriber.mjs.map +1 -1
  94. package/dist/adapters/database/domains/user-role/subscriber.d.ts +3 -6
  95. package/dist/adapters/database/domains/user-role/subscriber.d.ts.map +1 -1
  96. package/dist/adapters/database/domains/user-role/subscriber.mjs +24 -49
  97. package/dist/adapters/database/domains/user-role/subscriber.mjs.map +1 -1
  98. package/dist/adapters/database/index.d.ts +1 -0
  99. package/dist/adapters/database/index.d.ts.map +1 -1
  100. package/dist/adapters/database/index.mjs +3 -2
  101. package/dist/adapters/database/subscriber/index.d.ts +3 -0
  102. package/dist/adapters/database/subscriber/index.d.ts.map +1 -0
  103. package/dist/adapters/database/subscriber/index.mjs +5 -0
  104. package/dist/adapters/database/subscriber/module.d.ts +19 -0
  105. package/dist/adapters/database/subscriber/module.d.ts.map +1 -0
  106. package/dist/adapters/database/subscriber/module.mjs +70 -0
  107. package/dist/adapters/database/subscriber/module.mjs.map +1 -0
  108. package/dist/adapters/database/subscriber/types.d.ts +15 -0
  109. package/dist/adapters/database/subscriber/types.d.ts.map +1 -0
  110. package/dist/adapters/database/subscriber/types.mjs +4 -0
  111. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +1 -1
  112. package/dist/adapters/http/controllers/workflows/activate/module.d.ts +8 -1
  113. package/dist/adapters/http/controllers/workflows/activate/module.d.ts.map +1 -1
  114. package/dist/adapters/http/controllers/workflows/activate/module.mjs +20 -1
  115. package/dist/adapters/http/controllers/workflows/activate/module.mjs.map +1 -1
  116. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  117. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +16 -37
  118. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  119. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts +2 -0
  120. package/dist/adapters/http/controllers/workflows/authorize/types.d.ts.map +1 -1
  121. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts +8 -1
  122. package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts.map +1 -1
  123. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +23 -2
  124. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
  125. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts +8 -1
  126. package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts.map +1 -1
  127. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +21 -1
  128. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
  129. package/dist/adapters/http/controllers/workflows/register/module.d.ts +8 -1
  130. package/dist/adapters/http/controllers/workflows/register/module.d.ts.map +1 -1
  131. package/dist/adapters/http/controllers/workflows/register/module.mjs +23 -2
  132. package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
  133. package/dist/adapters/http/controllers/workflows/status/module.d.ts +11 -4
  134. package/dist/adapters/http/controllers/workflows/status/module.d.ts.map +1 -1
  135. package/dist/adapters/http/controllers/workflows/status/module.mjs +17 -5
  136. package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
  137. package/dist/adapters/http/index.mjs +4 -1
  138. package/dist/adapters/http/middleware/built-in/cors.d.ts.map +1 -1
  139. package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
  140. package/dist/adapters/http/middleware/built-in/error.d.ts +6 -1
  141. package/dist/adapters/http/middleware/built-in/error.d.ts.map +1 -1
  142. package/dist/adapters/http/middleware/built-in/error.mjs +2 -3
  143. package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
  144. package/dist/adapters/http/middleware/built-in/index.d.ts +1 -0
  145. package/dist/adapters/http/middleware/built-in/index.d.ts.map +1 -1
  146. package/dist/adapters/http/middleware/built-in/index.mjs +2 -1
  147. package/dist/adapters/http/middleware/built-in/logger.d.ts +2 -0
  148. package/dist/adapters/http/middleware/built-in/logger.d.ts.map +1 -1
  149. package/dist/adapters/http/middleware/built-in/logger.mjs +1 -2
  150. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  151. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts +15 -0
  152. package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts.map +1 -0
  153. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs +25 -0
  154. package/dist/adapters/http/middleware/built-in/ui-http-client.mjs.map +1 -0
  155. package/dist/adapters/http/middleware/index.mjs +2 -1
  156. package/dist/adapters/http/request/helpers/index.d.ts +2 -0
  157. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  158. package/dist/adapters/http/request/helpers/index.mjs +3 -1
  159. package/dist/adapters/http/request/helpers/locale.d.ts +14 -0
  160. package/dist/adapters/http/request/helpers/locale.d.ts.map +1 -0
  161. package/dist/adapters/http/request/helpers/locale.mjs +32 -0
  162. package/dist/adapters/http/request/helpers/locale.mjs.map +1 -0
  163. package/dist/adapters/http/request/helpers/locations.mjs +1 -1
  164. package/dist/adapters/http/request/helpers/redirect.d.ts +14 -0
  165. package/dist/adapters/http/request/helpers/redirect.d.ts.map +1 -0
  166. package/dist/adapters/http/request/helpers/redirect.mjs +36 -0
  167. package/dist/adapters/http/request/helpers/redirect.mjs.map +1 -0
  168. package/dist/adapters/http/request/index.mjs +3 -1
  169. package/dist/adapters/http/ui/base-path.d.ts +9 -0
  170. package/dist/adapters/http/ui/base-path.d.ts.map +1 -0
  171. package/dist/adapters/http/ui/base-path.mjs +18 -0
  172. package/dist/adapters/http/ui/base-path.mjs.map +1 -0
  173. package/dist/adapters/http/ui/index.d.ts +5 -0
  174. package/dist/adapters/http/ui/index.d.ts.map +1 -0
  175. package/dist/adapters/http/ui/index.mjs +7 -0
  176. package/dist/adapters/http/ui/render.d.ts +4 -0
  177. package/dist/adapters/http/ui/render.d.ts.map +1 -0
  178. package/dist/adapters/http/ui/render.mjs +60 -0
  179. package/dist/adapters/http/ui/render.mjs.map +1 -0
  180. package/dist/adapters/http/ui/serve.d.ts +16 -0
  181. package/dist/adapters/http/ui/serve.d.ts.map +1 -0
  182. package/dist/adapters/http/ui/serve.mjs +32 -0
  183. package/dist/adapters/http/ui/serve.mjs.map +1 -0
  184. package/dist/adapters/http/ui/types.d.ts +8 -0
  185. package/dist/adapters/http/ui/types.d.ts.map +1 -0
  186. package/dist/adapters/http/ui/types.mjs +4 -0
  187. package/dist/app/index.mjs +3 -2
  188. package/dist/app/modules/config/constants.d.ts +1 -0
  189. package/dist/app/modules/config/constants.d.ts.map +1 -1
  190. package/dist/app/modules/config/constants.mjs +1 -0
  191. package/dist/app/modules/config/constants.mjs.map +1 -1
  192. package/dist/app/modules/config/index.d.ts +1 -0
  193. package/dist/app/modules/config/index.d.ts.map +1 -1
  194. package/dist/app/modules/config/index.mjs +2 -1
  195. package/dist/app/modules/config/normalize.d.ts.map +1 -1
  196. package/dist/app/modules/config/normalize.mjs +9 -2
  197. package/dist/app/modules/config/normalize.mjs.map +1 -1
  198. package/dist/app/modules/config/origins.d.ts +10 -0
  199. package/dist/app/modules/config/origins.d.ts.map +1 -0
  200. package/dist/app/modules/config/origins.mjs +21 -0
  201. package/dist/app/modules/config/origins.mjs.map +1 -0
  202. package/dist/app/modules/config/parse.d.ts.map +1 -1
  203. package/dist/app/modules/config/parse.mjs +1 -0
  204. package/dist/app/modules/config/parse.mjs.map +1 -1
  205. package/dist/app/modules/config/read/env.d.ts.map +1 -1
  206. package/dist/app/modules/config/read/env.mjs +2 -0
  207. package/dist/app/modules/config/read/env.mjs.map +1 -1
  208. package/dist/app/modules/config/types.d.ts +14 -0
  209. package/dist/app/modules/config/types.d.ts.map +1 -1
  210. package/dist/app/modules/database/constants.d.ts +2 -0
  211. package/dist/app/modules/database/constants.d.ts.map +1 -1
  212. package/dist/app/modules/database/constants.mjs +4 -1
  213. package/dist/app/modules/database/constants.mjs.map +1 -1
  214. package/dist/app/modules/database/module.d.ts +5 -1
  215. package/dist/app/modules/database/module.d.ts.map +1 -1
  216. package/dist/app/modules/database/module.mjs +26 -15
  217. package/dist/app/modules/database/module.mjs.map +1 -1
  218. package/dist/app/modules/http/constants.d.ts +11 -0
  219. package/dist/app/modules/http/constants.d.ts.map +1 -1
  220. package/dist/app/modules/http/constants.mjs +12 -1
  221. package/dist/app/modules/http/constants.mjs.map +1 -1
  222. package/dist/app/modules/http/modules/controller.d.ts +5 -1
  223. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  224. package/dist/app/modules/http/modules/controller.mjs +75 -10
  225. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  226. package/dist/app/modules/http/modules/middleware.d.ts +2 -1
  227. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  228. package/dist/app/modules/http/modules/middleware.mjs +16 -4
  229. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  230. package/dist/app/modules/identity/module.mjs +4 -4
  231. package/dist/app/modules/identity/module.mjs.map +1 -1
  232. package/dist/app/modules/identity/repositories/provider/account/module.d.ts +3 -1
  233. package/dist/app/modules/identity/repositories/provider/account/module.d.ts.map +1 -1
  234. package/dist/app/modules/identity/repositories/provider/account/module.mjs +6 -3
  235. package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +1 -1
  236. package/dist/app/modules/identity/repositories/provider/mapper/attribute.d.ts +3 -0
  237. package/dist/app/modules/identity/repositories/provider/mapper/attribute.d.ts.map +1 -1
  238. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs +5 -2
  239. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs.map +1 -1
  240. package/dist/app/modules/identity/repositories/provider/mapper/permission.d.ts +3 -0
  241. package/dist/app/modules/identity/repositories/provider/mapper/permission.d.ts.map +1 -1
  242. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs +5 -2
  243. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs.map +1 -1
  244. package/dist/app/modules/identity/repositories/provider/mapper/role.d.ts +3 -0
  245. package/dist/app/modules/identity/repositories/provider/mapper/role.d.ts.map +1 -1
  246. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs +5 -2
  247. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs.map +1 -1
  248. package/dist/app/modules/index.mjs +3 -2
  249. package/dist/app/modules/logger/module.d.ts.map +1 -1
  250. package/dist/app/modules/logger/module.mjs +1 -5
  251. package/dist/app/modules/logger/module.mjs.map +1 -1
  252. package/dist/app/modules/mail/constants.d.ts +2 -1
  253. package/dist/app/modules/mail/constants.d.ts.map +1 -1
  254. package/dist/app/modules/mail/constants.mjs +2 -1
  255. package/dist/app/modules/mail/constants.mjs.map +1 -1
  256. package/dist/app/modules/mail/index.mjs +2 -2
  257. package/dist/app/modules/mail/module.d.ts.map +1 -1
  258. package/dist/app/modules/mail/module.mjs +4 -1
  259. package/dist/app/modules/mail/module.mjs.map +1 -1
  260. package/dist/app/modules/oauth2/module.d.ts.map +1 -1
  261. package/dist/app/modules/oauth2/module.mjs +3 -1
  262. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  263. package/dist/app/modules/oauth2/repositories/key/repository.d.ts +3 -0
  264. package/dist/app/modules/oauth2/repositories/key/repository.d.ts.map +1 -1
  265. package/dist/app/modules/oauth2/repositories/key/repository.mjs +5 -2
  266. package/dist/app/modules/oauth2/repositories/key/repository.mjs.map +1 -1
  267. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  268. package/dist/app/modules/provisioning/module.mjs +12 -0
  269. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  270. package/dist/core/entities/client/index.d.ts +1 -0
  271. package/dist/core/entities/client/index.d.ts.map +1 -1
  272. package/dist/core/entities/client/index.mjs +2 -1
  273. package/dist/core/entities/client/service.d.ts.map +1 -1
  274. package/dist/core/entities/client/service.mjs +3 -2
  275. package/dist/core/entities/client/service.mjs.map +1 -1
  276. package/dist/core/entities/client/types.d.ts +11 -1
  277. package/dist/core/entities/client/types.d.ts.map +1 -1
  278. package/dist/core/entities/client/web-client.d.ts +34 -0
  279. package/dist/core/entities/client/web-client.d.ts.map +1 -0
  280. package/dist/core/entities/client/web-client.mjs +62 -0
  281. package/dist/core/entities/client/web-client.mjs.map +1 -0
  282. package/dist/core/entities/index.mjs +2 -1
  283. package/dist/core/entities/realm/service.d.ts +6 -1
  284. package/dist/core/entities/realm/service.d.ts.map +1 -1
  285. package/dist/core/entities/realm/service.mjs +9 -0
  286. package/dist/core/entities/realm/service.mjs.map +1 -1
  287. package/dist/core/identity/index.d.ts +1 -0
  288. package/dist/core/identity/index.d.ts.map +1 -1
  289. package/dist/core/identity/index.mjs +2 -1
  290. package/dist/core/identity/password-recovery/constants.d.ts +6 -0
  291. package/dist/core/identity/password-recovery/constants.d.ts.map +1 -0
  292. package/dist/core/identity/password-recovery/constants.mjs +12 -0
  293. package/dist/core/identity/password-recovery/constants.mjs.map +1 -0
  294. package/dist/core/identity/password-recovery/index.d.ts +1 -0
  295. package/dist/core/identity/password-recovery/index.d.ts.map +1 -1
  296. package/dist/core/identity/password-recovery/index.mjs +2 -1
  297. package/dist/core/identity/password-recovery/service.d.ts +4 -2
  298. package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
  299. package/dist/core/identity/password-recovery/service.mjs +17 -6
  300. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  301. package/dist/core/identity/password-recovery/types.d.ts +5 -2
  302. package/dist/core/identity/password-recovery/types.d.ts.map +1 -1
  303. package/dist/core/identity/registration/service.d.ts +4 -2
  304. package/dist/core/identity/registration/service.d.ts.map +1 -1
  305. package/dist/core/identity/registration/service.mjs +15 -6
  306. package/dist/core/identity/registration/service.mjs.map +1 -1
  307. package/dist/core/identity/registration/types.d.ts +5 -2
  308. package/dist/core/identity/registration/types.d.ts.map +1 -1
  309. package/dist/core/identity/role/module.d.ts.map +1 -1
  310. package/dist/core/identity/role/module.mjs +1 -1
  311. package/dist/core/identity/role/module.mjs.map +1 -1
  312. package/dist/core/identity/types.d.ts +10 -0
  313. package/dist/core/identity/types.d.ts.map +1 -0
  314. package/dist/core/identity/types.mjs +4 -0
  315. package/dist/core/index.mjs +8 -1
  316. package/dist/core/mail/format/blocks.d.ts +12 -0
  317. package/dist/core/mail/format/blocks.d.ts.map +1 -0
  318. package/dist/core/mail/format/blocks.mjs +47 -0
  319. package/dist/core/mail/format/blocks.mjs.map +1 -0
  320. package/dist/core/mail/format/html.d.ts +9 -0
  321. package/dist/core/mail/format/html.d.ts.map +1 -0
  322. package/dist/core/mail/format/html.mjs +41 -0
  323. package/dist/core/mail/format/html.mjs.map +1 -0
  324. package/dist/core/mail/format/index.d.ts +5 -0
  325. package/dist/core/mail/format/index.d.ts.map +1 -0
  326. package/dist/core/mail/format/index.mjs +7 -0
  327. package/dist/core/mail/format/text.d.ts +3 -0
  328. package/dist/core/mail/format/text.d.ts.map +1 -0
  329. package/dist/core/mail/format/text.mjs +20 -0
  330. package/dist/core/mail/format/text.mjs.map +1 -0
  331. package/dist/core/mail/format/types.d.ts +30 -0
  332. package/dist/core/mail/format/types.d.ts.map +1 -0
  333. package/dist/core/mail/format/types.mjs +4 -0
  334. package/dist/core/mail/index.d.ts +3 -0
  335. package/dist/core/mail/index.d.ts.map +1 -1
  336. package/dist/core/mail/index.mjs +6 -1
  337. package/dist/core/mail/renderer.d.ts +10 -0
  338. package/dist/core/mail/renderer.d.ts.map +1 -0
  339. package/dist/core/mail/renderer.mjs +49 -0
  340. package/dist/core/mail/renderer.mjs.map +1 -0
  341. package/dist/core/mail/template/define.d.ts +7 -0
  342. package/dist/core/mail/template/define.d.ts.map +1 -0
  343. package/dist/core/mail/template/define.mjs +14 -0
  344. package/dist/core/mail/template/define.mjs.map +1 -0
  345. package/dist/core/mail/template/index.d.ts +4 -0
  346. package/dist/core/mail/template/index.d.ts.map +1 -0
  347. package/dist/core/mail/template/index.mjs +7 -0
  348. package/dist/core/mail/template/registry.d.ts +6 -0
  349. package/dist/core/mail/template/registry.d.ts.map +1 -0
  350. package/dist/core/mail/template/registry.mjs +15 -0
  351. package/dist/core/mail/template/registry.mjs.map +1 -0
  352. package/dist/core/mail/template/templates/password-reset.d.ts +3 -0
  353. package/dist/core/mail/template/templates/password-reset.d.ts.map +1 -0
  354. package/dist/core/mail/template/templates/password-reset.mjs +36 -0
  355. package/dist/core/mail/template/templates/password-reset.mjs.map +1 -0
  356. package/dist/core/mail/template/templates/registration-activation.d.ts +3 -0
  357. package/dist/core/mail/template/templates/registration-activation.d.ts.map +1 -0
  358. package/dist/core/mail/template/templates/registration-activation.mjs +34 -0
  359. package/dist/core/mail/template/templates/registration-activation.mjs.map +1 -0
  360. package/dist/core/mail/template/types.d.ts +39 -0
  361. package/dist/core/mail/template/types.d.ts.map +1 -0
  362. package/dist/core/mail/template/types.mjs +13 -0
  363. package/dist/core/mail/template/types.mjs.map +1 -0
  364. package/dist/core/mail/types.d.ts +21 -0
  365. package/dist/core/mail/types.d.ts.map +1 -1
  366. package/dist/index.mjs +7 -3
  367. package/dist/swagger.json +98 -3
  368. package/dist/ui/client/.vite/ssr-manifest.json +49086 -874
  369. package/dist/ui/client/assets/asap-latin-400-normal-Dc37g3Il.woff +0 -0
  370. package/dist/ui/client/assets/asap-latin-400-normal-DnZ1MOsG.woff2 +0 -0
  371. package/dist/ui/client/assets/asap-latin-700-normal-Dqcopq14.woff +0 -0
  372. package/dist/ui/client/assets/asap-latin-700-normal-l2Y8pi-F.woff2 +0 -0
  373. package/dist/ui/client/assets/asap-latin-ext-400-normal-C-fcRdtE.woff +0 -0
  374. package/dist/ui/client/assets/asap-latin-ext-400-normal-DwYtpHbV.woff2 +0 -0
  375. package/dist/ui/client/assets/asap-latin-ext-700-normal-D00OESsZ.woff +0 -0
  376. package/dist/ui/client/assets/asap-latin-ext-700-normal-y8bo5aW5.woff2 +0 -0
  377. package/dist/ui/client/assets/asap-vietnamese-400-normal-DGyJlJLT.woff2 +0 -0
  378. package/dist/ui/client/assets/asap-vietnamese-400-normal-lfLaoF2x.woff +0 -0
  379. package/dist/ui/client/assets/asap-vietnamese-700-normal-B-e19ug5.woff +0 -0
  380. package/dist/ui/client/assets/asap-vietnamese-700-normal-D-SxY94i.woff2 +0 -0
  381. package/dist/ui/client/assets/index-BeXJgvKE.css +2 -0
  382. package/dist/ui/client/assets/index-CgLTRwpP.js +95 -0
  383. package/dist/ui/client/assets/nunito-cyrillic-300-normal-BPQV259B.woff2 +0 -0
  384. package/dist/ui/client/assets/nunito-cyrillic-300-normal-g5qSsvc0.woff +0 -0
  385. package/dist/ui/client/assets/nunito-cyrillic-400-normal-D1j0u8EH.woff +0 -0
  386. package/dist/ui/client/assets/nunito-cyrillic-400-normal-xAOo5cBP.woff2 +0 -0
  387. package/dist/ui/client/assets/nunito-cyrillic-600-normal-BUjmtIuu.woff +0 -0
  388. package/dist/ui/client/assets/nunito-cyrillic-600-normal-DJGQ2h05.woff2 +0 -0
  389. package/dist/ui/client/assets/nunito-cyrillic-700-normal-DP36NgGt.woff2 +0 -0
  390. package/dist/ui/client/assets/nunito-cyrillic-700-normal-DfHRUDv-.woff +0 -0
  391. package/dist/ui/client/assets/nunito-cyrillic-ext-300-normal-BDHtqmCR.woff +0 -0
  392. package/dist/ui/client/assets/nunito-cyrillic-ext-300-normal-ChMQLIrm.woff2 +0 -0
  393. package/dist/ui/client/assets/nunito-cyrillic-ext-400-normal-CuPM9foi.woff2 +0 -0
  394. package/dist/ui/client/assets/nunito-cyrillic-ext-400-normal-xaE7D4Sw.woff +0 -0
  395. package/dist/ui/client/assets/nunito-cyrillic-ext-600-normal-CWPPjBOD.woff2 +0 -0
  396. package/dist/ui/client/assets/nunito-cyrillic-ext-600-normal-vnfu4DTE.woff +0 -0
  397. package/dist/ui/client/assets/nunito-cyrillic-ext-700-normal-BuR0mlCG.woff2 +0 -0
  398. package/dist/ui/client/assets/nunito-cyrillic-ext-700-normal-DfoqN4Gs.woff +0 -0
  399. package/dist/ui/client/assets/nunito-latin-300-normal-C3ZIKvzv.woff +0 -0
  400. package/dist/ui/client/assets/nunito-latin-300-normal-COoPE5VN.woff2 +0 -0
  401. package/dist/ui/client/assets/nunito-latin-400-normal-DKg4f3fz.woff +0 -0
  402. package/dist/ui/client/assets/nunito-latin-400-normal-r8SDr6Up.woff2 +0 -0
  403. package/dist/ui/client/assets/nunito-latin-600-normal-Br8yIETf.woff2 +0 -0
  404. package/dist/ui/client/assets/nunito-latin-600-normal-Cd0eNu1l.woff +0 -0
  405. package/dist/ui/client/assets/nunito-latin-700-normal-Dort48En.woff2 +0 -0
  406. package/dist/ui/client/assets/nunito-latin-700-normal-OcDqTBcA.woff +0 -0
  407. package/dist/ui/client/assets/nunito-latin-ext-300-normal-D1SyVuPt.woff2 +0 -0
  408. package/dist/ui/client/assets/nunito-latin-ext-300-normal-DfqbmdMl.woff +0 -0
  409. package/dist/ui/client/assets/nunito-latin-ext-400-normal-CjMJVfGn.woff +0 -0
  410. package/dist/ui/client/assets/nunito-latin-ext-400-normal-i-8OOpdj.woff2 +0 -0
  411. package/dist/ui/client/assets/nunito-latin-ext-600-normal-BKUpuB78.woff +0 -0
  412. package/dist/ui/client/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2 +0 -0
  413. package/dist/ui/client/assets/nunito-latin-ext-700-normal-BWeMsAzO.woff2 +0 -0
  414. package/dist/ui/client/assets/nunito-latin-ext-700-normal-D4woHhbd.woff +0 -0
  415. package/dist/ui/client/assets/nunito-vietnamese-300-normal-DATld5Vw.woff +0 -0
  416. package/dist/ui/client/assets/nunito-vietnamese-300-normal-mLneKULB.woff2 +0 -0
  417. package/dist/ui/client/assets/nunito-vietnamese-400-normal-BHkVbP3T.woff2 +0 -0
  418. package/dist/ui/client/assets/nunito-vietnamese-400-normal-DtOtW02z.woff +0 -0
  419. package/dist/ui/client/assets/nunito-vietnamese-600-normal-BY8O6Cug.woff2 +0 -0
  420. package/dist/ui/client/assets/nunito-vietnamese-600-normal-DO1RqFw5.woff +0 -0
  421. package/dist/ui/client/assets/nunito-vietnamese-700-normal-C9SQsXvj.woff +0 -0
  422. package/dist/ui/client/assets/nunito-vietnamese-700-normal-Ch8EUCfz.woff2 +0 -0
  423. package/dist/ui/client/index.html +2 -2
  424. package/dist/ui/server/server.js +2765 -540
  425. package/package.json +20 -17
  426. package/dist/adapters/database/data-source/singleton.d.ts +0 -5
  427. package/dist/adapters/database/data-source/singleton.d.ts.map +0 -1
  428. package/dist/adapters/database/data-source/singleton.mjs +0 -19
  429. package/dist/adapters/database/data-source/singleton.mjs.map +0 -1
  430. package/dist/adapters/database/event-publisher/index.d.ts +0 -2
  431. package/dist/adapters/database/event-publisher/index.d.ts.map +0 -1
  432. package/dist/adapters/database/event-publisher/index.mjs +0 -5
  433. package/dist/adapters/database/event-publisher/module.d.ts +0 -6
  434. package/dist/adapters/database/event-publisher/module.d.ts.map +0 -1
  435. package/dist/adapters/database/event-publisher/module.mjs +0 -25
  436. package/dist/adapters/database/event-publisher/module.mjs.map +0 -1
  437. package/dist/ui/client/assets/index-Cvz0JzBe.js +0 -95
  438. package/dist/ui/client/assets/index-DNeLkYQO.css +0 -1
@@ -31,6 +31,7 @@ import { RobotAuthenticator } from "../../../../core/authentication/entities/rob
31
31
  import { UserAuthenticator } from "../../../../core/authentication/entities/user/module.mjs";
32
32
  import { CredentialsAuthenticator } from "../../../../core/authentication/module.mjs";
33
33
  import { ClientService } from "../../../../core/entities/client/service.mjs";
34
+ import { WebClientProvisioner } from "../../../../core/entities/client/web-client.mjs";
34
35
  import { ClientPermissionService } from "../../../../core/entities/client-permission/service.mjs";
35
36
  import { ClientRoleService } from "../../../../core/entities/client-role/service.mjs";
36
37
  import { ClientScopeService } from "../../../../core/entities/client-scope/service.mjs";
@@ -57,9 +58,12 @@ import { PolicyCheckerService } from "../../../../core/identity/policy/checker/s
57
58
  import { RegistrationService } from "../../../../core/identity/registration/service.mjs";
58
59
  import "../../../../core/index.mjs";
59
60
  import { ConfigInjectionKey } from "../../config/constants.mjs";
61
+ import { getAppOrigins } from "../../config/origins.mjs";
60
62
  import "../../config/index.mjs";
61
63
  import "../../authentication/index.mjs";
62
64
  import { DatabaseInjectionKey } from "../../database/constants.mjs";
65
+ import { LoggerInjectionKey } from "../../logger/constants.mjs";
66
+ import "../../logger/index.mjs";
63
67
  import { RealmRepositoryAdapter } from "../../database/repositories/realm/repository.mjs";
64
68
  import { ClientRepositoryAdapter } from "../../database/repositories/client/repository.mjs";
65
69
  import { ClientPermissionRepositoryAdapter } from "../../database/repositories/client-permission/repository.mjs";
@@ -119,7 +123,7 @@ import { OAuth2InjectionToken } from "../../oauth2/constants.mjs";
119
123
  import { IdentityInjectionKey } from "../../identity/constants.mjs";
120
124
  import "../../identity/index.mjs";
121
125
  import "../../oauth2/index.mjs";
122
- import { MailInjectionKey } from "../../mail/constants.mjs";
126
+ import { MailInjectionKey, MailTemplateRendererInjectionKey } from "../../mail/constants.mjs";
123
127
  import "../../mail/index.mjs";
124
128
  import { decorators } from "@routup/decorators";
125
129
  //#region src/app/modules/http/modules/controller.ts
@@ -154,7 +158,7 @@ var HTTPControllerModule = class {
154
158
  this.createPasswordForgotController(container),
155
159
  this.createPasswordResetController(container),
156
160
  this.createRegisterController(container),
157
- StatusController,
161
+ this.createStatusController(container),
158
162
  clientController,
159
163
  clientPermissionController,
160
164
  clientRoleController,
@@ -186,7 +190,10 @@ var HTTPControllerModule = class {
186
190
  const codeRequestVerifier = container.resolve(OAuth2InjectionToken.AuthorizationCodeRequestVerifier);
187
191
  const identityResolver = container.resolve(IdentityInjectionKey.Resolver);
188
192
  return new AuthorizeController({
189
- options: { baseURL: config.publicUrl },
193
+ options: {
194
+ baseURL: config.publicUrl,
195
+ features: this.buildUIFeatures(config)
196
+ },
190
197
  accessTokenIssuer,
191
198
  openIdTokenIssuer,
192
199
  codeIssuer,
@@ -222,13 +229,34 @@ var HTTPControllerModule = class {
222
229
  return new OpenIDController({ baseURL: container.resolve(ConfigInjectionKey).publicUrl });
223
230
  }
224
231
  createActivateController(container) {
225
- return new ActivateController({ service: this.createRegistrationService(container) });
232
+ const config = container.resolve(ConfigInjectionKey);
233
+ return new ActivateController({
234
+ options: {
235
+ baseURL: config.publicUrl,
236
+ features: this.buildUIFeatures(config)
237
+ },
238
+ service: this.createRegistrationService(container)
239
+ });
226
240
  }
227
241
  createPasswordForgotController(container) {
228
- return new PasswordForgotController({ service: this.createPasswordRecoveryService(container) });
242
+ const config = container.resolve(ConfigInjectionKey);
243
+ return new PasswordForgotController({
244
+ options: {
245
+ baseURL: config.publicUrl,
246
+ features: this.buildUIFeatures(config)
247
+ },
248
+ service: this.createPasswordRecoveryService(container)
249
+ });
229
250
  }
230
251
  createPasswordResetController(container) {
231
- return new PasswordResetController({ service: this.createPasswordRecoveryService(container) });
252
+ const config = container.resolve(ConfigInjectionKey);
253
+ return new PasswordResetController({
254
+ options: {
255
+ baseURL: config.publicUrl,
256
+ features: this.buildUIFeatures(config)
257
+ },
258
+ service: this.createPasswordRecoveryService(container)
259
+ });
232
260
  }
233
261
  createPasswordRecoveryService(container) {
234
262
  const config = container.resolve(ConfigInjectionKey);
@@ -240,16 +268,36 @@ var HTTPControllerModule = class {
240
268
  });
241
269
  return new PasswordRecoveryService({
242
270
  mailClient: container.resolve(MailInjectionKey),
271
+ mailTemplateRenderer: container.resolve(MailTemplateRendererInjectionKey),
243
272
  repository,
244
273
  realmRepository: new RealmRepositoryAdapter(realmRepository),
245
274
  options: {
246
275
  passwordRecoveryEnabled: config.passwordRecoveryEnabled,
247
- emailVerificationEnabled: config.emailVerificationEnabled
276
+ emailVerificationEnabled: config.emailVerificationEnabled,
277
+ publicUrl: config.publicUrl
248
278
  }
249
279
  });
250
280
  }
251
281
  createRegisterController(container) {
252
- return new RegisterController({ service: this.createRegistrationService(container) });
282
+ const config = container.resolve(ConfigInjectionKey);
283
+ return new RegisterController({
284
+ options: {
285
+ baseURL: config.publicUrl,
286
+ features: this.buildUIFeatures(config)
287
+ },
288
+ service: this.createRegistrationService(container)
289
+ });
290
+ }
291
+ createStatusController(container) {
292
+ const config = container.resolve(ConfigInjectionKey);
293
+ return new StatusController({ options: { features: this.buildUIFeatures(config) } });
294
+ }
295
+ buildUIFeatures(config) {
296
+ return {
297
+ registration: config.registrationEnabled,
298
+ passwordRecovery: config.passwordRecoveryEnabled,
299
+ emailVerification: config.emailVerificationEnabled
300
+ };
253
301
  }
254
302
  createRegistrationService(container) {
255
303
  const config = container.resolve(ConfigInjectionKey);
@@ -261,11 +309,13 @@ var HTTPControllerModule = class {
261
309
  });
262
310
  return new RegistrationService({
263
311
  mailClient: container.resolve(MailInjectionKey),
312
+ mailTemplateRenderer: container.resolve(MailTemplateRendererInjectionKey),
264
313
  repository,
265
314
  realmRepository: new RealmRepositoryAdapter(realmRepository),
266
315
  options: {
267
316
  registrationEnabled: config.registrationEnabled,
268
- emailVerificationEnabled: config.emailVerificationEnabled
317
+ emailVerificationEnabled: config.emailVerificationEnabled,
318
+ publicUrl: config.publicUrl
269
319
  }
270
320
  });
271
321
  }
@@ -481,7 +531,22 @@ var HTTPControllerModule = class {
481
531
  createRealmController(container) {
482
532
  const config = container.resolve(ConfigInjectionKey);
483
533
  const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
484
- const service = new RealmService({ repository: new RealmRepositoryAdapter(container.resolve(RealmEntity)) });
534
+ const realmRepository = container.resolve(RealmEntity);
535
+ const repository = new RealmRepositoryAdapter(realmRepository);
536
+ const clientRepository = new ClientRepositoryAdapter({
537
+ repository: container.resolve(ClientEntity),
538
+ realmRepository
539
+ });
540
+ const logger = container.resolve(LoggerInjectionKey);
541
+ const service = new RealmService({
542
+ repository,
543
+ webClientProvisioner: new WebClientProvisioner({
544
+ clientRepository,
545
+ appOrigins: getAppOrigins(config),
546
+ logger
547
+ }),
548
+ logger
549
+ });
485
550
  const keyRepository = dataSource.getRepository(KeyEntity);
486
551
  return new RealmController({
487
552
  options: { baseURL: config.publicUrl },
@@ -1 +1 @@
1
- {"version":3,"file":"controller.mjs","names":["decorators","ClientEntity","ClientPermissionEntity","ClientRoleEntity","ClientScopeEntity","IdentityProviderRepository","IdentityProviderRoleMappingEntity","KeyEntity","PermissionEntity","PermissionPolicyEntity","PolicyRepository","RealmEntity","RobotEntity","RobotPermissionEntity","RobotRoleEntity","RoleAttributeEntity","RoleEntity","RolePermissionEntity","ScopeEntity","UserAttributeEntity","UserEntity","UserPermissionEntity","UserRepository","UserRoleEntity","ClientPermissionRepositoryAdapter","ClientRepositoryAdapter","ClientRoleRepositoryAdapter","ClientScopeRepositoryAdapter","DatabaseInjectionKey","IdentityProviderRepositoryAdapter","IdentityProviderRoleMappingRepositoryAdapter","PermissionDatabaseProvider","PermissionPolicyRepositoryAdapter","PermissionRepositoryAdapter","PolicyRepositoryAdapter","RealmRepositoryAdapter","RobotPermissionRepositoryAdapter","RobotRepositoryAdapter","RobotRoleRepositoryAdapter","RoleAttributeRepositoryAdapter","RolePermissionRepositoryAdapter","RoleRepositoryAdapter","ScopeRepositoryAdapter","UserAttributeRepositoryAdapter","UserPermissionRepositoryAdapter","UserRepositoryAdapter","UserRoleRepositoryAdapter","ClientController","ClientPermissionController","ClientRoleController","ClientScopeController","IdentityProviderController","IdentityProviderRoleMappingController","PermissionController","PermissionPolicyController","PolicyController","RealmController","RobotController","RobotPermissionController","RobotRoleController","RoleAttributeController","RoleController","RolePermissionController","ScopeController","UserAttributeController","UserController","UserPermissionController","UserRoleController","ActivateController","AuthorizeController","JwkController","OpenIDController","PasswordForgotController","PasswordResetController","RegisterController","StatusController","TokenController","ClientAuthenticator","ClientPermissionService","ClientRoleService","ClientScopeService","ClientService","CredentialsAuthenticator","IdentityProviderRoleMappingService","OAuth2ClientAuthenticator","PasswordRecoveryService","PermissionCheckerService","PermissionPolicyService","PermissionService","PolicyCheckerService","PolicyService","RealmService","RegistrationService","RobotAuthenticator","RobotPermissionService","RobotRoleService","RobotService","RoleAttributeService","RolePermissionService","RoleService","ScopeService","UserAttributeService","UserAuthenticator","UserPermissionService","UserRoleService","UserService","AuthenticationInjectionKey","OAuth2InjectionToken","IdentityInjectionKey","ConfigInjectionKey","MailInjectionKey","HTTPControllerModule","mount","router","container","realmController","createRealmController","roleController","createRoleController","permissionController","createPermissionController","permissionPolicyController","createPermissionPolicyController","clientController","createClientController","robotController","createRobotController","clientPermissionController","createClientPermissionController","clientRoleController","createClientRoleController","clientScopeController","createClientScopeController","robotPermissionController","createRobotPermissionController","robotRoleController","createRobotRoleController","roleAttributeController","createRoleAttributeController","rolePermissionController","createRolePermissionController","scopeController","createScopeController","userController","createUserController","userAttributeController","createUserAttributeController","userPermissionController","createUserPermissionController","userRoleController","createUserRoleController","policyController","createPolicyController","identityProviderRoleController","createIdentityProviderRoleController","use","controllers","createAuthorize","createToken","createJwkController","createOpenIDController","createActivateController","createPasswordForgotController","createPasswordResetController","createRegisterController","createIdentityProvider","config","resolve","accessTokenIssuer","AccessTokenIssuer","openIdTokenIssuer","OpenIDTokenIssuer","codeIssuer","AuthorizationCodeIssuer","codeRequestVerifier","AuthorizationCodeRequestVerifier","identityResolver","Resolver","options","baseURL","publicUrl","sessionManager","SessionManager","codeVerifier","AuthorizationCodeVerifier","refreshTokenIssuer","RefreshTokenIssuer","tokenRevoker","TokenRevoker","tokenVerifier","TokenVerifier","identityProviderLdapCollectionAuthenticator","ProviderLdapCollectionAuthenticator","identityPermissionProvider","PermissionProvider","clientAuthenticator","robotAuthenticator","userAuthenticator","oauth2ClientAuthenticator","service","createRegistrationService","createPasswordRecoveryService","dataSource","DataSource","realmRepository","repository","mailClient","passwordRecoveryEnabled","emailVerificationEnabled","registrationEnabled","accountManager","ProviderAccountManager","stateManager","AuthorizationStateManager","realmRepositoryAdapter","roleRepository","rolePermissionRepository","policyRepository","permissionPolicyRepository","permissionProvider","checkerService","reservedNames","Set","getMetadata","columns","map","c","propertyName","getRepository","keyRepository"],"sources":["../../../../../src/app/modules/http/modules/controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { App } from 'routup';\nimport { decorators } from '@routup/decorators';\nimport type {\n Client,\n ClientPermission,\n ClientRole,\n ClientScope,\n Permission,\n PermissionPolicy,\n Realm,\n Robot,\n RobotPermission,\n RobotRole,\n Role,\n RoleAttribute,\n RolePermission,\n Scope,\n UserAttribute,\n UserPermission,\n UserRole,\n} from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport {\n ClientEntity,\n ClientPermissionEntity,\n ClientRoleEntity,\n ClientScopeEntity,\n IdentityProviderRepository,\n IdentityProviderRoleMappingEntity,\n KeyEntity,\n PermissionEntity,\n PermissionPolicyEntity,\n PolicyRepository,\n RealmEntity,\n RobotEntity,\n RobotPermissionEntity,\n RobotRoleEntity,\n RoleAttributeEntity,\n RoleEntity,\n RolePermissionEntity,\n ScopeEntity,\n UserAttributeEntity,\n UserEntity,\n UserPermissionEntity,\n UserRepository,\n UserRoleEntity,\n} from '../../../../adapters/database/domains/index.ts';\nimport {\n ClientPermissionRepositoryAdapter,\n ClientRepositoryAdapter,\n ClientRoleRepositoryAdapter,\n ClientScopeRepositoryAdapter,\n DatabaseInjectionKey,\n IdentityProviderRepositoryAdapter,\n IdentityProviderRoleMappingRepositoryAdapter,\n PermissionDatabaseProvider,\n PermissionPolicyRepositoryAdapter,\n PermissionRepositoryAdapter,\n PolicyRepositoryAdapter,\n RealmRepositoryAdapter,\n RobotPermissionRepositoryAdapter,\n RobotRepositoryAdapter,\n RobotRoleRepositoryAdapter,\n RoleAttributeRepositoryAdapter,\n RolePermissionRepositoryAdapter,\n RoleRepositoryAdapter,\n ScopeRepositoryAdapter,\n UserAttributeRepositoryAdapter,\n UserPermissionRepositoryAdapter,\n UserRepositoryAdapter,\n UserRoleRepositoryAdapter,\n} from '../../database/index.ts';\nimport {\n ClientController,\n ClientPermissionController,\n ClientRoleController,\n ClientScopeController, \n IdentityProviderController,\n IdentityProviderRoleMappingController,\n PermissionController,\n PermissionPolicyController,\n PolicyController,\n RealmController,\n RobotController,\n RobotPermissionController,\n RobotRoleController,\n RoleAttributeController,\n RoleController,\n RolePermissionController,\n ScopeController,\n UserAttributeController,\n UserController,\n UserPermissionController,\n UserRoleController,\n} from '../../../../adapters/http/index.ts';\nimport {\n ActivateController,\n AuthorizeController,\n JwkController,\n OpenIDController,\n PasswordForgotController,\n PasswordResetController,\n RegisterController,\n StatusController,\n TokenController,\n} from '../../../../adapters/http/controllers/index.ts';\nimport type { IContainer } from 'eldin';\nimport {\n ClientAuthenticator,\n ClientPermissionService,\n ClientRoleService,\n ClientScopeService,\n ClientService,\n CredentialsAuthenticator,\n IdentityProviderRoleMappingService,\n OAuth2ClientAuthenticator,\n PasswordRecoveryService,\n PermissionCheckerService,\n PermissionPolicyService,\n PermissionService,\n PolicyCheckerService,\n PolicyService,\n RealmService,\n RegistrationService,\n RobotAuthenticator,\n RobotPermissionService,\n RobotRoleService,\n RobotService,\n RoleAttributeService,\n RolePermissionService,\n RoleService,\n ScopeService,\n UserAttributeService,\n UserAuthenticator,\n UserPermissionService,\n UserRoleService,\n UserService,\n} from '../../../../core/index.ts';\nimport { AuthenticationInjectionKey } from '../../authentication/index.ts';\nimport { OAuth2InjectionToken } from '../../oauth2/index.ts';\nimport { IdentityInjectionKey } from '../../identity/index.ts';\nimport { ConfigInjectionKey } from '../../config/index.ts';\nimport { MailInjectionKey } from '../../mail/index.ts';\n\nexport class HTTPControllerModule {\n async mount(router: App, container: IContainer): Promise<void> {\n const realmController = this.createRealmController(container);\n const roleController = this.createRoleController(container);\n const permissionController = await this.createPermissionController(container);\n const permissionPolicyController = this.createPermissionPolicyController(container);\n const clientController = this.createClientController(container);\n const robotController = this.createRobotController(container);\n const clientPermissionController = this.createClientPermissionController(container);\n const clientRoleController = this.createClientRoleController(container);\n const clientScopeController = this.createClientScopeController(container);\n const robotPermissionController = this.createRobotPermissionController(container);\n const robotRoleController = this.createRobotRoleController(container);\n const roleAttributeController = this.createRoleAttributeController(container);\n const rolePermissionController = this.createRolePermissionController(container);\n const scopeController = this.createScopeController(container);\n const userController = this.createUserController(container);\n const userAttributeController = this.createUserAttributeController(container);\n const userPermissionController = this.createUserPermissionController(container);\n const userRoleController = this.createUserRoleController(container);\n const policyController = this.createPolicyController(container);\n const identityProviderRoleController = this.createIdentityProviderRoleController(container);\n\n router.use(decorators({\n controllers: [\n this.createAuthorize(container),\n this.createToken(container),\n this.createJwkController(container),\n this.createOpenIDController(container),\n this.createActivateController(container),\n this.createPasswordForgotController(container),\n this.createPasswordResetController(container),\n this.createRegisterController(container),\n\n StatusController,\n\n clientController,\n clientPermissionController,\n clientRoleController,\n clientScopeController,\n identityProviderRoleController,\n this.createIdentityProvider(container),\n permissionController,\n permissionPolicyController,\n policyController,\n robotController,\n robotPermissionController,\n robotRoleController,\n realmController,\n roleController,\n roleAttributeController,\n rolePermissionController,\n scopeController,\n userController,\n userAttributeController,\n userPermissionController,\n userRoleController,\n ],\n }));\n }\n\n // ----------------------------------------------------\n\n createAuthorize(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const accessTokenIssuer = container.resolve(OAuth2InjectionToken.AccessTokenIssuer);\n const openIdTokenIssuer = container.resolve(OAuth2InjectionToken.OpenIDTokenIssuer);\n\n const codeIssuer = container.resolve(OAuth2InjectionToken.AuthorizationCodeIssuer);\n const codeRequestVerifier = container.resolve(OAuth2InjectionToken.AuthorizationCodeRequestVerifier);\n\n const identityResolver = container.resolve(IdentityInjectionKey.Resolver);\n\n return new AuthorizeController({\n options: { baseURL: config.publicUrl },\n\n accessTokenIssuer,\n openIdTokenIssuer,\n\n codeIssuer,\n codeRequestVerifier,\n\n identityResolver,\n });\n }\n\n createToken(container: IContainer) {\n const sessionManager = container.resolve(AuthenticationInjectionKey.SessionManager);\n\n const codeVerifier = container.resolve(OAuth2InjectionToken.AuthorizationCodeVerifier);\n\n const accessTokenIssuer = container.resolve(OAuth2InjectionToken.AccessTokenIssuer);\n const refreshTokenIssuer = container.resolve(OAuth2InjectionToken.RefreshTokenIssuer);\n\n const tokenRevoker = container.resolve(OAuth2InjectionToken.TokenRevoker);\n const tokenVerifier = container.resolve(OAuth2InjectionToken.TokenVerifier);\n\n const identityResolver = container.resolve(IdentityInjectionKey.Resolver);\n const identityProviderLdapCollectionAuthenticator = container.resolve(IdentityInjectionKey.ProviderLdapCollectionAuthenticator);\n\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n\n const clientAuthenticator = new ClientAuthenticator(identityResolver);\n const robotAuthenticator = new RobotAuthenticator(identityResolver);\n\n const userAuthenticator = new CredentialsAuthenticator([\n identityProviderLdapCollectionAuthenticator,\n new UserAuthenticator(identityResolver),\n ]);\n\n const oauth2ClientAuthenticator = new OAuth2ClientAuthenticator(identityResolver);\n\n return new TokenController({\n codeVerifier,\n\n accessTokenIssuer,\n refreshTokenIssuer,\n\n tokenVerifier,\n tokenRevoker,\n\n identityResolver,\n identityPermissionProvider,\n\n clientAuthenticator,\n robotAuthenticator,\n userAuthenticator,\n\n oauth2ClientAuthenticator,\n\n sessionManager,\n });\n }\n\n createOpenIDController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n return new OpenIDController({ baseURL: config.publicUrl });\n }\n\n createActivateController(container: IContainer) {\n return new ActivateController({ service: this.createRegistrationService(container) });\n }\n\n createPasswordForgotController(container: IContainer) {\n return new PasswordForgotController({ service: this.createPasswordRecoveryService(container) });\n }\n\n createPasswordResetController(container: IContainer) {\n return new PasswordResetController({ service: this.createPasswordRecoveryService(container) });\n }\n\n createPasswordRecoveryService(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n });\n const mailClient = container.resolve(MailInjectionKey);\n\n return new PasswordRecoveryService({\n mailClient,\n repository,\n realmRepository: new RealmRepositoryAdapter(realmRepository),\n options: {\n passwordRecoveryEnabled: config.passwordRecoveryEnabled,\n emailVerificationEnabled: config.emailVerificationEnabled,\n },\n });\n }\n\n createRegisterController(container: IContainer) {\n return new RegisterController({ service: this.createRegistrationService(container) });\n }\n\n createRegistrationService(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n });\n const mailClient = container.resolve(MailInjectionKey);\n\n return new RegistrationService({\n mailClient,\n repository,\n realmRepository: new RealmRepositoryAdapter(realmRepository),\n options: {\n registrationEnabled: config.registrationEnabled,\n emailVerificationEnabled: config.emailVerificationEnabled,\n },\n });\n }\n\n createIdentityProvider(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n\n const accountManager = container.resolve(IdentityInjectionKey.ProviderAccountManager);\n\n const codeIssuer = container.resolve(OAuth2InjectionToken.AuthorizationCodeIssuer);\n\n const codeRequestVerifier = container.resolve(OAuth2InjectionToken.AuthorizationCodeRequestVerifier);\n\n const stateManager = container.resolve(OAuth2InjectionToken.AuthorizationStateManager);\n\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n\n const repository = new IdentityProviderRepositoryAdapter({\n repository: new IdentityProviderRepository(dataSource),\n realmRepository,\n });\n\n return new IdentityProviderController({\n options: { baseURL: config.publicUrl },\n\n repository,\n realmRepository: new RealmRepositoryAdapter(realmRepository),\n\n accountManager,\n\n codeIssuer,\n codeRequestVerifier,\n stateManager,\n });\n }\n\n createClientController(container: IContainer) {\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new ClientRepositoryAdapter({\n repository: container.resolve<Repository<Client>>(ClientEntity),\n realmRepository,\n });\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const service = new ClientService({\n repository,\n realmRepository: realmRepositoryAdapter, \n });\n return new ClientController({\n service,\n repository, \n });\n }\n\n createRobotController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new RobotRepositoryAdapter({\n repository: container.resolve<Repository<Robot>>(RobotEntity),\n realmRepository,\n });\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const service = new RobotService({\n repository,\n realmRepository: realmRepositoryAdapter, \n });\n return new RobotController({\n service,\n repository,\n realmRepository: realmRepositoryAdapter,\n dataSource,\n });\n }\n\n async createPermissionController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new PermissionRepositoryAdapter({\n repository: container.resolve<Repository<Permission>>(PermissionEntity),\n realmRepository,\n });\n\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const roleRepository = new RoleRepositoryAdapter({\n repository: container.resolve<Repository<Role>>(RoleEntity),\n realmRepository,\n });\n const rolePermissionRepository = new RolePermissionRepositoryAdapter(\n container.resolve<Repository<RolePermission>>(RolePermissionEntity),\n );\n const policyRepository = new PolicyRepositoryAdapter({\n repository: new PolicyRepository(dataSource),\n realmRepository,\n });\n\n const permissionPolicyRepository = new PermissionPolicyRepositoryAdapter(\n container.resolve<Repository<PermissionPolicy>>(PermissionPolicyEntity),\n );\n\n const service = new PermissionService({\n repository,\n realmRepository: realmRepositoryAdapter,\n roleRepository,\n rolePermissionRepository,\n policyRepository,\n permissionPolicyRepository,\n });\n\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const permissionProvider = new PermissionDatabaseProvider(dataSource);\n\n const checkerService = new PermissionCheckerService({\n repository,\n realmRepository: realmRepositoryAdapter,\n permissionProvider,\n identityPermissionProvider,\n });\n\n return new PermissionController({\n service,\n checkerService,\n });\n }\n\n createRoleController(container: IContainer) {\n const realmRepository = new RealmRepositoryAdapter(\n container.resolve<Repository<Realm>>(RealmEntity),\n );\n const repository = new RoleRepositoryAdapter({\n repository: container.resolve<Repository<Role>>(RoleEntity),\n realmRepository: container.resolve<Repository<Realm>>(RealmEntity),\n });\n const service = new RoleService({\n repository,\n realmRepository, \n });\n return new RoleController({ service });\n }\n\n createClientPermissionController(container: IContainer) {\n const repository = new ClientPermissionRepositoryAdapter(\n container.resolve<Repository<ClientPermission>>(ClientPermissionEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new ClientPermissionService({\n repository,\n identityPermissionProvider, \n });\n return new ClientPermissionController({ service });\n }\n\n createClientRoleController(container: IContainer) {\n const repository = new ClientRoleRepositoryAdapter(\n container.resolve<Repository<ClientRole>>(ClientRoleEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new ClientRoleService({ repository, identityPermissionProvider });\n return new ClientRoleController({ service });\n }\n\n createClientScopeController(container: IContainer) {\n const repository = new ClientScopeRepositoryAdapter(\n container.resolve<Repository<ClientScope>>(ClientScopeEntity),\n );\n const service = new ClientScopeService({ repository });\n return new ClientScopeController({ service });\n }\n\n createRobotPermissionController(container: IContainer) {\n const repository = new RobotPermissionRepositoryAdapter(\n container.resolve<Repository<RobotPermission>>(RobotPermissionEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new RobotPermissionService({\n repository,\n identityPermissionProvider, \n });\n return new RobotPermissionController({ service });\n }\n\n createRobotRoleController(container: IContainer) {\n const repository = new RobotRoleRepositoryAdapter(\n container.resolve<Repository<RobotRole>>(RobotRoleEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new RobotRoleService({ repository, identityPermissionProvider });\n return new RobotRoleController({ service });\n }\n\n createRoleAttributeController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const repository = new RoleAttributeRepositoryAdapter(\n container.resolve<Repository<RoleAttribute>>(RoleAttributeEntity),\n );\n const reservedNames = new Set(\n dataSource.getMetadata(RoleEntity).columns.map((c) => c.propertyName),\n );\n const service = new RoleAttributeService({ repository, reservedNames });\n return new RoleAttributeController({ service });\n }\n\n createRolePermissionController(container: IContainer) {\n const repository = new RolePermissionRepositoryAdapter(\n container.resolve<Repository<RolePermission>>(RolePermissionEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new RolePermissionService({\n repository,\n identityPermissionProvider, \n });\n return new RolePermissionController({ service });\n }\n\n createPermissionPolicyController(container: IContainer) {\n const repository = new PermissionPolicyRepositoryAdapter(\n container.resolve<Repository<PermissionPolicy>>(PermissionPolicyEntity),\n );\n const service = new PermissionPolicyService({ repository });\n return new PermissionPolicyController({ service });\n }\n\n createScopeController(container: IContainer) {\n const realmRepository = new RealmRepositoryAdapter(\n container.resolve<Repository<Realm>>(RealmEntity),\n );\n const repository = new ScopeRepositoryAdapter({\n repository: container.resolve<Repository<Scope>>(ScopeEntity),\n realmRepository: container.resolve<Repository<Realm>>(RealmEntity),\n });\n const service = new ScopeService({\n repository,\n realmRepository, \n });\n return new ScopeController({ service });\n }\n\n createUserController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n });\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const service = new UserService({\n repository,\n realmRepository: realmRepositoryAdapter, \n });\n return new UserController({ service });\n }\n\n createUserAttributeController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const repository = new UserAttributeRepositoryAdapter(\n container.resolve<Repository<UserAttribute>>(UserAttributeEntity),\n );\n const reservedNames = new Set(\n dataSource.getMetadata(UserEntity).columns.map((c) => c.propertyName),\n );\n const service = new UserAttributeService({ repository, reservedNames });\n return new UserAttributeController({ service });\n }\n\n createUserPermissionController(container: IContainer) {\n const repository = new UserPermissionRepositoryAdapter(\n container.resolve<Repository<UserPermission>>(UserPermissionEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new UserPermissionService({\n repository,\n identityPermissionProvider, \n });\n return new UserPermissionController({ service });\n }\n\n createUserRoleController(container: IContainer) {\n const repository = new UserRoleRepositoryAdapter(\n container.resolve<Repository<UserRole>>(UserRoleEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new UserRoleService({ repository, identityPermissionProvider });\n return new UserRoleController({ service });\n }\n\n createPolicyController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new PolicyRepositoryAdapter({\n repository: new PolicyRepository(dataSource),\n realmRepository,\n });\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const service = new PolicyService({\n repository,\n realmRepository: realmRepositoryAdapter, \n });\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const checkerService = new PolicyCheckerService({\n repository,\n realmRepository: realmRepositoryAdapter,\n identityPermissionProvider,\n });\n\n return new PolicyController({\n service,\n checkerService,\n });\n }\n\n createIdentityProviderRoleController(container: IContainer) {\n const repository = new IdentityProviderRoleMappingRepositoryAdapter(\n container.resolve<Repository<any>>(IdentityProviderRoleMappingEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new IdentityProviderRoleMappingService({ repository, identityPermissionProvider });\n return new IdentityProviderRoleMappingController({ service });\n }\n\n createJwkController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const repository = dataSource.getRepository(KeyEntity);\n return new JwkController({ repository });\n }\n\n createRealmController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const repository = new RealmRepositoryAdapter(\n container.resolve<Repository<Realm>>(RealmEntity),\n );\n const service = new RealmService({ repository });\n const keyRepository = dataSource.getRepository(KeyEntity);\n\n return new RealmController({\n options: { baseURL: config.publicUrl },\n service,\n keyRepository,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuJA,IAAa+G,uBAAb,MAAaA;CACT,MAAMC,MAAMC,QAAaC,WAAsC;EAC3D,MAAMC,kBAAkB,KAAKC,sBAAsBF,SAAAA;EACnD,MAAMG,iBAAiB,KAAKC,qBAAqBJ,SAAAA;EACjD,MAAMK,uBAAuB,MAAM,KAAKC,2BAA2BN,SAAAA;EACnE,MAAMO,6BAA6B,KAAKC,iCAAiCR,SAAAA;EACzE,MAAMS,mBAAmB,KAAKC,uBAAuBV,SAAAA;EACrD,MAAMW,kBAAkB,KAAKC,sBAAsBZ,SAAAA;EACnD,MAAMa,6BAA6B,KAAKC,iCAAiCd,SAAAA;EACzE,MAAMe,uBAAuB,KAAKC,2BAA2BhB,SAAAA;EAC7D,MAAMiB,wBAAwB,KAAKC,4BAA4BlB,SAAAA;EAC/D,MAAMmB,4BAA4B,KAAKC,gCAAgCpB,SAAAA;EACvE,MAAMqB,sBAAsB,KAAKC,0BAA0BtB,SAAAA;EAC3D,MAAMuB,0BAA0B,KAAKC,8BAA8BxB,SAAAA;EACnE,MAAMyB,2BAA2B,KAAKC,+BAA+B1B,SAAAA;EACrE,MAAM2B,kBAAkB,KAAKC,sBAAsB5B,SAAAA;EACnD,MAAM6B,iBAAiB,KAAKC,qBAAqB9B,SAAAA;EACjD,MAAM+B,0BAA0B,KAAKC,8BAA8BhC,SAAAA;EACnE,MAAMiC,2BAA2B,KAAKC,+BAA+BlC,SAAAA;EACrE,MAAMmC,qBAAqB,KAAKC,yBAAyBpC,SAAAA;EACzD,MAAMqC,mBAAmB,KAAKC,uBAAuBtC,SAAAA;EACrD,MAAMuC,iCAAiC,KAAKC,qCAAqCxC,SAAAA;EAEjFD,OAAO0C,IAAI3J,WAAW,EAClB4J,aAAa;GACT,KAAKC,gBAAgB3C,SAAAA;GACrB,KAAK4C,YAAY5C,SAAAA;GACjB,KAAK6C,oBAAoB7C,SAAAA;GACzB,KAAK8C,uBAAuB9C,SAAAA;GAC5B,KAAK+C,yBAAyB/C,SAAAA;GAC9B,KAAKgD,+BAA+BhD,SAAAA;GACpC,KAAKiD,8BAA8BjD,SAAAA;GACnC,KAAKkD,yBAAyBlD,SAAAA;GAE9BvC;GAEAgD;GACAI;GACAE;GACAE;GACAsB;GACA,KAAKY,uBAAuBnD,SAAAA;GAC5BK;GACAE;GACA8B;GACA1B;GACAQ;GACAE;GACApB;GACAE;GACAoB;GACAE;GACAE;GACAE;GACAE;GACAE;GACAE;IAER,CAAA,CAAA;CACJ;CAIAQ,gBAAgB3C,WAAuB;EACnC,MAAMoD,SAASpD,UAAUqD,QAAQ1D,kBAAAA;EACjC,MAAM2D,oBAAoBtD,UAAUqD,QAAQ5D,qBAAqB8D,iBAAiB;EAClF,MAAMC,oBAAoBxD,UAAUqD,QAAQ5D,qBAAqBgE,iBAAiB;EAElF,MAAMC,aAAa1D,UAAUqD,QAAQ5D,qBAAqBkE,uBAAuB;EACjF,MAAMC,sBAAsB5D,UAAUqD,QAAQ5D,qBAAqBoE,gCAAgC;EAEnG,MAAMC,mBAAmB9D,UAAUqD,QAAQ3D,qBAAqBqE,QAAQ;EAExE,OAAO,IAAI5G,oBAAoB;GAC3B6G,SAAS,EAAEC,SAASb,OAAOc,UAAU;GAErCZ;GACAE;GAEAE;GACAE;GAEAE;EACJ,CAAA;CACJ;CAEAlB,YAAY5C,WAAuB;EAC/B,MAAMmE,iBAAiBnE,UAAUqD,QAAQ7D,2BAA2B4E,cAAc;EAElF,MAAMC,eAAerE,UAAUqD,QAAQ5D,qBAAqB6E,yBAAyB;EAErF,MAAMhB,oBAAoBtD,UAAUqD,QAAQ5D,qBAAqB8D,iBAAiB;EAClF,MAAMgB,qBAAqBvE,UAAUqD,QAAQ5D,qBAAqB+E,kBAAkB;EAEpF,MAAMC,eAAezE,UAAUqD,QAAQ5D,qBAAqBiF,YAAY;EACxE,MAAMC,gBAAgB3E,UAAUqD,QAAQ5D,qBAAqBmF,aAAa;EAE1E,MAAMd,mBAAmB9D,UAAUqD,QAAQ3D,qBAAqBqE,QAAQ;EACxE,MAAMc,8CAA8C7E,UAAUqD,QAAQ3D,qBAAqBoF,mCAAmC;EAc9H,OAAO,IAAIpH,gBAAgB;GACvB2G;GAEAf;GACAiB;GAEAI;GACAF;GAEAX;GACAiB,4BAtB+B/E,UAAUqD,QAAQ3D,qBAAqBsF,kBAsBtED;GAEAE,qBAAAA,IAtB4BtH,oBAAoBmG,gBAsBhDmB;GACAC,oBAAAA,IAtB2BvG,mBAAmBmF,gBAsB9CoB;GACAC,mBAAAA,IArB0BnH,yBAAyB,CACnD6G,6CACA,IAAIzF,kBAAkB0E,gBAAAA,CAAAA,CAmBtBqB;GAEAC,2BAAAA,IAlBkClH,0BAA0B4F,gBAkB5DsB;GAEAjB;EACJ,CAAA;CACJ;CAEArB,uBAAuB9C,WAAuB;EAG1C,OAAO,IAAI3C,iBAAiB,EAAE4G,SAFfjE,UAAUqD,QAAQ1D,kBAEMyD,CAAAA,CAAOc,UAAU,CAAA;CAC5D;CAEAnB,yBAAyB/C,WAAuB;EAC5C,OAAO,IAAI9C,mBAAmB,EAAEmI,SAAS,KAAKC,0BAA0BtF,SAAAA,EAAW,CAAA;CACvF;CAEAgD,+BAA+BhD,WAAuB;EAClD,OAAO,IAAI1C,yBAAyB,EAAE+H,SAAS,KAAKE,8BAA8BvF,SAAAA,EAAW,CAAA;CACjG;CAEAiD,8BAA8BjD,WAAuB;EACjD,OAAO,IAAIzC,wBAAwB,EAAE8H,SAAS,KAAKE,8BAA8BvF,SAAAA,EAAW,CAAA;CAChG;CAEAuF,8BAA8BvF,WAAuB;EACjD,MAAMoD,SAASpD,UAAUqD,QAAQ1D,kBAAAA;EACjC,MAAM6F,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EACpE,MAAMC,kBAAkB1F,UAAUqD,QAA2B5J,WAAAA;EAC7D,MAAMkM,aAAa,IAAIhK,sBAAsB;GACzCgK,YAAY,IAAIvL,eAAeoL,UAAAA;GAC/BE;EACJ,CAAA;EAGA,OAAO,IAAIvH,wBAAwB;GAC/ByH,YAHe5F,UAAUqD,QAAQzD,gBAGjCgG;GACAD;GACAD,iBAAiB,IAAIzK,uBAAuByK,eAAAA;GAC5C1B,SAAS;IACL6B,yBAAyBzC,OAAOyC;IAChCC,0BAA0B1C,OAAO0C;GACrC;EACJ,CAAA;CACJ;CAEA5C,yBAAyBlD,WAAuB;EAC5C,OAAO,IAAIxC,mBAAmB,EAAE6H,SAAS,KAAKC,0BAA0BtF,SAAAA,EAAW,CAAA;CACvF;CAEAsF,0BAA0BtF,WAAuB;EAC7C,MAAMoD,SAASpD,UAAUqD,QAAQ1D,kBAAAA;EACjC,MAAM6F,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EACpE,MAAMC,kBAAkB1F,UAAUqD,QAA2B5J,WAAAA;EAC7D,MAAMkM,aAAa,IAAIhK,sBAAsB;GACzCgK,YAAY,IAAIvL,eAAeoL,UAAAA;GAC/BE;EACJ,CAAA;EAGA,OAAO,IAAIhH,oBAAoB;GAC3BkH,YAHe5F,UAAUqD,QAAQzD,gBAGjCgG;GACAD;GACAD,iBAAiB,IAAIzK,uBAAuByK,eAAAA;GAC5C1B,SAAS;IACL+B,qBAAqB3C,OAAO2C;IAC5BD,0BAA0B1C,OAAO0C;GACrC;EACJ,CAAA;CACJ;CAEA3C,uBAAuBnD,WAAuB;EAC1C,MAAMoD,SAASpD,UAAUqD,QAAQ1D,kBAAAA;EACjC,MAAM6F,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EAEpE,MAAMO,iBAAiBhG,UAAUqD,QAAQ3D,qBAAqBuG,sBAAsB;EAEpF,MAAMvC,aAAa1D,UAAUqD,QAAQ5D,qBAAqBkE,uBAAuB;EAEjF,MAAMC,sBAAsB5D,UAAUqD,QAAQ5D,qBAAqBoE,gCAAgC;EAEnG,MAAMqC,eAAelG,UAAUqD,QAAQ5D,qBAAqB0G,yBAAyB;EAErF,MAAMT,kBAAkB1F,UAAUqD,QAA2B5J,WAAAA;EAE7D,MAAMkM,aAAa,IAAIhL,kCAAkC;GACrDgL,YAAY,IAAIxM,2BAA2BqM,UAAAA;GAC3CE;EACJ,CAAA;EAEA,OAAO,IAAIzJ,2BAA2B;GAClC+H,SAAS,EAAEC,SAASb,OAAOc,UAAU;GAErCyB;GACAD,iBAAiB,IAAIzK,uBAAuByK,eAAAA;GAE5CM;GAEAtC;GACAE;GACAsC;EACJ,CAAA;CACJ;CAEAxF,uBAAuBV,WAAuB;EAC1C,MAAM0F,kBAAkB1F,UAAUqD,QAA2B5J,WAAAA;EAC7D,MAAMkM,aAAa,IAAIpL,wBAAwB;GAC3CoL,YAAY3F,UAAUqD,QAA4BtK,YAAAA;GAClD2M;EACJ,CAAA;EAMA,OAAO,IAAI7J,iBAAiB;GACxBwJ,SAAAA,IALgBtH,cAAc;IAC9B4H;IACAD,iBAAiBU,IAHcnL,uBAAuByK,eAGrCU;GACrB,CAEIf;GACAM;EACJ,CAAA;CACJ;CAEA/E,sBAAsBZ,WAAuB;EACzC,MAAMwF,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EACpE,MAAMC,kBAAkB1F,UAAUqD,QAA2B5J,WAAAA;EAC7D,MAAMkM,aAAa,IAAIxK,uBAAuB;GAC1CwK,YAAY3F,UAAUqD,QAA2B3J,WAAAA;GACjDgM;EACJ,CAAA;EACA,MAAMU,yBAAyB,IAAInL,uBAAuByK,eAAAA;EAK1D,OAAO,IAAInJ,gBAAgB;GACvB8I,SAAAA,IALgBvG,aAAa;IAC7B6G;IACAD,iBAAiBU;GACrB,CAEIf;GACAM;GACAD,iBAAiBU;GACjBZ;EACJ,CAAA;CACJ;CAEA,MAAMlF,2BAA2BN,WAAuB;EACpD,MAAMwF,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EACpE,MAAMC,kBAAkB1F,UAAUqD,QAA2B5J,WAAAA;EAC7D,MAAMkM,aAAa,IAAI5K,4BAA4B;GAC/C4K,YAAY3F,UAAUqD,QAAgC/J,gBAAAA;GACtDoM;EACJ,CAAA;EAEA,MAAMU,yBAAyB,IAAInL,uBAAuByK,eAAAA;EAiB1D,MAAML,UAAU,IAAI/G,kBAAkB;GAClCqH;GACAD,iBAAiBU;GACjBC,gBAAAA,IAnBuB9K,sBAAsB;IAC7CoK,YAAY3F,UAAUqD,QAA0BvJ,UAAAA;IAChD4L;GACJ,CAgBIW;GACAC,0BAAAA,IAhBiChL,gCACjC0E,UAAUqD,QAAoCtJ,oBAAAA,CAe9CuM;GACAC,kBAAAA,IAdyBvL,wBAAwB;IACjD2K,YAAY,IAAInM,iBAAiBgM,UAAAA;IACjCE;GACJ,CAWIa;GACAC,4BAAAA,IAVmC1L,kCACnCkF,UAAUqD,QAAsC9J,sBAAAA,CAShDiN;EACJ,CAAA;EAEA,MAAMzB,6BAA6B/E,UAAUqD,QAAQ3D,qBAAqBsF,kBAAkB;EAU5F,OAAO,IAAI7I,qBAAqB;GAC5BkJ;GACAqB,gBAAAA,IATuBtI,yBAAyB;IAChDuH;IACAD,iBAAiBU;IACjBK,oBAAAA,IAL2B5L,2BAA2B2K,UAKtDiB;IACA1B;GACJ,CAII2B;EACJ,CAAA;CACJ;CAEAtG,qBAAqBJ,WAAuB;EACxC,MAAM0F,kBAAkB,IAAIzK,uBACxB+E,UAAUqD,QAA2B5J,WAAAA,CAAAA;EAUzC,OAAO,IAAIkD,eAAe,EAAE0I,SAAAA,IAJRpG,YAAY;GAC5B0G,YAAAA,IALmBpK,sBAAsB;IACzCoK,YAAY3F,UAAUqD,QAA0BvJ,UAAAA;IAChD4L,iBAAiB1F,UAAUqD,QAA2B5J,WAAAA;GAC1D,CAEIkM;GACAD;EACJ,CAC4BL,EAAQ,CAAA;CACxC;CAEAvE,iCAAiCd,WAAuB;EASpD,OAAO,IAAIlE,2BAA2B,EAAEuJ,SAAAA,IAJpBzH,wBAAwB;GACxC+H,YAAAA,IALmBrL,kCACnB0F,UAAUqD,QAAsCrK,sBAAAA,CAIhD2M;GACAZ,4BAH+B/E,UAAUqD,QAAQ3D,qBAAqBsF,kBAGtED;EACJ,CACwCM,EAAQ,CAAA;CACpD;CAEArE,2BAA2BhB,WAAuB;EAM9C,OAAO,IAAIjE,qBAAqB,EAAEsJ,SAAAA,IADdxH,kBAAkB;GAAE8H,YAAAA,IAJjBnL,4BACnBwF,UAAUqD,QAAgCpK,gBAAAA,CAGN0M;GAAYZ,4BADjB/E,UAAUqD,QAAQ3D,qBAAqBsF,kBACtBD;EAA2B,CAC7CM,EAAQ,CAAA;CAC9C;CAEAnE,4BAA4BlB,WAAuB;EAK/C,OAAO,IAAIhE,sBAAsB,EAAEqJ,SAAAA,IADfvH,mBAAmB,EAAE6H,YAAAA,IAHlBlL,6BACnBuF,UAAUqD,QAAiCnK,iBAAAA,CAENyM,EAAW,CACjBN,EAAQ,CAAA;CAC/C;CAEAjE,gCAAgCpB,WAAuB;EASnD,OAAO,IAAIxD,0BAA0B,EAAE6I,SAAAA,IAJnBzG,uBAAuB;GACvC+G,YAAAA,IALmBzK,iCACnB8E,UAAUqD,QAAqC1J,qBAAAA,CAI/CgM;GACAZ,4BAH+B/E,UAAUqD,QAAQ3D,qBAAqBsF,kBAGtED;EACJ,CACuCM,EAAQ,CAAA;CACnD;CAEA/D,0BAA0BtB,WAAuB;EAM7C,OAAO,IAAIvD,oBAAoB,EAAE4I,SAAAA,IADbxG,iBAAiB;GAAE8G,YAAAA,IAJhBvK,2BACnB4E,UAAUqD,QAA+BzJ,eAAAA,CAGN+L;GAAYZ,4BADhB/E,UAAUqD,QAAQ3D,qBAAqBsF,kBACvBD;EAA2B,CAC7CM,EAAQ,CAAA;CAC7C;CAEA7D,8BAA8BxB,WAAuB;EACjD,MAAMwF,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EAQpE,OAAO,IAAI/I,wBAAwB,EAAE2I,SAAAA,IADjBtG,qBAAqB;GAAE4G,YAAAA,IANpBtK,+BACnB2E,UAAUqD,QAAmCxJ,mBAAAA,CAKN8L;GAAYgB,eAAAA,IAH7BC,IACtBpB,WAAWqB,YAAY/M,UAAAA,CAAAA,CAAYgN,QAAQC,KAAKC,MAAMA,EAAEC,YAAY,CAEjBN;EAAc,CAChCtB,EAAQ,CAAA;CACjD;CAEA3D,+BAA+B1B,WAAuB;EASlD,OAAO,IAAIpD,yBAAyB,EAAEyI,SAAAA,IAJlBrG,sBAAsB;GACtC2G,YAAAA,IALmBrK,gCACnB0E,UAAUqD,QAAoCtJ,oBAAAA,CAI9C4L;GACAZ,4BAH+B/E,UAAUqD,QAAQ3D,qBAAqBsF,kBAGtED;EACJ,CACsCM,EAAQ,CAAA;CAClD;CAEA7E,iCAAiCR,WAAuB;EAKpD,OAAO,IAAI5D,2BAA2B,EAAEiJ,SAAAA,IADpBhH,wBAAwB,EAAEsH,YAAAA,IAHvB7K,kCACnBkF,UAAUqD,QAAsC9J,sBAAAA,CAENoM,EAAW,CACjBN,EAAQ,CAAA;CACpD;CAEAzD,sBAAsB5B,WAAuB;EACzC,MAAM0F,kBAAkB,IAAIzK,uBACxB+E,UAAUqD,QAA2B5J,WAAAA,CAAAA;EAUzC,OAAO,IAAIoD,gBAAgB,EAAEwI,SAAAA,IAJTnG,aAAa;GAC7ByG,YAAAA,IALmBnK,uBAAuB;IAC1CmK,YAAY3F,UAAUqD,QAA2BrJ,WAAAA;IACjD0L,iBAAiB1F,UAAUqD,QAA2B5J,WAAAA;GAC1D,CAEIkM;GACAD;EACJ,CAC6BL,EAAQ,CAAA;CACzC;CAEAvD,qBAAqB9B,WAAuB;EACxC,MAAMwF,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EACpE,MAAMC,kBAAkB1F,UAAUqD,QAA2B5J,WAAAA;EAU7D,OAAO,IAAIsD,eAAe,EAAEsI,SAAAA,IAJR9F,YAAY;GAC5BoG,YAAAA,IANmBhK,sBAAsB;IACzCgK,YAAY,IAAIvL,eAAeoL,UAAAA;IAC/BE;GACJ,CAGIC;GACAD,iBAAiBU,IAHcnL,uBAAuByK,eAGrCU;EACrB,CAC4Bf,EAAQ,CAAA;CACxC;CAEArD,8BAA8BhC,WAAuB;EACjD,MAAMwF,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EAQpE,OAAO,IAAI3I,wBAAwB,EAAEuI,SAAAA,IADjBlG,qBAAqB;GAAEwG,YAAAA,IANpBlK,+BACnBuE,UAAUqD,QAAmCpJ,mBAAAA,CAKN0L;GAAYgB,eAAAA,IAH7BC,IACtBpB,WAAWqB,YAAY3M,UAAAA,CAAAA,CAAY4M,QAAQC,KAAKC,MAAMA,EAAEC,YAAY,CAEjBN;EAAc,CAChCtB,EAAQ,CAAA;CACjD;CAEAnD,+BAA+BlC,WAAuB;EASlD,OAAO,IAAIhD,yBAAyB,EAAEqI,SAAAA,IAJlBhG,sBAAsB;GACtCsG,YAAAA,IALmBjK,gCACnBsE,UAAUqD,QAAoClJ,oBAAAA,CAI9CwL;GACAZ,4BAH+B/E,UAAUqD,QAAQ3D,qBAAqBsF,kBAGtED;EACJ,CACsCM,EAAQ,CAAA;CAClD;CAEAjD,yBAAyBpC,WAAuB;EAM5C,OAAO,IAAI/C,mBAAmB,EAAEoI,SAAAA,IADZ/F,gBAAgB;GAAEqG,YAAAA,IAJf/J,0BACnBoE,UAAUqD,QAA8BhJ,cAAAA,CAGNsL;GAAYZ,4BADf/E,UAAUqD,QAAQ3D,qBAAqBsF,kBACxBD;EAA2B,CAC7CM,EAAQ,CAAA;CAC5C;CAEA/C,uBAAuBtC,WAAuB;EAC1C,MAAMwF,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EACpE,MAAMC,kBAAkB1F,UAAUqD,QAA2B5J,WAAAA;EAC7D,MAAMkM,aAAa,IAAI3K,wBAAwB;GAC3C2K,YAAY,IAAInM,iBAAiBgM,UAAAA;GACjCE;EACJ,CAAA;EACA,MAAMU,yBAAyB,IAAInL,uBAAuByK,eAAAA;EAY1D,OAAO,IAAIrJ,iBAAiB;GACxBgJ,SAAAA,IAZgB7G,cAAc;IAC9BmH;IACAD,iBAAiBU;GACrB,CASIf;GACAqB,gBAAAA,IARuBnI,qBAAqB;IAC5CoH;IACAD,iBAAiBU;IACjBrB,4BAJ+B/E,UAAUqD,QAAQ3D,qBAAqBsF,kBAItED;GACJ,CAII2B;EACJ,CAAA;CACJ;CAEAlE,qCAAqCxC,WAAuB;EAMxD,OAAO,IAAI9D,sCAAsC,EAAEmJ,SAAAA,IAD/BpH,mCAAmC;GAAE0H,YAAAA,IAJlC/K,6CACnBoF,UAAUqD,QAAyBjK,iCAAAA,CAGkBuM;GAAYZ,4BADlC/E,UAAUqD,QAAQ3D,qBAAqBsF,kBACLD;EAA2B,CAC7CM,EAAQ,CAAA;CAC/D;CAEAxC,oBAAoB7C,WAAuB;EAGvC,OAAO,IAAI5C,cAAc,EAAEuI,YAFR3F,UAAUqD,QAAQ3I,qBAAqB+K,UACvCD,CAAAA,CAAW0B,cAAc7N,SACjBsM,EAAW,CAAA;CAC1C;CAEAzF,sBAAsBF,WAAuB;EACzC,MAAMoD,SAASpD,UAAUqD,QAAQ1D,kBAAAA;EACjC,MAAM6F,aAAaxF,UAAUqD,QAAQ3I,qBAAqB+K,UAAU;EAIpE,MAAMJ,UAAU,IAAI5G,aAAa,EAAEkH,YAAAA,IAHZ1K,uBACnB+E,UAAUqD,QAA2B5J,WAAAA,CAENkM,EAAW,CAAA;EAC9C,MAAMwB,gBAAgB3B,WAAW0B,cAAc7N,SAAAA;EAE/C,OAAO,IAAIiD,gBAAgB;GACvB0H,SAAS,EAAEC,SAASb,OAAOc,UAAU;GACrCmB;GACA8B;EACJ,CAAA;CACJ;AACJ"}
1
+ {"version":3,"file":"controller.mjs","names":["decorators","ClientEntity","ClientPermissionEntity","ClientRoleEntity","ClientScopeEntity","IdentityProviderRepository","IdentityProviderRoleMappingEntity","KeyEntity","PermissionEntity","PermissionPolicyEntity","PolicyRepository","RealmEntity","RobotEntity","RobotPermissionEntity","RobotRoleEntity","RoleAttributeEntity","RoleEntity","RolePermissionEntity","ScopeEntity","UserAttributeEntity","UserEntity","UserPermissionEntity","UserRepository","UserRoleEntity","ClientPermissionRepositoryAdapter","ClientRepositoryAdapter","ClientRoleRepositoryAdapter","ClientScopeRepositoryAdapter","DatabaseInjectionKey","IdentityProviderRepositoryAdapter","IdentityProviderRoleMappingRepositoryAdapter","PermissionDatabaseProvider","PermissionPolicyRepositoryAdapter","PermissionRepositoryAdapter","PolicyRepositoryAdapter","RealmRepositoryAdapter","RobotPermissionRepositoryAdapter","RobotRepositoryAdapter","RobotRoleRepositoryAdapter","RoleAttributeRepositoryAdapter","RolePermissionRepositoryAdapter","RoleRepositoryAdapter","ScopeRepositoryAdapter","UserAttributeRepositoryAdapter","UserPermissionRepositoryAdapter","UserRepositoryAdapter","UserRoleRepositoryAdapter","ClientController","ClientPermissionController","ClientRoleController","ClientScopeController","IdentityProviderController","IdentityProviderRoleMappingController","PermissionController","PermissionPolicyController","PolicyController","RealmController","RobotController","RobotPermissionController","RobotRoleController","RoleAttributeController","RoleController","RolePermissionController","ScopeController","UserAttributeController","UserController","UserPermissionController","UserRoleController","ActivateController","AuthorizeController","JwkController","OpenIDController","PasswordForgotController","PasswordResetController","RegisterController","StatusController","TokenController","ClientAuthenticator","ClientPermissionService","ClientRoleService","ClientScopeService","ClientService","CredentialsAuthenticator","IdentityProviderRoleMappingService","OAuth2ClientAuthenticator","PasswordRecoveryService","PermissionCheckerService","PermissionPolicyService","PermissionService","PolicyCheckerService","PolicyService","RealmService","RegistrationService","RobotAuthenticator","RobotPermissionService","RobotRoleService","RobotService","RoleAttributeService","RolePermissionService","RoleService","ScopeService","UserAttributeService","UserAuthenticator","UserPermissionService","UserRoleService","UserService","WebClientProvisioner","AuthenticationInjectionKey","OAuth2InjectionToken","IdentityInjectionKey","ConfigInjectionKey","getAppOrigins","LoggerInjectionKey","MailInjectionKey","MailTemplateRendererInjectionKey","HTTPControllerModule","mount","router","container","realmController","createRealmController","roleController","createRoleController","permissionController","createPermissionController","permissionPolicyController","createPermissionPolicyController","clientController","createClientController","robotController","createRobotController","clientPermissionController","createClientPermissionController","clientRoleController","createClientRoleController","clientScopeController","createClientScopeController","robotPermissionController","createRobotPermissionController","robotRoleController","createRobotRoleController","roleAttributeController","createRoleAttributeController","rolePermissionController","createRolePermissionController","scopeController","createScopeController","userController","createUserController","userAttributeController","createUserAttributeController","userPermissionController","createUserPermissionController","userRoleController","createUserRoleController","policyController","createPolicyController","identityProviderRoleController","createIdentityProviderRoleController","use","controllers","createAuthorize","createToken","createJwkController","createOpenIDController","createActivateController","createPasswordForgotController","createPasswordResetController","createRegisterController","createStatusController","createIdentityProvider","config","resolve","accessTokenIssuer","AccessTokenIssuer","openIdTokenIssuer","OpenIDTokenIssuer","codeIssuer","AuthorizationCodeIssuer","codeRequestVerifier","AuthorizationCodeRequestVerifier","identityResolver","Resolver","options","baseURL","publicUrl","features","buildUIFeatures","sessionManager","SessionManager","codeVerifier","AuthorizationCodeVerifier","refreshTokenIssuer","RefreshTokenIssuer","tokenRevoker","TokenRevoker","tokenVerifier","TokenVerifier","identityProviderLdapCollectionAuthenticator","ProviderLdapCollectionAuthenticator","identityPermissionProvider","PermissionProvider","clientAuthenticator","robotAuthenticator","userAuthenticator","oauth2ClientAuthenticator","service","createRegistrationService","createPasswordRecoveryService","dataSource","DataSource","realmRepository","repository","mailClient","mailTemplateRenderer","passwordRecoveryEnabled","emailVerificationEnabled","registration","registrationEnabled","passwordRecovery","emailVerification","accountManager","ProviderAccountManager","stateManager","AuthorizationStateManager","realmRepositoryAdapter","roleRepository","rolePermissionRepository","policyRepository","permissionPolicyRepository","permissionProvider","checkerService","reservedNames","Set","getMetadata","columns","map","c","propertyName","getRepository","clientRepository","logger","webClientProvisioner","appOrigins","keyRepository"],"sources":["../../../../../src/app/modules/http/modules/controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { App } from 'routup';\nimport { decorators } from '@routup/decorators';\nimport type {\n Client,\n ClientPermission,\n ClientRole,\n ClientScope,\n Permission,\n PermissionPolicy,\n Realm,\n Robot,\n RobotPermission,\n RobotRole,\n Role,\n RoleAttribute,\n RolePermission,\n Scope,\n UserAttribute,\n UserPermission,\n UserRole,\n} from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport {\n ClientEntity,\n ClientPermissionEntity,\n ClientRoleEntity,\n ClientScopeEntity,\n IdentityProviderRepository,\n IdentityProviderRoleMappingEntity,\n KeyEntity,\n PermissionEntity,\n PermissionPolicyEntity,\n PolicyRepository,\n RealmEntity,\n RobotEntity,\n RobotPermissionEntity,\n RobotRoleEntity,\n RoleAttributeEntity,\n RoleEntity,\n RolePermissionEntity,\n ScopeEntity,\n UserAttributeEntity,\n UserEntity,\n UserPermissionEntity,\n UserRepository,\n UserRoleEntity,\n} from '../../../../adapters/database/domains/index.ts';\nimport {\n ClientPermissionRepositoryAdapter,\n ClientRepositoryAdapter,\n ClientRoleRepositoryAdapter,\n ClientScopeRepositoryAdapter,\n DatabaseInjectionKey,\n IdentityProviderRepositoryAdapter,\n IdentityProviderRoleMappingRepositoryAdapter,\n PermissionDatabaseProvider,\n PermissionPolicyRepositoryAdapter,\n PermissionRepositoryAdapter,\n PolicyRepositoryAdapter,\n RealmRepositoryAdapter,\n RobotPermissionRepositoryAdapter,\n RobotRepositoryAdapter,\n RobotRoleRepositoryAdapter,\n RoleAttributeRepositoryAdapter,\n RolePermissionRepositoryAdapter,\n RoleRepositoryAdapter,\n ScopeRepositoryAdapter,\n UserAttributeRepositoryAdapter,\n UserPermissionRepositoryAdapter,\n UserRepositoryAdapter,\n UserRoleRepositoryAdapter,\n} from '../../database/index.ts';\nimport {\n ClientController,\n ClientPermissionController,\n ClientRoleController,\n ClientScopeController, \n IdentityProviderController,\n IdentityProviderRoleMappingController,\n PermissionController,\n PermissionPolicyController,\n PolicyController,\n RealmController,\n RobotController,\n RobotPermissionController,\n RobotRoleController,\n RoleAttributeController,\n RoleController,\n RolePermissionController,\n ScopeController,\n UserAttributeController,\n UserController,\n UserPermissionController,\n UserRoleController,\n} from '../../../../adapters/http/index.ts';\nimport {\n ActivateController,\n AuthorizeController,\n JwkController,\n OpenIDController,\n PasswordForgotController,\n PasswordResetController,\n RegisterController,\n StatusController,\n TokenController,\n} from '../../../../adapters/http/controllers/index.ts';\nimport type { IContainer } from 'eldin';\nimport {\n ClientAuthenticator,\n ClientPermissionService,\n ClientRoleService,\n ClientScopeService,\n ClientService,\n CredentialsAuthenticator,\n IdentityProviderRoleMappingService,\n OAuth2ClientAuthenticator,\n PasswordRecoveryService,\n PermissionCheckerService,\n PermissionPolicyService,\n PermissionService,\n PolicyCheckerService,\n PolicyService,\n RealmService,\n RegistrationService,\n RobotAuthenticator,\n RobotPermissionService,\n RobotRoleService,\n RobotService,\n RoleAttributeService,\n RolePermissionService,\n RoleService,\n ScopeService,\n UserAttributeService,\n UserAuthenticator,\n UserPermissionService,\n UserRoleService,\n UserService,\n WebClientProvisioner,\n} from '../../../../core/index.ts';\nimport { AuthenticationInjectionKey } from '../../authentication/index.ts';\nimport { OAuth2InjectionToken } from '../../oauth2/index.ts';\nimport { IdentityInjectionKey } from '../../identity/index.ts';\nimport type { StatusResponseFeatures } from '@authup/core-http-kit';\nimport type { Config } from '../../config/index.ts';\nimport { ConfigInjectionKey, getAppOrigins } from '../../config/index.ts';\nimport { LoggerInjectionKey } from '../../logger/index.ts';\nimport { MailInjectionKey, MailTemplateRendererInjectionKey } from '../../mail/index.ts';\n\nexport class HTTPControllerModule {\n async mount(router: App, container: IContainer): Promise<void> {\n const realmController = this.createRealmController(container);\n const roleController = this.createRoleController(container);\n const permissionController = await this.createPermissionController(container);\n const permissionPolicyController = this.createPermissionPolicyController(container);\n const clientController = this.createClientController(container);\n const robotController = this.createRobotController(container);\n const clientPermissionController = this.createClientPermissionController(container);\n const clientRoleController = this.createClientRoleController(container);\n const clientScopeController = this.createClientScopeController(container);\n const robotPermissionController = this.createRobotPermissionController(container);\n const robotRoleController = this.createRobotRoleController(container);\n const roleAttributeController = this.createRoleAttributeController(container);\n const rolePermissionController = this.createRolePermissionController(container);\n const scopeController = this.createScopeController(container);\n const userController = this.createUserController(container);\n const userAttributeController = this.createUserAttributeController(container);\n const userPermissionController = this.createUserPermissionController(container);\n const userRoleController = this.createUserRoleController(container);\n const policyController = this.createPolicyController(container);\n const identityProviderRoleController = this.createIdentityProviderRoleController(container);\n\n router.use(decorators({\n controllers: [\n this.createAuthorize(container),\n this.createToken(container),\n this.createJwkController(container),\n this.createOpenIDController(container),\n this.createActivateController(container),\n this.createPasswordForgotController(container),\n this.createPasswordResetController(container),\n this.createRegisterController(container),\n\n this.createStatusController(container),\n\n clientController,\n clientPermissionController,\n clientRoleController,\n clientScopeController,\n identityProviderRoleController,\n this.createIdentityProvider(container),\n permissionController,\n permissionPolicyController,\n policyController,\n robotController,\n robotPermissionController,\n robotRoleController,\n realmController,\n roleController,\n roleAttributeController,\n rolePermissionController,\n scopeController,\n userController,\n userAttributeController,\n userPermissionController,\n userRoleController,\n ],\n }));\n }\n\n // ----------------------------------------------------\n\n createAuthorize(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const accessTokenIssuer = container.resolve(OAuth2InjectionToken.AccessTokenIssuer);\n const openIdTokenIssuer = container.resolve(OAuth2InjectionToken.OpenIDTokenIssuer);\n\n const codeIssuer = container.resolve(OAuth2InjectionToken.AuthorizationCodeIssuer);\n const codeRequestVerifier = container.resolve(OAuth2InjectionToken.AuthorizationCodeRequestVerifier);\n\n const identityResolver = container.resolve(IdentityInjectionKey.Resolver);\n\n return new AuthorizeController({\n options: {\n baseURL: config.publicUrl,\n features: this.buildUIFeatures(config),\n },\n\n accessTokenIssuer,\n openIdTokenIssuer,\n\n codeIssuer,\n codeRequestVerifier,\n\n identityResolver,\n });\n }\n\n createToken(container: IContainer) {\n const sessionManager = container.resolve(AuthenticationInjectionKey.SessionManager);\n\n const codeVerifier = container.resolve(OAuth2InjectionToken.AuthorizationCodeVerifier);\n\n const accessTokenIssuer = container.resolve(OAuth2InjectionToken.AccessTokenIssuer);\n const refreshTokenIssuer = container.resolve(OAuth2InjectionToken.RefreshTokenIssuer);\n\n const tokenRevoker = container.resolve(OAuth2InjectionToken.TokenRevoker);\n const tokenVerifier = container.resolve(OAuth2InjectionToken.TokenVerifier);\n\n const identityResolver = container.resolve(IdentityInjectionKey.Resolver);\n const identityProviderLdapCollectionAuthenticator = container.resolve(IdentityInjectionKey.ProviderLdapCollectionAuthenticator);\n\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n\n const clientAuthenticator = new ClientAuthenticator(identityResolver);\n const robotAuthenticator = new RobotAuthenticator(identityResolver);\n\n const userAuthenticator = new CredentialsAuthenticator([\n identityProviderLdapCollectionAuthenticator,\n new UserAuthenticator(identityResolver),\n ]);\n\n const oauth2ClientAuthenticator = new OAuth2ClientAuthenticator(identityResolver);\n\n return new TokenController({\n codeVerifier,\n\n accessTokenIssuer,\n refreshTokenIssuer,\n\n tokenVerifier,\n tokenRevoker,\n\n identityResolver,\n identityPermissionProvider,\n\n clientAuthenticator,\n robotAuthenticator,\n userAuthenticator,\n\n oauth2ClientAuthenticator,\n\n sessionManager,\n });\n }\n\n createOpenIDController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n return new OpenIDController({ baseURL: config.publicUrl });\n }\n\n createActivateController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n return new ActivateController({\n options: {\n baseURL: config.publicUrl,\n features: this.buildUIFeatures(config),\n },\n service: this.createRegistrationService(container),\n });\n }\n\n createPasswordForgotController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n return new PasswordForgotController({\n options: {\n baseURL: config.publicUrl,\n features: this.buildUIFeatures(config),\n },\n service: this.createPasswordRecoveryService(container),\n });\n }\n\n createPasswordResetController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n return new PasswordResetController({\n options: {\n baseURL: config.publicUrl,\n features: this.buildUIFeatures(config),\n },\n service: this.createPasswordRecoveryService(container),\n });\n }\n\n createPasswordRecoveryService(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n });\n const mailClient = container.resolve(MailInjectionKey);\n const mailTemplateRenderer = container.resolve(MailTemplateRendererInjectionKey);\n\n return new PasswordRecoveryService({\n mailClient,\n mailTemplateRenderer,\n repository,\n realmRepository: new RealmRepositoryAdapter(realmRepository),\n options: {\n passwordRecoveryEnabled: config.passwordRecoveryEnabled,\n emailVerificationEnabled: config.emailVerificationEnabled,\n publicUrl: config.publicUrl,\n },\n });\n }\n\n createRegisterController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n return new RegisterController({\n options: {\n baseURL: config.publicUrl,\n features: this.buildUIFeatures(config),\n },\n service: this.createRegistrationService(container),\n });\n }\n\n createStatusController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n return new StatusController({ options: { features: this.buildUIFeatures(config) } });\n }\n\n buildUIFeatures(config: Config) : StatusResponseFeatures {\n return {\n registration: config.registrationEnabled,\n passwordRecovery: config.passwordRecoveryEnabled,\n emailVerification: config.emailVerificationEnabled,\n };\n }\n\n createRegistrationService(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n });\n const mailClient = container.resolve(MailInjectionKey);\n const mailTemplateRenderer = container.resolve(MailTemplateRendererInjectionKey);\n\n return new RegistrationService({\n mailClient,\n mailTemplateRenderer,\n repository,\n realmRepository: new RealmRepositoryAdapter(realmRepository),\n options: {\n registrationEnabled: config.registrationEnabled,\n emailVerificationEnabled: config.emailVerificationEnabled,\n publicUrl: config.publicUrl,\n },\n });\n }\n\n createIdentityProvider(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n\n const accountManager = container.resolve(IdentityInjectionKey.ProviderAccountManager);\n\n const codeIssuer = container.resolve(OAuth2InjectionToken.AuthorizationCodeIssuer);\n\n const codeRequestVerifier = container.resolve(OAuth2InjectionToken.AuthorizationCodeRequestVerifier);\n\n const stateManager = container.resolve(OAuth2InjectionToken.AuthorizationStateManager);\n\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n\n const repository = new IdentityProviderRepositoryAdapter({\n repository: new IdentityProviderRepository(dataSource),\n realmRepository,\n });\n\n return new IdentityProviderController({\n options: { baseURL: config.publicUrl },\n\n repository,\n realmRepository: new RealmRepositoryAdapter(realmRepository),\n\n accountManager,\n\n codeIssuer,\n codeRequestVerifier,\n stateManager,\n });\n }\n\n createClientController(container: IContainer) {\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new ClientRepositoryAdapter({\n repository: container.resolve<Repository<Client>>(ClientEntity),\n realmRepository,\n });\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const service = new ClientService({\n repository,\n realmRepository: realmRepositoryAdapter, \n });\n return new ClientController({\n service,\n repository, \n });\n }\n\n createRobotController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new RobotRepositoryAdapter({\n repository: container.resolve<Repository<Robot>>(RobotEntity),\n realmRepository,\n });\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const service = new RobotService({\n repository,\n realmRepository: realmRepositoryAdapter, \n });\n return new RobotController({\n service,\n repository,\n realmRepository: realmRepositoryAdapter,\n dataSource,\n });\n }\n\n async createPermissionController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new PermissionRepositoryAdapter({\n repository: container.resolve<Repository<Permission>>(PermissionEntity),\n realmRepository,\n });\n\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const roleRepository = new RoleRepositoryAdapter({\n repository: container.resolve<Repository<Role>>(RoleEntity),\n realmRepository,\n });\n const rolePermissionRepository = new RolePermissionRepositoryAdapter(\n container.resolve<Repository<RolePermission>>(RolePermissionEntity),\n );\n const policyRepository = new PolicyRepositoryAdapter({\n repository: new PolicyRepository(dataSource),\n realmRepository,\n });\n\n const permissionPolicyRepository = new PermissionPolicyRepositoryAdapter(\n container.resolve<Repository<PermissionPolicy>>(PermissionPolicyEntity),\n );\n\n const service = new PermissionService({\n repository,\n realmRepository: realmRepositoryAdapter,\n roleRepository,\n rolePermissionRepository,\n policyRepository,\n permissionPolicyRepository,\n });\n\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const permissionProvider = new PermissionDatabaseProvider(dataSource);\n\n const checkerService = new PermissionCheckerService({\n repository,\n realmRepository: realmRepositoryAdapter,\n permissionProvider,\n identityPermissionProvider,\n });\n\n return new PermissionController({\n service,\n checkerService,\n });\n }\n\n createRoleController(container: IContainer) {\n const realmRepository = new RealmRepositoryAdapter(\n container.resolve<Repository<Realm>>(RealmEntity),\n );\n const repository = new RoleRepositoryAdapter({\n repository: container.resolve<Repository<Role>>(RoleEntity),\n realmRepository: container.resolve<Repository<Realm>>(RealmEntity),\n });\n const service = new RoleService({\n repository,\n realmRepository, \n });\n return new RoleController({ service });\n }\n\n createClientPermissionController(container: IContainer) {\n const repository = new ClientPermissionRepositoryAdapter(\n container.resolve<Repository<ClientPermission>>(ClientPermissionEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new ClientPermissionService({\n repository,\n identityPermissionProvider, \n });\n return new ClientPermissionController({ service });\n }\n\n createClientRoleController(container: IContainer) {\n const repository = new ClientRoleRepositoryAdapter(\n container.resolve<Repository<ClientRole>>(ClientRoleEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new ClientRoleService({ repository, identityPermissionProvider });\n return new ClientRoleController({ service });\n }\n\n createClientScopeController(container: IContainer) {\n const repository = new ClientScopeRepositoryAdapter(\n container.resolve<Repository<ClientScope>>(ClientScopeEntity),\n );\n const service = new ClientScopeService({ repository });\n return new ClientScopeController({ service });\n }\n\n createRobotPermissionController(container: IContainer) {\n const repository = new RobotPermissionRepositoryAdapter(\n container.resolve<Repository<RobotPermission>>(RobotPermissionEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new RobotPermissionService({\n repository,\n identityPermissionProvider, \n });\n return new RobotPermissionController({ service });\n }\n\n createRobotRoleController(container: IContainer) {\n const repository = new RobotRoleRepositoryAdapter(\n container.resolve<Repository<RobotRole>>(RobotRoleEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new RobotRoleService({ repository, identityPermissionProvider });\n return new RobotRoleController({ service });\n }\n\n createRoleAttributeController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const repository = new RoleAttributeRepositoryAdapter(\n container.resolve<Repository<RoleAttribute>>(RoleAttributeEntity),\n );\n const reservedNames = new Set(\n dataSource.getMetadata(RoleEntity).columns.map((c) => c.propertyName),\n );\n const service = new RoleAttributeService({ repository, reservedNames });\n return new RoleAttributeController({ service });\n }\n\n createRolePermissionController(container: IContainer) {\n const repository = new RolePermissionRepositoryAdapter(\n container.resolve<Repository<RolePermission>>(RolePermissionEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new RolePermissionService({\n repository,\n identityPermissionProvider, \n });\n return new RolePermissionController({ service });\n }\n\n createPermissionPolicyController(container: IContainer) {\n const repository = new PermissionPolicyRepositoryAdapter(\n container.resolve<Repository<PermissionPolicy>>(PermissionPolicyEntity),\n );\n const service = new PermissionPolicyService({ repository });\n return new PermissionPolicyController({ service });\n }\n\n createScopeController(container: IContainer) {\n const realmRepository = new RealmRepositoryAdapter(\n container.resolve<Repository<Realm>>(RealmEntity),\n );\n const repository = new ScopeRepositoryAdapter({\n repository: container.resolve<Repository<Scope>>(ScopeEntity),\n realmRepository: container.resolve<Repository<Realm>>(RealmEntity),\n });\n const service = new ScopeService({\n repository,\n realmRepository, \n });\n return new ScopeController({ service });\n }\n\n createUserController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n });\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const service = new UserService({\n repository,\n realmRepository: realmRepositoryAdapter, \n });\n return new UserController({ service });\n }\n\n createUserAttributeController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const repository = new UserAttributeRepositoryAdapter(\n container.resolve<Repository<UserAttribute>>(UserAttributeEntity),\n );\n const reservedNames = new Set(\n dataSource.getMetadata(UserEntity).columns.map((c) => c.propertyName),\n );\n const service = new UserAttributeService({ repository, reservedNames });\n return new UserAttributeController({ service });\n }\n\n createUserPermissionController(container: IContainer) {\n const repository = new UserPermissionRepositoryAdapter(\n container.resolve<Repository<UserPermission>>(UserPermissionEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new UserPermissionService({\n repository,\n identityPermissionProvider, \n });\n return new UserPermissionController({ service });\n }\n\n createUserRoleController(container: IContainer) {\n const repository = new UserRoleRepositoryAdapter(\n container.resolve<Repository<UserRole>>(UserRoleEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new UserRoleService({ repository, identityPermissionProvider });\n return new UserRoleController({ service });\n }\n\n createPolicyController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new PolicyRepositoryAdapter({\n repository: new PolicyRepository(dataSource),\n realmRepository,\n });\n const realmRepositoryAdapter = new RealmRepositoryAdapter(realmRepository);\n const service = new PolicyService({\n repository,\n realmRepository: realmRepositoryAdapter, \n });\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const checkerService = new PolicyCheckerService({\n repository,\n realmRepository: realmRepositoryAdapter,\n identityPermissionProvider,\n });\n\n return new PolicyController({\n service,\n checkerService,\n });\n }\n\n createIdentityProviderRoleController(container: IContainer) {\n const repository = new IdentityProviderRoleMappingRepositoryAdapter(\n container.resolve<Repository<any>>(IdentityProviderRoleMappingEntity),\n );\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n const service = new IdentityProviderRoleMappingService({ repository, identityPermissionProvider });\n return new IdentityProviderRoleMappingController({ service });\n }\n\n createJwkController(container: IContainer) {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const repository = dataSource.getRepository(KeyEntity);\n return new JwkController({ repository });\n }\n\n createRealmController(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const repository = new RealmRepositoryAdapter(realmRepository);\n\n const clientRepository = new ClientRepositoryAdapter({\n repository: container.resolve<Repository<Client>>(ClientEntity),\n realmRepository,\n });\n const logger = container.resolve(LoggerInjectionKey);\n const webClientProvisioner = new WebClientProvisioner({\n clientRepository,\n appOrigins: getAppOrigins(config),\n logger,\n });\n\n const service = new RealmService({\n repository, \n webClientProvisioner, \n logger, \n });\n const keyRepository = dataSource.getRepository(KeyEntity);\n\n return new RealmController({\n options: { baseURL: config.publicUrl },\n service,\n keyRepository,\n });\n }\n}\n"],"mappings":"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"}
@@ -2,10 +2,11 @@ import type { App } from 'routup';
2
2
  import type { IContainer } from 'eldin';
3
3
  export declare class HTTPMiddlewareModule {
4
4
  mountBefore(router: App, container: IContainer): Promise<void>;
5
- mountAfter(router: App, _container: IContainer): Promise<void>;
5
+ mountAfter(router: App, container: IContainer): Promise<void>;
6
6
  mountCors(router: App, container: IContainer): Promise<void>;
7
7
  mountLogger(router: App, container: IContainer): Promise<void>;
8
8
  mountAssets(router: App): Promise<void>;
9
+ mountUIHttpClient(router: App, container: IContainer): Promise<void>;
9
10
  mountBasic(router: App): Promise<void>;
10
11
  mountPrometheus(router: App, container: IContainer): Promise<void>;
11
12
  mountRateLimit(router: App, container: IContainer): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/middleware.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA2BxC,qBAAa,oBAAoB;IACvB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlE,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjE,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/D,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrE,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3E,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,SAAS;CAGpB"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/middleware.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA8BxC,qBAAa,oBAAoB;IACvB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9D,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlE,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjE,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/D,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrE,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3E,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,SAAS;CAGpB"}
@@ -8,10 +8,13 @@ import { ConfigInjectionKey } from "../../config/constants.mjs";
8
8
  import "../../config/index.mjs";
9
9
  import "../../authentication/index.mjs";
10
10
  import { DatabaseInjectionKey } from "../../database/constants.mjs";
11
+ import { LoggerInjectionKey } from "../../logger/constants.mjs";
12
+ import "../../logger/index.mjs";
11
13
  import { RealmRepositoryAdapter } from "../../database/repositories/realm/repository.mjs";
12
14
  import { PermissionDatabaseProvider } from "../../database/repositories/permission-provider/module.mjs";
13
15
  import "../../database/repositories/index.mjs";
14
16
  import "../../database/index.mjs";
17
+ import { HTTPInjectionKey } from "../constants.mjs";
15
18
  import { createAuthorizationMiddleware } from "../../../../adapters/http/middleware/built-in/authorization/factory.mjs";
16
19
  import { createRealmResolverMiddleware } from "../../../../adapters/http/middleware/built-in/realm-resolver/factory.mjs";
17
20
  import { DIST_PATH } from "../../../../path.mjs";
@@ -23,6 +26,7 @@ import { createLoggerMiddleware } from "../../../../adapters/http/middleware/bui
23
26
  import { registerPrometheusMiddleware } from "../../../../adapters/http/middleware/built-in/prometheus.mjs";
24
27
  import { registerRateLimitMiddleware } from "../../../../adapters/http/middleware/built-in/rate-limit.mjs";
25
28
  import { createSwaggerMiddleware } from "../../../../adapters/http/middleware/built-in/swagger.mjs";
29
+ import { registerUIHttpClientMiddleware } from "../../../../adapters/http/middleware/built-in/ui-http-client.mjs";
26
30
  import "../../../../adapters/http/index.mjs";
27
31
  import { OAuth2InjectionToken } from "../../oauth2/constants.mjs";
28
32
  import { IdentityInjectionKey } from "../../identity/constants.mjs";
@@ -36,27 +40,35 @@ var HTTPMiddlewareModule = class {
36
40
  await this.mountLogger(router, container);
37
41
  await this.mountCors(router, container);
38
42
  await this.mountAssets(router);
43
+ await this.mountUIHttpClient(router, container);
39
44
  await this.mountBasic(router);
40
45
  await this.mountRateLimit(router, container);
41
46
  await this.mountSwagger(router, container);
42
47
  await this.mountAuthorization(router, container);
43
48
  await this.mountRealmResolver(router, container);
44
49
  }
45
- async mountAfter(router, _container) {
46
- registerErrorMiddleware(router);
50
+ async mountAfter(router, container) {
51
+ registerErrorMiddleware(router, { logger: container.resolve(LoggerInjectionKey) });
47
52
  }
48
53
  async mountCors(router, container) {
49
54
  const config = container.resolve(ConfigInjectionKey);
50
55
  if (!this.isEnabled(config.middlewareCors)) return;
51
- registerCorsMiddleware(router, this.transformBoolToEmptyObject(config.middlewareCors));
56
+ registerCorsMiddleware(router, this.transformBoolToEmptyObject(config.middlewareCors) ?? {});
52
57
  }
53
58
  async mountLogger(router, container) {
54
- const middleware = createLoggerMiddleware({ env: container.resolve(ConfigInjectionKey).env });
59
+ const middleware = createLoggerMiddleware({
60
+ env: container.resolve(ConfigInjectionKey).env,
61
+ logger: container.resolve(LoggerInjectionKey)
62
+ });
55
63
  router.use(middleware);
56
64
  }
57
65
  async mountAssets(router) {
58
66
  await registerAssetsMiddleware(router);
59
67
  }
68
+ async mountUIHttpClient(router, container) {
69
+ if (!container.has(HTTPInjectionKey.UIHttpClient)) return;
70
+ registerUIHttpClientMiddleware(router, () => container.resolve(HTTPInjectionKey.UIHttpClient));
71
+ }
60
72
  async mountBasic(router) {
61
73
  registerBasicMiddleware(router);
62
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.mjs","names":["path","createAuthorizationMiddleware","createLoggerMiddleware","createRealmResolverMiddleware","createSwaggerMiddleware","registerAssetsMiddleware","registerBasicMiddleware","registerCorsMiddleware","registerErrorMiddleware","registerPrometheusMiddleware","registerRateLimitMiddleware","DIST_PATH","AuthenticationInjectionKey","ConfigInjectionKey","IdentityInjectionKey","OAuth2InjectionToken","RealmEntity","RealmRepositoryAdapter","DatabaseInjectionKey","PermissionDatabaseProvider","HTTPMiddlewareModule","mountBefore","router","container","mountPrometheus","mountLogger","mountCors","mountAssets","mountBasic","mountRateLimit","mountSwagger","mountAuthorization","mountRealmResolver","mountAfter","_container","config","resolve","isEnabled","middlewareCors","transformBoolToEmptyObject","middleware","env","use","middlewarePrometheus","middlewareRateLimit","middlewareSwagger","documentPath","join","baseURL","publicUrl","realmRepository","dataSource","DataSource","identityResolver","Resolver","sessionManager","SessionManager","oauth2TokenVerifier","TokenVerifier","identityPermissionProvider","PermissionProvider","permissionProvider","options","clientAuthBasic","robotAuthBasic","userAuthBasic","input"],"sources":["../../../../../src/app/modules/http/modules/middleware.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { App } from 'routup';\nimport path from 'node:path';\nimport type { IContainer } from 'eldin';\nimport type { Repository } from 'typeorm';\nimport type { Realm } from '@authup/core-kit';\nimport {\n createAuthorizationMiddleware,\n createLoggerMiddleware,\n createRealmResolverMiddleware,\n createSwaggerMiddleware,\n registerAssetsMiddleware,\n registerBasicMiddleware,\n registerCorsMiddleware,\n registerErrorMiddleware,\n registerPrometheusMiddleware,\n registerRateLimitMiddleware,\n} from '../../../../adapters/http/index.ts';\nimport { DIST_PATH } from '../../../../path.ts';\nimport { AuthenticationInjectionKey } from '../../authentication/index.ts';\nimport { ConfigInjectionKey } from '../../config/index.ts';\nimport { IdentityInjectionKey } from '../../identity/index.ts';\nimport { OAuth2InjectionToken } from '../../oauth2/index.ts';\nimport { RealmEntity } from '../../../../adapters/database/domains/index.ts';\nimport { RealmRepositoryAdapter } from '../../database/repositories/index.ts';\nimport {\n DatabaseInjectionKey,\n PermissionDatabaseProvider,\n} from '../../database/index.ts';\n\nexport class HTTPMiddlewareModule {\n async mountBefore(router: App, container: IContainer): Promise<void> {\n // @routup/prometheus must be installed before any other plugin or\n // route so that its onion middleware can observe the full request\n // lifecycle (the v3 README is explicit on this).\n await this.mountPrometheus(router, container);\n await this.mountLogger(router, container);\n await this.mountCors(router, container);\n await this.mountAssets(router);\n await this.mountBasic(router);\n await this.mountRateLimit(router, container);\n\n await this.mountSwagger(router, container);\n await this.mountAuthorization(router, container);\n await this.mountRealmResolver(router, container);\n }\n\n \n async mountAfter(router: App, _container: IContainer): Promise<void> {\n registerErrorMiddleware(router);\n }\n\n // ----------------------------------------------------\n async mountCors(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n\n if (!this.isEnabled(config.middlewareCors)) {\n return;\n }\n\n registerCorsMiddleware(router, this.transformBoolToEmptyObject(config.middlewareCors));\n }\n\n async mountLogger(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const middleware = createLoggerMiddleware({ env: config.env });\n\n router.use(middleware);\n }\n\n async mountAssets(router: App): Promise<void> {\n await registerAssetsMiddleware(router);\n }\n\n async mountBasic(router: App): Promise<void> {\n registerBasicMiddleware(router);\n }\n\n async mountPrometheus(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n\n if (!this.isEnabled(config.middlewarePrometheus)) {\n return;\n }\n\n registerPrometheusMiddleware(router, this.transformBoolToEmptyObject(config.middlewarePrometheus));\n }\n\n async mountRateLimit(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n\n if (!this.isEnabled(config.middlewareRateLimit)) {\n return;\n }\n\n registerRateLimitMiddleware(router, this.transformBoolToEmptyObject(config.middlewareRateLimit));\n }\n\n async mountSwagger(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n if (!this.isEnabled(config.middlewareSwagger)) {\n return;\n }\n\n const middleware = createSwaggerMiddleware({\n documentPath: path.join(DIST_PATH, 'swagger.json'),\n baseURL: config.publicUrl,\n });\n\n router.use('/docs', middleware);\n }\n\n async mountRealmResolver(router: App, container: IContainer): Promise<void> {\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const middleware = createRealmResolverMiddleware({ realmRepository: new RealmRepositoryAdapter(realmRepository) });\n\n // Mounted at /realms/:realmId/:nested so the middleware only fires on\n // nested-resource URLs (e.g. /realms/master/users/...). Bare\n // /realms/:id routes belong to RealmController (CRUD, openid-config,\n // jwks) and would otherwise 404 on PUT upserts where the realm\n // doesn't exist yet.\n router.use('/realms/:realmId/:nested', middleware);\n }\n\n async mountAuthorization(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n\n const identityResolver = container.resolve(IdentityInjectionKey.Resolver);\n const sessionManager = container.resolve(AuthenticationInjectionKey.SessionManager);\n const oauth2TokenVerifier = container.resolve(OAuth2InjectionToken.TokenVerifier);\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n\n const permissionProvider = new PermissionDatabaseProvider(dataSource);\n\n const middleware = createAuthorizationMiddleware({\n identityResolver,\n identityPermissionProvider,\n permissionProvider,\n oauth2TokenVerifier,\n sessionManager,\n options: {\n clientAuthBasic: config.clientAuthBasic,\n robotAuthBasic: config.robotAuthBasic,\n userAuthBasic: config.userAuthBasic,\n },\n });\n\n router.use(middleware);\n }\n\n // ----------------------------------------------------\n\n private transformBoolToEmptyObject<T extends Record<string, any>>(\n input?: T | boolean,\n ) : T | undefined {\n if (typeof input === 'boolean') {\n return {} as T;\n }\n\n return input || {} as T;\n }\n\n private isEnabled<T>(input: T | boolean) {\n return typeof input !== 'boolean' || input === true;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"middleware.mjs","names":["path","createAuthorizationMiddleware","createLoggerMiddleware","createRealmResolverMiddleware","createSwaggerMiddleware","registerAssetsMiddleware","registerBasicMiddleware","registerCorsMiddleware","registerErrorMiddleware","registerPrometheusMiddleware","registerRateLimitMiddleware","registerUIHttpClientMiddleware","HTTPInjectionKey","DIST_PATH","AuthenticationInjectionKey","ConfigInjectionKey","LoggerInjectionKey","IdentityInjectionKey","OAuth2InjectionToken","RealmEntity","RealmRepositoryAdapter","DatabaseInjectionKey","PermissionDatabaseProvider","HTTPMiddlewareModule","mountBefore","router","container","mountPrometheus","mountLogger","mountCors","mountAssets","mountUIHttpClient","mountBasic","mountRateLimit","mountSwagger","mountAuthorization","mountRealmResolver","mountAfter","logger","resolve","config","isEnabled","middlewareCors","options","transformBoolToEmptyObject","middleware","env","use","has","UIHttpClient","middlewarePrometheus","middlewareRateLimit","middlewareSwagger","documentPath","join","baseURL","publicUrl","realmRepository","dataSource","DataSource","identityResolver","Resolver","sessionManager","SessionManager","oauth2TokenVerifier","TokenVerifier","identityPermissionProvider","PermissionProvider","permissionProvider","clientAuthBasic","robotAuthBasic","userAuthBasic","input"],"sources":["../../../../../src/app/modules/http/modules/middleware.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { App } from 'routup';\nimport path from 'node:path';\nimport type { IContainer } from 'eldin';\nimport type { Repository } from 'typeorm';\nimport type { Realm } from '@authup/core-kit';\nimport {\n createAuthorizationMiddleware,\n createLoggerMiddleware,\n createRealmResolverMiddleware,\n createSwaggerMiddleware,\n registerAssetsMiddleware,\n registerBasicMiddleware,\n registerCorsMiddleware,\n registerErrorMiddleware,\n registerPrometheusMiddleware,\n registerRateLimitMiddleware,\n registerUIHttpClientMiddleware,\n} from '../../../../adapters/http/index.ts';\nimport { HTTPInjectionKey } from '../constants.ts';\nimport { DIST_PATH } from '../../../../path.ts';\nimport { AuthenticationInjectionKey } from '../../authentication/index.ts';\nimport { ConfigInjectionKey } from '../../config/index.ts';\nimport { LoggerInjectionKey } from '../../logger/index.ts';\nimport { IdentityInjectionKey } from '../../identity/index.ts';\nimport { OAuth2InjectionToken } from '../../oauth2/index.ts';\nimport { RealmEntity } from '../../../../adapters/database/domains/index.ts';\nimport { RealmRepositoryAdapter } from '../../database/repositories/index.ts';\nimport {\n DatabaseInjectionKey,\n PermissionDatabaseProvider,\n} from '../../database/index.ts';\n\nexport class HTTPMiddlewareModule {\n async mountBefore(router: App, container: IContainer): Promise<void> {\n // @routup/prometheus must be installed before any other plugin or\n // route so that its onion middleware can observe the full request\n // lifecycle (the v3 README is explicit on this).\n await this.mountPrometheus(router, container);\n await this.mountLogger(router, container);\n await this.mountCors(router, container);\n await this.mountAssets(router);\n await this.mountUIHttpClient(router, container);\n await this.mountBasic(router);\n await this.mountRateLimit(router, container);\n\n await this.mountSwagger(router, container);\n await this.mountAuthorization(router, container);\n await this.mountRealmResolver(router, container);\n }\n\n\n async mountAfter(router: App, container: IContainer): Promise<void> {\n registerErrorMiddleware(router, { logger: container.resolve(LoggerInjectionKey) });\n }\n\n // ----------------------------------------------------\n async mountCors(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n\n if (!this.isEnabled(config.middlewareCors)) {\n return;\n }\n\n const options = this.transformBoolToEmptyObject(config.middlewareCors) ?? {};\n\n registerCorsMiddleware(router, options);\n }\n\n async mountLogger(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const middleware = createLoggerMiddleware({\n env: config.env,\n logger: container.resolve(LoggerInjectionKey),\n });\n\n router.use(middleware);\n }\n\n async mountAssets(router: App): Promise<void> {\n await registerAssetsMiddleware(router);\n }\n\n async mountUIHttpClient(router: App, container: IContainer): Promise<void> {\n if (!container.has(HTTPInjectionKey.UIHttpClient)) {\n return;\n }\n\n registerUIHttpClientMiddleware(router, () => container.resolve(HTTPInjectionKey.UIHttpClient));\n }\n\n async mountBasic(router: App): Promise<void> {\n registerBasicMiddleware(router);\n }\n\n async mountPrometheus(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n\n if (!this.isEnabled(config.middlewarePrometheus)) {\n return;\n }\n\n registerPrometheusMiddleware(router, this.transformBoolToEmptyObject(config.middlewarePrometheus));\n }\n\n async mountRateLimit(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n\n if (!this.isEnabled(config.middlewareRateLimit)) {\n return;\n }\n\n registerRateLimitMiddleware(router, this.transformBoolToEmptyObject(config.middlewareRateLimit));\n }\n\n async mountSwagger(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n if (!this.isEnabled(config.middlewareSwagger)) {\n return;\n }\n\n const middleware = createSwaggerMiddleware({\n documentPath: path.join(DIST_PATH, 'swagger.json'),\n baseURL: config.publicUrl,\n });\n\n router.use('/docs', middleware);\n }\n\n async mountRealmResolver(router: App, container: IContainer): Promise<void> {\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n const middleware = createRealmResolverMiddleware({ realmRepository: new RealmRepositoryAdapter(realmRepository) });\n\n // Mounted at /realms/:realmId/:nested so the middleware only fires on\n // nested-resource URLs (e.g. /realms/master/users/...). Bare\n // /realms/:id routes belong to RealmController (CRUD, openid-config,\n // jwks) and would otherwise 404 on PUT upserts where the realm\n // doesn't exist yet.\n router.use('/realms/:realmId/:nested', middleware);\n }\n\n async mountAuthorization(router: App, container: IContainer): Promise<void> {\n const config = container.resolve(ConfigInjectionKey);\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n\n const identityResolver = container.resolve(IdentityInjectionKey.Resolver);\n const sessionManager = container.resolve(AuthenticationInjectionKey.SessionManager);\n const oauth2TokenVerifier = container.resolve(OAuth2InjectionToken.TokenVerifier);\n const identityPermissionProvider = container.resolve(IdentityInjectionKey.PermissionProvider);\n\n const permissionProvider = new PermissionDatabaseProvider(dataSource);\n\n const middleware = createAuthorizationMiddleware({\n identityResolver,\n identityPermissionProvider,\n permissionProvider,\n oauth2TokenVerifier,\n sessionManager,\n options: {\n clientAuthBasic: config.clientAuthBasic,\n robotAuthBasic: config.robotAuthBasic,\n userAuthBasic: config.userAuthBasic,\n },\n });\n\n router.use(middleware);\n }\n\n // ----------------------------------------------------\n\n private transformBoolToEmptyObject<T extends Record<string, any>>(\n input?: T | boolean,\n ) : T | undefined {\n if (typeof input === 'boolean') {\n return {} as T;\n }\n\n return input || {} as T;\n }\n\n private isEnabled<T>(input: T | boolean) {\n return typeof input !== 'boolean' || input === true;\n }\n}\n"],"mappings":"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"}
@@ -90,10 +90,10 @@ var IdentityModule = class {
90
90
  roleRepository: roleRepositoryAdapter,
91
91
  roleProvider: c.resolve(IdentityInjectionKey.RoleProvider)
92
92
  }) });
93
- const attributeMapper = new IdentityProviderAttributeMapper(new IdentityProviderAttributeMappingRepository());
94
- const roleMapper = new IdentityProviderRoleMapper(new IdentityProviderRoleMappingRepository());
95
- const permissionMapper = new IdentityProviderPermissionMapper(new IdentityProviderPermissionMappingRepository());
96
- const providerAccountRepository = new IdentityProviderAccountRepository();
93
+ const attributeMapper = new IdentityProviderAttributeMapper(new IdentityProviderAttributeMappingRepository(dataSource));
94
+ const roleMapper = new IdentityProviderRoleMapper(new IdentityProviderRoleMappingRepository(dataSource));
95
+ const permissionMapper = new IdentityProviderPermissionMapper(new IdentityProviderPermissionMappingRepository(dataSource));
96
+ const providerAccountRepository = new IdentityProviderAccountRepository(dataSource);
97
97
  container.register(IdentityInjectionKey.ProviderAccountManager, { useFactory: () => new IdentityProviderAccountManager({
98
98
  repository: providerAccountRepository,
99
99
  userRepository,
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["ClientIdentityRepository","IdentityProviderAccountRepository","IdentityProviderAttributeMappingRepository","IdentityProviderPermissionMappingRepository","IdentityProviderRoleMappingRepository","RobotIdentityRepository","UserIdentityRepository","DatabaseInjectionKey","IdentityProviderRepositoryAdapter","ClientEntity","IdentityProviderRepository","RealmEntity","RobotEntity","RoleEntity","UserPermissionEntity","UserRepository","UserRoleEntity","ClientRepositoryAdapter","RobotRepositoryAdapter","RoleRepositoryAdapter","UserRepositoryAdapter","IdentityPermissionProvider","IdentityProviderAccountManager","IdentityProviderAttributeMapper","IdentityProviderLdapCollectionAuthenticator","IdentityProviderPermissionMapper","IdentityProviderRoleMapper","IdentityResolver","IdentityRoleProvider","LDAPInjectionKey","ModuleName","IdentityInjectionKey","IdentityModule","name","dependencies","IDENTITY","DATABASE","setup","container","dataSource","resolve","DataSource","realmRepository","clientRepository","robotRepository","userRepository","repository","userPermissionRepository","userRoleRepository","register","Resolver","useFactory","clientRepositoryAdapter","userRepositoryAdapter","robotRepositoryAdapter","roleRepositoryAdapter","RoleProvider","PermissionProvider","c","roleRepository","roleProvider","attributeMapperRepository","attributeMapper","roleMapperFinder","roleMapper","permissionMapperRepository","permissionMapper","providerAccountRepository","ProviderAccountManager","identityProviderRepository","ProviderLdapCollectionAuthenticator","accountManager","clientFactory","ClientFactory"],"sources":["../../../../src/app/modules/identity/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 Client,\n Realm,\n Robot,\n Role,\n UserPermission,\n UserRole,\n} from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport {\n ClientIdentityRepository,\n IdentityProviderAccountRepository,\n IdentityProviderAttributeMappingRepository,\n IdentityProviderPermissionMappingRepository,\n IdentityProviderRoleMappingRepository,\n RobotIdentityRepository,\n UserIdentityRepository,\n} from './repositories/index.ts';\nimport { DatabaseInjectionKey, IdentityProviderRepositoryAdapter } from '../database/index.ts';\nimport {\n ClientEntity,\n IdentityProviderRepository,\n RealmEntity,\n RobotEntity,\n RoleEntity,\n UserPermissionEntity,\n UserRepository,\n UserRoleEntity,\n} from '../../../adapters/database/domains/index.ts';\nimport {\n ClientRepositoryAdapter,\n RobotRepositoryAdapter,\n RoleRepositoryAdapter,\n UserRepositoryAdapter,\n} from '../database/repositories/index.ts';\nimport type { IContainer } from 'eldin';\nimport {\n IdentityPermissionProvider,\n IdentityProviderAccountManager,\n IdentityProviderAttributeMapper,\n IdentityProviderLdapCollectionAuthenticator,\n IdentityProviderPermissionMapper,\n IdentityProviderRoleMapper,\n IdentityResolver,\n IdentityRoleProvider,\n} from '../../../core/index.ts';\nimport { LDAPInjectionKey } from '../ldap/index.ts';\n\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { IdentityInjectionKey } from './constants.ts';\n\nexport class IdentityModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.IDENTITY;\n this.dependencies = [ModuleName.DATABASE];\n }\n\n async setup(container: IContainer): Promise<void> {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n\n const clientRepository = new ClientIdentityRepository(\n container.resolve<Repository<Client>>(ClientEntity),\n );\n const robotRepository = new RobotIdentityRepository(\n container.resolve<Repository<Robot>>(RobotEntity),\n );\n const userRepository = new UserIdentityRepository({\n repository: new UserRepository(dataSource),\n userPermissionRepository: container.resolve<Repository<UserPermission>>(UserPermissionEntity),\n userRoleRepository: container.resolve<Repository<UserRole>>(UserRoleEntity),\n });\n\n container.register(IdentityInjectionKey.Resolver, {\n useFactory: () => new IdentityResolver({\n clientRepository,\n robotRepository,\n userRepository,\n }),\n });\n\n // ---------------------------------------------\n\n const clientRepositoryAdapter = new ClientRepositoryAdapter({\n repository: container.resolve<Repository<Client>>(ClientEntity),\n realmRepository,\n });\n const userRepositoryAdapter = new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n });\n const robotRepositoryAdapter = new RobotRepositoryAdapter({\n repository: container.resolve<Repository<Robot>>(RobotEntity),\n realmRepository,\n });\n const roleRepositoryAdapter = new RoleRepositoryAdapter({\n repository: container.resolve<Repository<Role>>(RoleEntity),\n realmRepository,\n });\n\n container.register(IdentityInjectionKey.RoleProvider, {\n useFactory: () => new IdentityRoleProvider({\n clientRepository: clientRepositoryAdapter,\n userRepository: userRepositoryAdapter,\n robotRepository: robotRepositoryAdapter,\n }),\n });\n\n container.register(IdentityInjectionKey.PermissionProvider, {\n useFactory: (c) => new IdentityPermissionProvider({\n clientRepository: clientRepositoryAdapter,\n userRepository: userRepositoryAdapter,\n robotRepository: robotRepositoryAdapter,\n roleRepository: roleRepositoryAdapter,\n roleProvider: c.resolve(IdentityInjectionKey.RoleProvider),\n }),\n });\n\n // ---------------------------------------------\n\n const attributeMapperRepository = new IdentityProviderAttributeMappingRepository();\n const attributeMapper = new IdentityProviderAttributeMapper(attributeMapperRepository);\n\n const roleMapperFinder = new IdentityProviderRoleMappingRepository();\n const roleMapper = new IdentityProviderRoleMapper(roleMapperFinder);\n\n const permissionMapperRepository = new IdentityProviderPermissionMappingRepository();\n const permissionMapper = new IdentityProviderPermissionMapper(permissionMapperRepository);\n\n const providerAccountRepository = new IdentityProviderAccountRepository();\n\n container.register(IdentityInjectionKey.ProviderAccountManager, {\n useFactory: () => new IdentityProviderAccountManager({\n repository: providerAccountRepository,\n userRepository,\n attributeMapper,\n roleMapper,\n permissionMapper,\n }),\n });\n\n // ---------------------------------------------\n\n const identityProviderRepository = new IdentityProviderRepositoryAdapter({\n repository: new IdentityProviderRepository(dataSource),\n realmRepository: container.resolve<Repository<Realm>>(RealmEntity),\n });\n container.register(IdentityInjectionKey.ProviderLdapCollectionAuthenticator, {\n useFactory: (c) => new IdentityProviderLdapCollectionAuthenticator({\n repository: identityProviderRepository,\n accountManager: c.resolve(IdentityInjectionKey.ProviderAccountManager),\n clientFactory: c.resolve(LDAPInjectionKey.ClientFactory),\n }),\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DA,IAAagC,iBAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;EACV,KAAKD,OAAOH,WAAWK;EACvB,KAAKD,eAAe,CAACJ,WAAWM,QAAAA;CACpC;CAEA,MAAMC,MAAMC,WAAsC;EAC9C,MAAMC,aAAaD,UAAUE,QAAQjC,qBAAqBkC,UAAU;EACpE,MAAMC,kBAAkBJ,UAAUE,QAA2B7B,WAAAA;EAE7D,MAAMgC,mBAAmB,IAAI3C,yBACzBsC,UAAUE,QAA4B/B,YAAAA,CAAAA;EAE1C,MAAMmC,kBAAkB,IAAIvC,wBACxBiC,UAAUE,QAA2B5B,WAAAA,CAAAA;EAEzC,MAAMiC,iBAAiB,IAAIvC,uBAAuB;GAC9CwC,YAAY,IAAI/B,eAAewB,UAAAA;GAC/BQ,0BAA0BT,UAAUE,QAAoC1B,oBAAAA;GACxEkC,oBAAoBV,UAAUE,QAA8BxB,cAAAA;EAChE,CAAA;EAEAsB,UAAUW,SAASlB,qBAAqBmB,UAAU,EAC9CC,kBAAkB,IAAIxB,iBAAiB;GACnCgB;GACAC;GACAC;EACJ,CAAA,EACJ,CAAA;EAIA,MAAMO,0BAA0B,IAAInC,wBAAwB;GACxD6B,YAAYR,UAAUE,QAA4B/B,YAAAA;GAClDiC;EACJ,CAAA;EACA,MAAMW,wBAAwB,IAAIjC,sBAAsB;GACpD0B,YAAY,IAAI/B,eAAewB,UAAAA;GAC/BG;EACJ,CAAA;EACA,MAAMY,yBAAyB,IAAIpC,uBAAuB;GACtD4B,YAAYR,UAAUE,QAA2B5B,WAAAA;GACjD8B;EACJ,CAAA;EACA,MAAMa,wBAAwB,IAAIpC,sBAAsB;GACpD2B,YAAYR,UAAUE,QAA0B3B,UAAAA;GAChD6B;EACJ,CAAA;EAEAJ,UAAUW,SAASlB,qBAAqByB,cAAc,EAClDL,kBAAkB,IAAIvB,qBAAqB;GACvCe,kBAAkBS;GAClBP,gBAAgBQ;GAChBT,iBAAiBU;EACrB,CAAA,EACJ,CAAA;EAEAhB,UAAUW,SAASlB,qBAAqB0B,oBAAoB,EACxDN,aAAaO,MAAM,IAAIrC,2BAA2B;GAC9CsB,kBAAkBS;GAClBP,gBAAgBQ;GAChBT,iBAAiBU;GACjBK,gBAAgBJ;GAChBK,cAAcF,EAAElB,QAAQT,qBAAqByB,YAAY;EAC7D,CAAA,EACJ,CAAA;EAKA,MAAMM,kBAAkB,IAAIvC,gCAAgCsC,IADtB3D,2CACsB2D,CAAAA;EAG5D,MAAMG,aAAa,IAAItC,2BAA2BqC,IADrB3D,sCACqB2D,CAAAA;EAGlD,MAAMG,mBAAmB,IAAIzC,iCAAiCwC,IADvB9D,4CACuB8D,CAAAA;EAE9D,MAAME,4BAA4B,IAAIlE,kCAAAA;EAEtCqC,UAAUW,SAASlB,qBAAqBqC,wBAAwB,EAC5DjB,kBAAkB,IAAI7B,+BAA+B;GACjDwB,YAAYqB;GACZtB;GACAiB;GACAE;GACAE;EACJ,CAAA,EACJ,CAAA;EAIA,MAAMG,6BAA6B,IAAI7D,kCAAkC;GACrEsC,YAAY,IAAIpC,2BAA2B6B,UAAAA;GAC3CG,iBAAiBJ,UAAUE,QAA2B7B,WAAAA;EAC1D,CAAA;EACA2B,UAAUW,SAASlB,qBAAqBuC,qCAAqC,EACzEnB,aAAaO,MAAM,IAAIlC,4CAA4C;GAC/DsB,YAAYuB;GACZE,gBAAgBb,EAAElB,QAAQT,qBAAqBqC,sBAAsB;GACrEI,eAAed,EAAElB,QAAQX,iBAAiB4C,aAAa;EAC3D,CAAA,EACJ,CAAA;CACJ;AACJ"}
1
+ {"version":3,"file":"module.mjs","names":["ClientIdentityRepository","IdentityProviderAccountRepository","IdentityProviderAttributeMappingRepository","IdentityProviderPermissionMappingRepository","IdentityProviderRoleMappingRepository","RobotIdentityRepository","UserIdentityRepository","DatabaseInjectionKey","IdentityProviderRepositoryAdapter","ClientEntity","IdentityProviderRepository","RealmEntity","RobotEntity","RoleEntity","UserPermissionEntity","UserRepository","UserRoleEntity","ClientRepositoryAdapter","RobotRepositoryAdapter","RoleRepositoryAdapter","UserRepositoryAdapter","IdentityPermissionProvider","IdentityProviderAccountManager","IdentityProviderAttributeMapper","IdentityProviderLdapCollectionAuthenticator","IdentityProviderPermissionMapper","IdentityProviderRoleMapper","IdentityResolver","IdentityRoleProvider","LDAPInjectionKey","ModuleName","IdentityInjectionKey","IdentityModule","name","dependencies","IDENTITY","DATABASE","setup","container","dataSource","resolve","DataSource","realmRepository","clientRepository","robotRepository","userRepository","repository","userPermissionRepository","userRoleRepository","register","Resolver","useFactory","clientRepositoryAdapter","userRepositoryAdapter","robotRepositoryAdapter","roleRepositoryAdapter","RoleProvider","PermissionProvider","c","roleRepository","roleProvider","attributeMapperRepository","attributeMapper","roleMapperFinder","roleMapper","permissionMapperRepository","permissionMapper","providerAccountRepository","ProviderAccountManager","identityProviderRepository","ProviderLdapCollectionAuthenticator","accountManager","clientFactory","ClientFactory"],"sources":["../../../../src/app/modules/identity/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 Client,\n Realm,\n Robot,\n Role,\n UserPermission,\n UserRole,\n} from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport {\n ClientIdentityRepository,\n IdentityProviderAccountRepository,\n IdentityProviderAttributeMappingRepository,\n IdentityProviderPermissionMappingRepository,\n IdentityProviderRoleMappingRepository,\n RobotIdentityRepository,\n UserIdentityRepository,\n} from './repositories/index.ts';\nimport { DatabaseInjectionKey, IdentityProviderRepositoryAdapter } from '../database/index.ts';\nimport {\n ClientEntity,\n IdentityProviderRepository,\n RealmEntity,\n RobotEntity,\n RoleEntity,\n UserPermissionEntity,\n UserRepository,\n UserRoleEntity,\n} from '../../../adapters/database/domains/index.ts';\nimport {\n ClientRepositoryAdapter,\n RobotRepositoryAdapter,\n RoleRepositoryAdapter,\n UserRepositoryAdapter,\n} from '../database/repositories/index.ts';\nimport type { IContainer } from 'eldin';\nimport {\n IdentityPermissionProvider,\n IdentityProviderAccountManager,\n IdentityProviderAttributeMapper,\n IdentityProviderLdapCollectionAuthenticator,\n IdentityProviderPermissionMapper,\n IdentityProviderRoleMapper,\n IdentityResolver,\n IdentityRoleProvider,\n} from '../../../core/index.ts';\nimport { LDAPInjectionKey } from '../ldap/index.ts';\n\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { IdentityInjectionKey } from './constants.ts';\n\nexport class IdentityModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.IDENTITY;\n this.dependencies = [ModuleName.DATABASE];\n }\n\n async setup(container: IContainer): Promise<void> {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n const realmRepository = container.resolve<Repository<Realm>>(RealmEntity);\n\n const clientRepository = new ClientIdentityRepository(\n container.resolve<Repository<Client>>(ClientEntity),\n );\n const robotRepository = new RobotIdentityRepository(\n container.resolve<Repository<Robot>>(RobotEntity),\n );\n const userRepository = new UserIdentityRepository({\n repository: new UserRepository(dataSource),\n userPermissionRepository: container.resolve<Repository<UserPermission>>(UserPermissionEntity),\n userRoleRepository: container.resolve<Repository<UserRole>>(UserRoleEntity),\n });\n\n container.register(IdentityInjectionKey.Resolver, {\n useFactory: () => new IdentityResolver({\n clientRepository,\n robotRepository,\n userRepository,\n }),\n });\n\n // ---------------------------------------------\n\n const clientRepositoryAdapter = new ClientRepositoryAdapter({\n repository: container.resolve<Repository<Client>>(ClientEntity),\n realmRepository,\n });\n const userRepositoryAdapter = new UserRepositoryAdapter({\n repository: new UserRepository(dataSource),\n realmRepository,\n });\n const robotRepositoryAdapter = new RobotRepositoryAdapter({\n repository: container.resolve<Repository<Robot>>(RobotEntity),\n realmRepository,\n });\n const roleRepositoryAdapter = new RoleRepositoryAdapter({\n repository: container.resolve<Repository<Role>>(RoleEntity),\n realmRepository,\n });\n\n container.register(IdentityInjectionKey.RoleProvider, {\n useFactory: () => new IdentityRoleProvider({\n clientRepository: clientRepositoryAdapter,\n userRepository: userRepositoryAdapter,\n robotRepository: robotRepositoryAdapter,\n }),\n });\n\n container.register(IdentityInjectionKey.PermissionProvider, {\n useFactory: (c) => new IdentityPermissionProvider({\n clientRepository: clientRepositoryAdapter,\n userRepository: userRepositoryAdapter,\n robotRepository: robotRepositoryAdapter,\n roleRepository: roleRepositoryAdapter,\n roleProvider: c.resolve(IdentityInjectionKey.RoleProvider),\n }),\n });\n\n // ---------------------------------------------\n\n const attributeMapperRepository = new IdentityProviderAttributeMappingRepository(dataSource);\n const attributeMapper = new IdentityProviderAttributeMapper(attributeMapperRepository);\n\n const roleMapperFinder = new IdentityProviderRoleMappingRepository(dataSource);\n const roleMapper = new IdentityProviderRoleMapper(roleMapperFinder);\n\n const permissionMapperRepository = new IdentityProviderPermissionMappingRepository(dataSource);\n const permissionMapper = new IdentityProviderPermissionMapper(permissionMapperRepository);\n\n const providerAccountRepository = new IdentityProviderAccountRepository(dataSource);\n\n container.register(IdentityInjectionKey.ProviderAccountManager, {\n useFactory: () => new IdentityProviderAccountManager({\n repository: providerAccountRepository,\n userRepository,\n attributeMapper,\n roleMapper,\n permissionMapper,\n }),\n });\n\n // ---------------------------------------------\n\n const identityProviderRepository = new IdentityProviderRepositoryAdapter({\n repository: new IdentityProviderRepository(dataSource),\n realmRepository: container.resolve<Repository<Realm>>(RealmEntity),\n });\n container.register(IdentityInjectionKey.ProviderLdapCollectionAuthenticator, {\n useFactory: (c) => new IdentityProviderLdapCollectionAuthenticator({\n repository: identityProviderRepository,\n accountManager: c.resolve(IdentityInjectionKey.ProviderAccountManager),\n clientFactory: c.resolve(LDAPInjectionKey.ClientFactory),\n }),\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DA,IAAagC,iBAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;EACV,KAAKD,OAAOH,WAAWK;EACvB,KAAKD,eAAe,CAACJ,WAAWM,QAAAA;CACpC;CAEA,MAAMC,MAAMC,WAAsC;EAC9C,MAAMC,aAAaD,UAAUE,QAAQjC,qBAAqBkC,UAAU;EACpE,MAAMC,kBAAkBJ,UAAUE,QAA2B7B,WAAAA;EAE7D,MAAMgC,mBAAmB,IAAI3C,yBACzBsC,UAAUE,QAA4B/B,YAAAA,CAAAA;EAE1C,MAAMmC,kBAAkB,IAAIvC,wBACxBiC,UAAUE,QAA2B5B,WAAAA,CAAAA;EAEzC,MAAMiC,iBAAiB,IAAIvC,uBAAuB;GAC9CwC,YAAY,IAAI/B,eAAewB,UAAAA;GAC/BQ,0BAA0BT,UAAUE,QAAoC1B,oBAAAA;GACxEkC,oBAAoBV,UAAUE,QAA8BxB,cAAAA;EAChE,CAAA;EAEAsB,UAAUW,SAASlB,qBAAqBmB,UAAU,EAC9CC,kBAAkB,IAAIxB,iBAAiB;GACnCgB;GACAC;GACAC;EACJ,CAAA,EACJ,CAAA;EAIA,MAAMO,0BAA0B,IAAInC,wBAAwB;GACxD6B,YAAYR,UAAUE,QAA4B/B,YAAAA;GAClDiC;EACJ,CAAA;EACA,MAAMW,wBAAwB,IAAIjC,sBAAsB;GACpD0B,YAAY,IAAI/B,eAAewB,UAAAA;GAC/BG;EACJ,CAAA;EACA,MAAMY,yBAAyB,IAAIpC,uBAAuB;GACtD4B,YAAYR,UAAUE,QAA2B5B,WAAAA;GACjD8B;EACJ,CAAA;EACA,MAAMa,wBAAwB,IAAIpC,sBAAsB;GACpD2B,YAAYR,UAAUE,QAA0B3B,UAAAA;GAChD6B;EACJ,CAAA;EAEAJ,UAAUW,SAASlB,qBAAqByB,cAAc,EAClDL,kBAAkB,IAAIvB,qBAAqB;GACvCe,kBAAkBS;GAClBP,gBAAgBQ;GAChBT,iBAAiBU;EACrB,CAAA,EACJ,CAAA;EAEAhB,UAAUW,SAASlB,qBAAqB0B,oBAAoB,EACxDN,aAAaO,MAAM,IAAIrC,2BAA2B;GAC9CsB,kBAAkBS;GAClBP,gBAAgBQ;GAChBT,iBAAiBU;GACjBK,gBAAgBJ;GAChBK,cAAcF,EAAElB,QAAQT,qBAAqByB,YAAY;EAC7D,CAAA,EACJ,CAAA;EAKA,MAAMM,kBAAkB,IAAIvC,gCAAgCsC,IADtB3D,2CAA2CqC,UACrBsB,CAAAA;EAG5D,MAAMG,aAAa,IAAItC,2BAA2BqC,IADrB3D,sCAAsCmC,UACjBwB,CAAAA;EAGlD,MAAMG,mBAAmB,IAAIzC,iCAAiCwC,IADvB9D,4CAA4CoC,UACrB0B,CAAAA;EAE9D,MAAME,4BAA4B,IAAIlE,kCAAkCsC,UAAAA;EAExED,UAAUW,SAASlB,qBAAqBqC,wBAAwB,EAC5DjB,kBAAkB,IAAI7B,+BAA+B;GACjDwB,YAAYqB;GACZtB;GACAiB;GACAE;GACAE;EACJ,CAAA,EACJ,CAAA;EAIA,MAAMG,6BAA6B,IAAI7D,kCAAkC;GACrEsC,YAAY,IAAIpC,2BAA2B6B,UAAAA;GAC3CG,iBAAiBJ,UAAUE,QAA2B7B,WAAAA;EAC1D,CAAA;EACA2B,UAAUW,SAASlB,qBAAqBuC,qCAAqC,EACzEnB,aAAaO,MAAM,IAAIlC,4CAA4C;GAC/DsB,YAAYuB;GACZE,gBAAgBb,EAAElB,QAAQT,qBAAqBqC,sBAAsB;GACrEI,eAAed,EAAElB,QAAQX,iBAAiB4C,aAAa;EAC3D,CAAA,EACJ,CAAA;CACJ;AACJ"}