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

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 (230) hide show
  1. package/dist/adapters/database/domains/client-permission/entity.d.ts +2 -1
  2. package/dist/adapters/database/domains/client-permission/entity.d.ts.map +1 -1
  3. package/dist/adapters/database/domains/client-permission/entity.mjs +6 -0
  4. package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
  5. package/dist/adapters/database/domains/robot-permission/entity.d.ts +2 -1
  6. package/dist/adapters/database/domains/robot-permission/entity.d.ts.map +1 -1
  7. package/dist/adapters/database/domains/robot-permission/entity.mjs +6 -0
  8. package/dist/adapters/database/domains/robot-permission/entity.mjs.map +1 -1
  9. package/dist/adapters/database/domains/robot-role/entity.mjs +1 -1
  10. package/dist/adapters/database/domains/robot-role/entity.mjs.map +1 -1
  11. package/dist/adapters/database/domains/role-permission/entity.d.ts +2 -1
  12. package/dist/adapters/database/domains/role-permission/entity.d.ts.map +1 -1
  13. package/dist/adapters/database/domains/role-permission/entity.mjs +6 -0
  14. package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
  15. package/dist/adapters/database/domains/user-permission/entity.d.ts +2 -1
  16. package/dist/adapters/database/domains/user-permission/entity.d.ts.map +1 -1
  17. package/dist/adapters/database/domains/user-permission/entity.mjs +6 -0
  18. package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
  19. package/dist/adapters/database/migrations/mysql/1779300000000-Default.d.ts +7 -0
  20. package/dist/adapters/database/migrations/mysql/1779300000000-Default.d.ts.map +1 -0
  21. package/dist/adapters/database/migrations/mysql/1779300000000-Default.mjs +85 -0
  22. package/dist/adapters/database/migrations/mysql/1779300000000-Default.mjs.map +1 -0
  23. package/dist/adapters/database/migrations/postgres/1779300000000-Default.d.ts +7 -0
  24. package/dist/adapters/database/migrations/postgres/1779300000000-Default.d.ts.map +1 -0
  25. package/dist/adapters/database/migrations/postgres/1779300000000-Default.mjs +87 -0
  26. package/dist/adapters/database/migrations/postgres/1779300000000-Default.mjs.map +1 -0
  27. package/dist/adapters/http/adapters/index.mjs +2 -2
  28. package/dist/adapters/http/adapters/oauth2/grant-types/index.mjs +2 -2
  29. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts +2 -1
  30. package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts.map +1 -1
  31. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +12 -4
  32. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  33. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +2 -1
  34. package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
  35. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts +1 -0
  36. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts.map +1 -1
  37. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +1 -1
  38. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs.map +1 -1
  39. package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.mjs +2 -2
  40. package/dist/adapters/http/adapters/oauth2/index.mjs +2 -2
  41. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  42. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +24 -9
  43. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  44. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  45. package/dist/adapters/http/controllers/workflows/token/module.mjs +2 -1
  46. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  47. package/dist/adapters/http/controllers/workflows/token/types.d.ts +2 -1
  48. package/dist/adapters/http/controllers/workflows/token/types.d.ts.map +1 -1
  49. package/dist/adapters/http/index.mjs +3 -3
  50. package/dist/adapters/http/request/helpers/identity.d.ts +0 -1
  51. package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
  52. package/dist/adapters/http/request/helpers/identity.mjs +2 -5
  53. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  54. package/dist/adapters/http/request/helpers/index.mjs +2 -2
  55. package/dist/adapters/http/request/index.mjs +2 -2
  56. package/dist/adapters/http/request/permission/module.mjs +2 -2
  57. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  58. package/dist/app/modules/database/repositories/bindings.d.ts +2 -0
  59. package/dist/app/modules/database/repositories/bindings.d.ts.map +1 -1
  60. package/dist/app/modules/database/repositories/bindings.mjs +3 -1
  61. package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
  62. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
  63. package/dist/app/modules/database/repositories/identity-provider/repository.mjs +4 -2
  64. package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
  65. package/dist/app/modules/database/repositories/permission-provider/module.d.ts +2 -2
  66. package/dist/app/modules/database/repositories/permission-provider/module.d.ts.map +1 -1
  67. package/dist/app/modules/database/repositories/permission-provider/module.mjs +4 -3
  68. package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
  69. package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
  70. package/dist/app/modules/database/repositories/realm/repository.mjs +6 -2
  71. package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
  72. package/dist/app/modules/http/modules/controller.d.ts +2 -0
  73. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  74. package/dist/app/modules/http/modules/controller.mjs +18 -0
  75. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  76. package/dist/app/modules/identity/repositories/client.mjs +2 -2
  77. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  78. package/dist/app/modules/identity/repositories/robot.mjs +2 -2
  79. package/dist/app/modules/identity/repositories/robot.mjs.map +1 -1
  80. package/dist/app/modules/identity/repositories/user.mjs +2 -2
  81. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  82. package/dist/app/modules/oauth2/repositories/client/repository.mjs +2 -2
  83. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  84. package/dist/app/modules/provisioning/module.d.ts.map +1 -1
  85. package/dist/app/modules/provisioning/module.mjs +0 -1
  86. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  87. package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
  88. package/dist/app/modules/provisioning/sources/default/module.mjs +14 -56
  89. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  90. package/dist/core/entities/client/service.mjs +25 -7
  91. package/dist/core/entities/client/service.mjs.map +1 -1
  92. package/dist/core/entities/client-permission/service.d.ts +7 -4
  93. package/dist/core/entities/client-permission/service.d.ts.map +1 -1
  94. package/dist/core/entities/client-permission/service.mjs +59 -19
  95. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  96. package/dist/core/entities/client-role/service.d.ts +3 -2
  97. package/dist/core/entities/client-role/service.d.ts.map +1 -1
  98. package/dist/core/entities/client-role/service.mjs +12 -5
  99. package/dist/core/entities/client-role/service.mjs.map +1 -1
  100. package/dist/core/entities/client-scope/service.d.ts +3 -2
  101. package/dist/core/entities/client-scope/service.d.ts.map +1 -1
  102. package/dist/core/entities/client-scope/service.mjs +12 -5
  103. package/dist/core/entities/client-scope/service.mjs.map +1 -1
  104. package/dist/core/entities/identity-provider-role-mapping/service.d.ts +7 -4
  105. package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
  106. package/dist/core/entities/identity-provider-role-mapping/service.mjs +29 -6
  107. package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
  108. package/dist/core/entities/permission/service.d.ts +3 -5
  109. package/dist/core/entities/permission/service.d.ts.map +1 -1
  110. package/dist/core/entities/permission/service.mjs +30 -24
  111. package/dist/core/entities/permission/service.mjs.map +1 -1
  112. package/dist/core/entities/permission-policy/service.d.ts +3 -2
  113. package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
  114. package/dist/core/entities/permission-policy/service.mjs +12 -5
  115. package/dist/core/entities/permission-policy/service.mjs.map +1 -1
  116. package/dist/core/entities/policy/service.d.ts.map +1 -1
  117. package/dist/core/entities/policy/service.mjs +16 -7
  118. package/dist/core/entities/policy/service.mjs.map +1 -1
  119. package/dist/core/entities/realm/service.mjs +4 -4
  120. package/dist/core/entities/realm/service.mjs.map +1 -1
  121. package/dist/core/entities/realm/types.d.ts +4 -0
  122. package/dist/core/entities/realm/types.d.ts.map +1 -1
  123. package/dist/core/entities/robot/service.d.ts.map +1 -1
  124. package/dist/core/entities/robot/service.mjs +29 -11
  125. package/dist/core/entities/robot/service.mjs.map +1 -1
  126. package/dist/core/entities/robot-permission/service.d.ts +7 -4
  127. package/dist/core/entities/robot-permission/service.d.ts.map +1 -1
  128. package/dist/core/entities/robot-permission/service.mjs +59 -19
  129. package/dist/core/entities/robot-permission/service.mjs.map +1 -1
  130. package/dist/core/entities/robot-role/service.d.ts +3 -2
  131. package/dist/core/entities/robot-role/service.d.ts.map +1 -1
  132. package/dist/core/entities/robot-role/service.mjs +12 -5
  133. package/dist/core/entities/robot-role/service.mjs.map +1 -1
  134. package/dist/core/entities/role/service.d.ts.map +1 -1
  135. package/dist/core/entities/role/service.mjs +16 -7
  136. package/dist/core/entities/role/service.mjs.map +1 -1
  137. package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
  138. package/dist/core/entities/role-attribute/service.mjs +24 -6
  139. package/dist/core/entities/role-attribute/service.mjs.map +1 -1
  140. package/dist/core/entities/role-permission/service.d.ts +7 -4
  141. package/dist/core/entities/role-permission/service.d.ts.map +1 -1
  142. package/dist/core/entities/role-permission/service.mjs +61 -21
  143. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  144. package/dist/core/entities/scope/service.d.ts.map +1 -1
  145. package/dist/core/entities/scope/service.mjs +16 -7
  146. package/dist/core/entities/scope/service.mjs.map +1 -1
  147. package/dist/core/entities/user/service.d.ts.map +1 -1
  148. package/dist/core/entities/user/service.mjs +28 -10
  149. package/dist/core/entities/user/service.mjs.map +1 -1
  150. package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
  151. package/dist/core/entities/user-attribute/service.mjs +18 -6
  152. package/dist/core/entities/user-attribute/service.mjs.map +1 -1
  153. package/dist/core/entities/user-permission/service.d.ts +7 -4
  154. package/dist/core/entities/user-permission/service.d.ts.map +1 -1
  155. package/dist/core/entities/user-permission/service.mjs +59 -19
  156. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  157. package/dist/core/entities/user-role/service.d.ts +3 -2
  158. package/dist/core/entities/user-role/service.d.ts.map +1 -1
  159. package/dist/core/entities/user-role/service.mjs +12 -5
  160. package/dist/core/entities/user-role/service.mjs.map +1 -1
  161. package/dist/core/identity/index.mjs +2 -1
  162. package/dist/core/identity/permission/checker/service.d.ts.map +1 -1
  163. package/dist/core/identity/permission/checker/service.mjs +6 -4
  164. package/dist/core/identity/permission/checker/service.mjs.map +1 -1
  165. package/dist/core/identity/permission/index.d.ts +1 -0
  166. package/dist/core/identity/permission/index.d.ts.map +1 -1
  167. package/dist/core/identity/permission/index.mjs +2 -1
  168. package/dist/core/identity/permission/junction-grant.d.ts +49 -0
  169. package/dist/core/identity/permission/junction-grant.d.ts.map +1 -0
  170. package/dist/core/identity/permission/junction-grant.mjs +57 -0
  171. package/dist/core/identity/permission/junction-grant.mjs.map +1 -0
  172. package/dist/core/identity/permission/module.d.ts +2 -3
  173. package/dist/core/identity/permission/module.d.ts.map +1 -1
  174. package/dist/core/identity/permission/module.mjs +52 -14
  175. package/dist/core/identity/permission/module.mjs.map +1 -1
  176. package/dist/core/identity/permission/types.d.ts +22 -2
  177. package/dist/core/identity/permission/types.d.ts.map +1 -1
  178. package/dist/core/index.mjs +2 -1
  179. package/dist/core/provisioning/entities/role/types.d.ts +8 -5
  180. package/dist/core/provisioning/entities/role/types.d.ts.map +1 -1
  181. package/dist/core/provisioning/synchronizer/base.d.ts +3 -0
  182. package/dist/core/provisioning/synchronizer/base.d.ts.map +1 -1
  183. package/dist/core/provisioning/synchronizer/base.mjs +3 -0
  184. package/dist/core/provisioning/synchronizer/base.mjs.map +1 -1
  185. package/dist/core/provisioning/synchronizer/client/module.d.ts.map +1 -1
  186. package/dist/core/provisioning/synchronizer/client/module.mjs +1 -0
  187. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  188. package/dist/core/provisioning/synchronizer/entity-resolver.d.ts.map +1 -1
  189. package/dist/core/provisioning/synchronizer/entity-resolver.mjs +3 -0
  190. package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
  191. package/dist/core/provisioning/synchronizer/index.mjs +1 -0
  192. package/dist/core/provisioning/synchronizer/permission/module.d.ts.map +1 -1
  193. package/dist/core/provisioning/synchronizer/permission/module.mjs +2 -1
  194. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  195. package/dist/core/provisioning/synchronizer/policy/module.d.ts +2 -0
  196. package/dist/core/provisioning/synchronizer/policy/module.d.ts.map +1 -1
  197. package/dist/core/provisioning/synchronizer/policy/module.mjs +19 -1
  198. package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
  199. package/dist/core/provisioning/synchronizer/realm/module.d.ts.map +1 -1
  200. package/dist/core/provisioning/synchronizer/realm/module.mjs +1 -0
  201. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  202. package/dist/core/provisioning/synchronizer/robot/module.d.ts.map +1 -1
  203. package/dist/core/provisioning/synchronizer/robot/module.mjs +1 -0
  204. package/dist/core/provisioning/synchronizer/robot/module.mjs.map +1 -1
  205. package/dist/core/provisioning/synchronizer/role/module.d.ts +2 -3
  206. package/dist/core/provisioning/synchronizer/role/module.d.ts.map +1 -1
  207. package/dist/core/provisioning/synchronizer/role/module.mjs +14 -20
  208. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  209. package/dist/core/provisioning/synchronizer/role/types.d.ts +1 -2
  210. package/dist/core/provisioning/synchronizer/role/types.d.ts.map +1 -1
  211. package/dist/core/provisioning/synchronizer/scope/module.d.ts.map +1 -1
  212. package/dist/core/provisioning/synchronizer/scope/module.mjs +1 -0
  213. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  214. package/dist/core/provisioning/synchronizer/user/module.d.ts.map +1 -1
  215. package/dist/core/provisioning/synchronizer/user/module.mjs +1 -0
  216. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  217. package/dist/core/security/policy/evaluator.d.ts +4 -4
  218. package/dist/core/security/policy/evaluator.d.ts.map +1 -1
  219. package/dist/core/security/policy/evaluator.mjs +19 -18
  220. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  221. package/dist/index.mjs +3 -3
  222. package/dist/swagger.json +54 -0
  223. package/dist/ui/client/.vite/ssr-manifest.json +1017 -639
  224. package/dist/ui/client/assets/index-Cd3uWit-.js +127 -0
  225. package/dist/ui/client/assets/index-DoCTwJ8M.css +2 -0
  226. package/dist/ui/client/index.html +2 -2
  227. package/dist/ui/server/server.js +11086 -2362
  228. package/package.json +37 -35
  229. package/dist/ui/client/assets/index-BFXs98mu.js +0 -102
  230. package/dist/ui/client/assets/index-C_-HM1P-.css +0 -2
@@ -1,7 +1,7 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
- import { RequestIdentity, isRequestIdentityMasterRealmMember, setRequestIdentity, useRequestIdentity, useRequestIdentityOrFail } from "./identity.mjs";
4
+ import { RequestIdentity, setRequestIdentity, useRequestIdentity, useRequestIdentityOrFail } from "./identity.mjs";
5
5
  import { buildActorContext } from "./actor.mjs";
6
6
  import { getBodyRealmID } from "./body-realm-id.mjs";
7
7
  import { LOCALE_COOKIE, useRequestLocale } from "./locale.mjs";
@@ -11,4 +11,4 @@ import { applyRouteRealmIDToBody, getRequestRealmID, setRequestRealmID } from ".
11
11
  import { sanitizeRelativeRedirect } from "./redirect.mjs";
12
12
  import { setRequestScopes, useRequestScopes } from "./scopes.mjs";
13
13
  import { setRequestToken, useRequestToken } from "./token.mjs";
14
- export { LOCALE_COOKIE, RequestIdentity, applyRouteRealmIDToBody, buildActorContext, getBodyRealmID, getRequestParamID, getRequestRealmID, getRequestStringParam, getRequestStringParamOrFail, isRequestIdentityMasterRealmMember, readFromLocations, sanitizeRelativeRedirect, setRequestIdentity, setRequestRealmID, setRequestScopes, setRequestToken, useRequestIdentity, useRequestIdentityOrFail, useRequestLocale, useRequestParamID, useRequestScopes, useRequestToken };
14
+ export { LOCALE_COOKIE, RequestIdentity, applyRouteRealmIDToBody, buildActorContext, getBodyRealmID, getRequestParamID, getRequestRealmID, getRequestStringParam, getRequestStringParamOrFail, readFromLocations, sanitizeRelativeRedirect, setRequestIdentity, setRequestRealmID, setRequestScopes, setRequestToken, useRequestIdentity, useRequestIdentityOrFail, useRequestLocale, useRequestParamID, useRequestScopes, useRequestToken };
@@ -3,7 +3,7 @@ import "node:url";
3
3
  import.meta.url;
4
4
  import { RequestHandlerOperation } from "./constants.mjs";
5
5
  import { setRequestPermissionEvaluator, useRequestPermissionEvaluator } from "./permission/helper.mjs";
6
- import { RequestIdentity, isRequestIdentityMasterRealmMember, setRequestIdentity, useRequestIdentity, useRequestIdentityOrFail } from "./helpers/identity.mjs";
6
+ import { RequestIdentity, setRequestIdentity, useRequestIdentity, useRequestIdentityOrFail } from "./helpers/identity.mjs";
7
7
  import { buildActorContext } from "./helpers/actor.mjs";
8
8
  import { getBodyRealmID } from "./helpers/body-realm-id.mjs";
9
9
  import { LOCALE_COOKIE, useRequestLocale } from "./helpers/locale.mjs";
@@ -16,4 +16,4 @@ import { setRequestToken, useRequestToken } from "./helpers/token.mjs";
16
16
  import "./helpers/index.mjs";
17
17
  import { RequestPermissionEvaluator } from "./permission/module.mjs";
18
18
  import "./permission/index.mjs";
19
- export { LOCALE_COOKIE, RequestHandlerOperation, RequestIdentity, RequestPermissionEvaluator, applyRouteRealmIDToBody, buildActorContext, getBodyRealmID, getRequestParamID, getRequestRealmID, getRequestStringParam, getRequestStringParamOrFail, isRequestIdentityMasterRealmMember, readFromLocations, sanitizeRelativeRedirect, setRequestIdentity, setRequestPermissionEvaluator, setRequestRealmID, setRequestScopes, setRequestToken, useRequestIdentity, useRequestIdentityOrFail, useRequestLocale, useRequestParamID, useRequestPermissionEvaluator, useRequestScopes, useRequestToken };
19
+ export { LOCALE_COOKIE, RequestHandlerOperation, RequestIdentity, RequestPermissionEvaluator, applyRouteRealmIDToBody, buildActorContext, getBodyRealmID, getRequestParamID, getRequestRealmID, getRequestStringParam, getRequestStringParamOrFail, readFromLocations, sanitizeRelativeRedirect, setRequestIdentity, setRequestPermissionEvaluator, setRequestRealmID, setRequestScopes, setRequestToken, useRequestIdentity, useRequestIdentityOrFail, useRequestLocale, useRequestParamID, useRequestPermissionEvaluator, useRequestScopes, useRequestToken };
@@ -28,8 +28,8 @@ var RequestPermissionEvaluator = class {
28
28
  }
29
29
  extendContext(ctx) {
30
30
  if (useRequestScopes(this.event).includes(ScopeName.GLOBAL)) {
31
- ctx.input = ctx.input || new PolicyData();
32
- ctx.input.set(BuiltInPolicyType.IDENTITY, useRequestIdentity(this.event));
31
+ ctx.data = ctx.data || new PolicyData();
32
+ ctx.data.set(BuiltInPolicyType.IDENTITY, useRequestIdentity(this.event));
33
33
  }
34
34
  return ctx;
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["ScopeName","BuiltInPolicyType","PolicyData","useRequestIdentity","useRequestScopes","RequestPermissionEvaluator","event","evaluator","evaluate","ctx","extendContext","preEvaluate","preEvaluateOneOf","evaluateOneOf","scopes","includes","GLOBAL","input","set","IDENTITY"],"sources":["../../../../../src/adapters/http/request/permission/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ScopeName } from '@authup/core-kit';\nimport type {\n IPermissionEvaluator,\n PermissionEvaluationContext,\n} from '@authup/access';\nimport { BuiltInPolicyType, PolicyData } from '@authup/access';\nimport type { IAppEvent } from 'routup';\nimport { useRequestIdentity, useRequestScopes } from '../helpers/index.ts';\n\nexport class RequestPermissionEvaluator implements IPermissionEvaluator {\n protected event: IAppEvent;\n\n protected evaluator: IPermissionEvaluator;\n\n constructor(event: IAppEvent, evaluator: IPermissionEvaluator) {\n this.event = event;\n this.evaluator = evaluator;\n }\n\n // --------------------------------------------------------------\n\n async evaluate(ctx: PermissionEvaluationContext) : Promise<void> {\n return this.evaluator.evaluate(this.extendContext(ctx));\n }\n\n async preEvaluate(ctx: PermissionEvaluationContext) : Promise<void> {\n return this.evaluator.preEvaluate(this.extendContext(ctx));\n }\n\n // --------------------------------------------------------------\n\n async preEvaluateOneOf(ctx: PermissionEvaluationContext) : Promise<void> {\n return this.evaluator.preEvaluateOneOf(this.extendContext(ctx));\n }\n\n async evaluateOneOf(ctx: PermissionEvaluationContext) : Promise<void> {\n return this.evaluator.evaluateOneOf(this.extendContext(ctx));\n }\n\n // --------------------------------------------------------------\n\n protected extendContext(ctx: PermissionEvaluationContext) {\n const scopes = useRequestScopes(this.event);\n if (scopes.includes(ScopeName.GLOBAL)) {\n ctx.input = ctx.input || new PolicyData();\n ctx.input.set(BuiltInPolicyType.IDENTITY, useRequestIdentity(this.event));\n }\n\n return ctx;\n }\n}\n"],"mappings":";;;;;;;;;AAgBA,IAAaK,6BAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYD,OAAkBC,WAAiC;EAC3D,KAAKD,QAAQA;EACb,KAAKC,YAAYA;CACrB;CAIA,MAAMC,SAASC,KAAkD;EAC7D,OAAO,KAAKF,UAAUC,SAAS,KAAKE,cAAcD,GAAAA,CAAAA;CACtD;CAEA,MAAME,YAAYF,KAAkD;EAChE,OAAO,KAAKF,UAAUI,YAAY,KAAKD,cAAcD,GAAAA,CAAAA;CACzD;CAIA,MAAMG,iBAAiBH,KAAkD;EACrE,OAAO,KAAKF,UAAUK,iBAAiB,KAAKF,cAAcD,GAAAA,CAAAA;CAC9D;CAEA,MAAMI,cAAcJ,KAAkD;EAClE,OAAO,KAAKF,UAAUM,cAAc,KAAKH,cAAcD,GAAAA,CAAAA;CAC3D;CAIUC,cAAcD,KAAkC;EAEtD,IADeL,iBAAiB,KAAKE,KACjCQ,CAAAA,CAAOC,SAASf,UAAUgB,MAAM,GAAG;GACnCP,IAAIQ,QAAQR,IAAIQ,SAAS,IAAIf,WAAAA;GAC7BO,IAAIQ,MAAMC,IAAIjB,kBAAkBkB,UAAUhB,mBAAmB,KAAKG,KAAK,CAAA;EAC3E;EAEA,OAAOG;CACX;AACJ"}
1
+ {"version":3,"file":"module.mjs","names":["ScopeName","BuiltInPolicyType","PolicyData","useRequestIdentity","useRequestScopes","RequestPermissionEvaluator","event","evaluator","evaluate","ctx","extendContext","preEvaluate","preEvaluateOneOf","evaluateOneOf","scopes","includes","GLOBAL","data","set","IDENTITY"],"sources":["../../../../../src/adapters/http/request/permission/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ScopeName } from '@authup/core-kit';\nimport type {\n IPermissionEvaluator,\n PermissionEvaluationContext,\n} from '@authup/access';\nimport { BuiltInPolicyType, PolicyData } from '@authup/access';\nimport type { IAppEvent } from 'routup';\nimport { useRequestIdentity, useRequestScopes } from '../helpers/index.ts';\n\nexport class RequestPermissionEvaluator implements IPermissionEvaluator {\n protected event: IAppEvent;\n\n protected evaluator: IPermissionEvaluator;\n\n constructor(event: IAppEvent, evaluator: IPermissionEvaluator) {\n this.event = event;\n this.evaluator = evaluator;\n }\n\n // --------------------------------------------------------------\n\n async evaluate(ctx: PermissionEvaluationContext) : Promise<void> {\n return this.evaluator.evaluate(this.extendContext(ctx));\n }\n\n async preEvaluate(ctx: PermissionEvaluationContext) : Promise<void> {\n return this.evaluator.preEvaluate(this.extendContext(ctx));\n }\n\n // --------------------------------------------------------------\n\n async preEvaluateOneOf(ctx: PermissionEvaluationContext) : Promise<void> {\n return this.evaluator.preEvaluateOneOf(this.extendContext(ctx));\n }\n\n async evaluateOneOf(ctx: PermissionEvaluationContext) : Promise<void> {\n return this.evaluator.evaluateOneOf(this.extendContext(ctx));\n }\n\n // --------------------------------------------------------------\n\n protected extendContext(ctx: PermissionEvaluationContext) {\n const scopes = useRequestScopes(this.event);\n if (scopes.includes(ScopeName.GLOBAL)) {\n ctx.data = ctx.data || new PolicyData();\n ctx.data.set(BuiltInPolicyType.IDENTITY, useRequestIdentity(this.event));\n }\n\n return ctx;\n }\n}\n"],"mappings":";;;;;;;;;AAgBA,IAAaK,6BAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYD,OAAkBC,WAAiC;EAC3D,KAAKD,QAAQA;EACb,KAAKC,YAAYA;CACrB;CAIA,MAAMC,SAASC,KAAkD;EAC7D,OAAO,KAAKF,UAAUC,SAAS,KAAKE,cAAcD,GAAAA,CAAAA;CACtD;CAEA,MAAME,YAAYF,KAAkD;EAChE,OAAO,KAAKF,UAAUI,YAAY,KAAKD,cAAcD,GAAAA,CAAAA;CACzD;CAIA,MAAMG,iBAAiBH,KAAkD;EACrE,OAAO,KAAKF,UAAUK,iBAAiB,KAAKF,cAAcD,GAAAA,CAAAA;CAC9D;CAEA,MAAMI,cAAcJ,KAAkD;EAClE,OAAO,KAAKF,UAAUM,cAAc,KAAKH,cAAcD,GAAAA,CAAAA;CAC3D;CAIUC,cAAcD,KAAkC;EAEtD,IADeL,iBAAiB,KAAKE,KACjCQ,CAAAA,CAAOC,SAASf,UAAUgB,MAAM,GAAG;GACnCP,IAAIQ,OAAOR,IAAIQ,QAAQ,IAAIf,WAAAA;GAC3BO,IAAIQ,KAAKC,IAAIjB,kBAAkBkB,UAAUhB,mBAAmB,KAAKG,KAAK,CAAA;EAC1E;EAEA,OAAOG;CACX;AACJ"}
@@ -1,5 +1,6 @@
1
1
  import type { EntityManager, EntityTarget, FindOptionsWhere, ObjectLiteral } from 'typeorm';
2
2
  import type { PermissionPolicyBinding } from '@authup/access';
3
+ import { RealmScope } from '@authup/access';
3
4
  import type { Permission } from '@authup/core-kit';
4
5
  export type LoadBoundPermissionsOptions<E extends ObjectLiteral> = {
5
6
  manager: EntityManager;
@@ -11,6 +12,7 @@ export type LoadBoundPermissionsOptions<E extends ObjectLiteral> = {
11
12
  type PermissionJunction = {
12
13
  permission: Permission;
13
14
  policy_id?: string | null;
15
+ realm_scope?: `${RealmScope}` | null;
14
16
  };
15
17
  export declare function loadBoundPermissions<E extends PermissionJunction & ObjectLiteral>(options: LoadBoundPermissionsOptions<E>): Promise<PermissionPolicyBinding[]>;
16
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/database/repositories/bindings.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,aAAa,EACb,YAAY,EAEZ,gBAAgB,EAChB,aAAa,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,aAAa,IAAI;IAC/D,OAAO,EAAE,aAAa,CAAC;IACvB,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,kBAAkB,GAAG,aAAa,EACnF,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAiCpC"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/database/repositories/bindings.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,aAAa,EACb,YAAY,EAEZ,gBAAgB,EAChB,aAAa,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,aAAa,IAAI;IAC/D,OAAO,EAAE,aAAa,CAAC;IACvB,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,kBAAkB,GAAG,aAAa,EACnF,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAoCpC"}
@@ -4,6 +4,7 @@ import.meta.url;
4
4
  import { PolicyRepository } from "../../../../adapters/database/domains/policy/repository.mjs";
5
5
  import "../../../../adapters/database/domains/policy/index.mjs";
6
6
  import { buildRedisKeyPath } from "@authup/server-kit";
7
+ import { RealmScope } from "@authup/access";
7
8
  //#region src/app/modules/database/repositories/bindings.ts
8
9
  async function loadBoundPermissions(options) {
9
10
  const entries = await options.manager.getRepository(options.junctionTarget).find({
@@ -25,7 +26,8 @@ async function loadBoundPermissions(options) {
25
26
  if (entry.policy_id && policyTrees[entry.policy_id]) policies.push(policyTrees[entry.policy_id]);
26
27
  return {
27
28
  permission: entry.permission,
28
- policies: policies.length > 0 ? policies : void 0
29
+ policies: policies.length > 0 ? policies : void 0,
30
+ realm_scope: entry.realm_scope ?? RealmScope.OWN
29
31
  };
30
32
  });
31
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.mjs","names":["buildRedisKeyPath","PolicyRepository","loadBoundPermissions","options","repository","manager","getRepository","junctionTarget","relations","permission","entries","find","where","cache","id","prefix","cachePrefix","key","cacheKey","milliseconds","policyIds","Set","entry","policy_id","add","policyTrees","loadPolicyTrees","map","policies","push","length","undefined","policyRepository","trees","Promise","all","findDescendantsTreeById","then","tree","result"],"sources":["../../../../../src/app/modules/database/repositories/bindings.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 EntityManager,\n EntityTarget,\n FindOptionsRelations,\n FindOptionsWhere,\n ObjectLiteral,\n} from 'typeorm';\nimport type { BasePolicy, PermissionPolicyBinding } from '@authup/access';\nimport type { Permission } from '@authup/core-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { PolicyRepository } from '../../../../adapters/database/domains/policy/index.ts';\n\nexport type LoadBoundPermissionsOptions<E extends ObjectLiteral> = {\n manager: EntityManager;\n junctionTarget: EntityTarget<E>;\n where: FindOptionsWhere<E>;\n cachePrefix: string;\n cacheKey: string;\n};\n\ntype PermissionJunction = {\n permission: Permission;\n policy_id?: string | null;\n};\n\nexport async function loadBoundPermissions<E extends PermissionJunction & ObjectLiteral>(\n options: LoadBoundPermissionsOptions<E>,\n): Promise<PermissionPolicyBinding[]> {\n const repository = options.manager.getRepository(options.junctionTarget);\n const relations = { permission: true } as FindOptionsRelations<E>;\n\n const entries = await repository.find({\n where: options.where,\n relations,\n cache: {\n id: buildRedisKeyPath({ prefix: options.cachePrefix, key: options.cacheKey }),\n milliseconds: 60_000,\n },\n });\n\n const policyIds = new Set<string>();\n for (const entry of entries) {\n if (entry.policy_id) {\n policyIds.add(entry.policy_id);\n }\n }\n\n const policyTrees = await loadPolicyTrees(options.manager, [...policyIds]);\n\n return entries.map((entry) => {\n const policies: BasePolicy[] = [];\n if (entry.policy_id && policyTrees[entry.policy_id]) {\n policies.push(policyTrees[entry.policy_id]);\n }\n\n return {\n permission: entry.permission,\n policies: policies.length > 0 ? policies : undefined,\n };\n });\n}\n\nasync function loadPolicyTrees(\n manager: EntityManager,\n policyIds: string[],\n): Promise<Record<string, BasePolicy>> {\n if (policyIds.length === 0) {\n return {};\n }\n\n const policyRepository = new PolicyRepository(manager);\n const trees = await Promise.all(\n policyIds.map((id) => policyRepository.findDescendantsTreeById(id)\n .then((tree) => [id, tree] as const)),\n );\n\n const result: Record<string, BasePolicy> = {};\n for (const [id, tree] of trees) {\n if (tree) {\n result[id] = tree;\n }\n }\n return result;\n}\n"],"mappings":";;;;;;;AAgCA,eAAsBE,qBAClBC,SAAuC;CAKvC,MAAMO,UAAU,MAHGP,QAAQE,QAAQC,cAAcH,QAAQI,cAGnCH,CAAAA,CAAWO,KAAK;EAClCC,OAAOT,QAAQS;EACfJ,WAAAA,EAJgBC,YAAY,KAI5BD;EACAK,OAAO;GACHC,IAAId,kBAAkB;IAAEe,QAAQZ,QAAQa;IAAaC,KAAKd,QAAQe;GAAS,CAAA;GAC3EC,cAAc;EAClB;CACJ,CAAA;CAEA,MAAMC,4BAAY,IAAIC,IAAAA;CACtB,KAAK,MAAMC,SAASZ,SAChB,IAAIY,MAAMC,WACNH,UAAUI,IAAIF,MAAMC,SAAS;CAIrC,MAAME,cAAc,MAAMC,gBAAgBvB,QAAQE,SAAS,CAAA,GAAIe,SAAAA,CAAU;CAEzE,OAAOV,QAAQiB,KAAKL,UAAAA;EAChB,MAAMM,WAAyB,CAAA;EAC/B,IAAIN,MAAMC,aAAaE,YAAYH,MAAMC,YACrCK,SAASC,KAAKJ,YAAYH,MAAMC,UAAU;EAG9C,OAAO;GACHd,YAAYa,MAAMb;GAClBmB,UAAUA,SAASE,SAAS,IAAIF,WAAWG,KAAAA;EAC/C;CACJ,CAAA;AACJ;AAEA,eAAeL,gBACXrB,SACAe,WAAmB;CAEnB,IAAIA,UAAUU,WAAW,GACrB,OAAO,CAAC;CAGZ,MAAME,mBAAmB,IAAI/B,iBAAiBI,OAAAA;CAC9C,MAAM4B,QAAQ,MAAMC,QAAQC,IACxBf,UAAUO,KAAKb,OAAOkB,iBAAiBI,wBAAwBtB,EAAAA,CAAAA,CAC1DuB,MAAMC,SAAS,CAACxB,IAAIwB,IAAAA,CAAK,CAAA,CAAA;CAGlC,MAAMC,SAAqC,CAAC;CAC5C,KAAK,MAAM,CAACzB,IAAIwB,SAASL,OACrB,IAAIK,MACAC,OAAOzB,MAAMwB;CAGrB,OAAOC;AACX"}
1
+ {"version":3,"file":"bindings.mjs","names":["RealmScope","buildRedisKeyPath","PolicyRepository","loadBoundPermissions","options","repository","manager","getRepository","junctionTarget","relations","permission","entries","find","where","cache","id","prefix","cachePrefix","key","cacheKey","milliseconds","policyIds","Set","entry","policy_id","add","policyTrees","loadPolicyTrees","map","policies","push","length","undefined","realm_scope","OWN","policyRepository","trees","Promise","all","findDescendantsTreeById","then","tree","result"],"sources":["../../../../../src/app/modules/database/repositories/bindings.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 EntityManager,\n EntityTarget,\n FindOptionsRelations,\n FindOptionsWhere,\n ObjectLiteral,\n} from 'typeorm';\nimport type { BasePolicy, PermissionPolicyBinding } from '@authup/access';\nimport { RealmScope } from '@authup/access';\nimport type { Permission } from '@authup/core-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { PolicyRepository } from '../../../../adapters/database/domains/policy/index.ts';\n\nexport type LoadBoundPermissionsOptions<E extends ObjectLiteral> = {\n manager: EntityManager;\n junctionTarget: EntityTarget<E>;\n where: FindOptionsWhere<E>;\n cachePrefix: string;\n cacheKey: string;\n};\n\ntype PermissionJunction = {\n permission: Permission;\n policy_id?: string | null;\n realm_scope?: `${RealmScope}` | null;\n};\n\nexport async function loadBoundPermissions<E extends PermissionJunction & ObjectLiteral>(\n options: LoadBoundPermissionsOptions<E>,\n): Promise<PermissionPolicyBinding[]> {\n const repository = options.manager.getRepository(options.junctionTarget);\n const relations = { permission: true } as FindOptionsRelations<E>;\n\n const entries = await repository.find({\n where: options.where,\n relations,\n cache: {\n id: buildRedisKeyPath({ prefix: options.cachePrefix, key: options.cacheKey }),\n milliseconds: 60_000,\n },\n });\n\n const policyIds = new Set<string>();\n for (const entry of entries) {\n if (entry.policy_id) {\n policyIds.add(entry.policy_id);\n }\n }\n\n const policyTrees = await loadPolicyTrees(options.manager, [...policyIds]);\n\n return entries.map((entry) => {\n const policies: BasePolicy[] = [];\n if (entry.policy_id && policyTrees[entry.policy_id]) {\n policies.push(policyTrees[entry.policy_id]);\n }\n\n return {\n permission: entry.permission,\n policies: policies.length > 0 ? policies : undefined,\n // Fail-closed coercion: a missing column (stale cache / pre-migration row)\n // becomes the most restrictive `own`.\n realm_scope: entry.realm_scope ?? RealmScope.OWN,\n };\n });\n}\n\nasync function loadPolicyTrees(\n manager: EntityManager,\n policyIds: string[],\n): Promise<Record<string, BasePolicy>> {\n if (policyIds.length === 0) {\n return {};\n }\n\n const policyRepository = new PolicyRepository(manager);\n const trees = await Promise.all(\n policyIds.map((id) => policyRepository.findDescendantsTreeById(id)\n .then((tree) => [id, tree] as const)),\n );\n\n const result: Record<string, BasePolicy> = {};\n for (const [id, tree] of trees) {\n if (tree) {\n result[id] = tree;\n }\n }\n return result;\n}\n"],"mappings":";;;;;;;;AAkCA,eAAsBG,qBAClBC,SAAuC;CAKvC,MAAMO,UAAU,MAHGP,QAAQE,QAAQC,cAAcH,QAAQI,cAGnCH,CAAAA,CAAWO,KAAK;EAClCC,OAAOT,QAAQS;EACfJ,WAAAA,EAJgBC,YAAY,KAI5BD;EACAK,OAAO;GACHC,IAAId,kBAAkB;IAAEe,QAAQZ,QAAQa;IAAaC,KAAKd,QAAQe;GAAS,CAAA;GAC3EC,cAAc;EAClB;CACJ,CAAA;CAEA,MAAMC,4BAAY,IAAIC,IAAAA;CACtB,KAAK,MAAMC,SAASZ,SAChB,IAAIY,MAAMC,WACNH,UAAUI,IAAIF,MAAMC,SAAS;CAIrC,MAAME,cAAc,MAAMC,gBAAgBvB,QAAQE,SAAS,CAAA,GAAIe,SAAAA,CAAU;CAEzE,OAAOV,QAAQiB,KAAKL,UAAAA;EAChB,MAAMM,WAAyB,CAAA;EAC/B,IAAIN,MAAMC,aAAaE,YAAYH,MAAMC,YACrCK,SAASC,KAAKJ,YAAYH,MAAMC,UAAU;EAG9C,OAAO;GACHd,YAAYa,MAAMb;GAClBmB,UAAUA,SAASE,SAAS,IAAIF,WAAWG,KAAAA;GAG3CC,aAAaV,MAAMU,eAAejC,WAAWkC;EACjD;CACJ,CAAA;AACJ;AAEA,eAAeP,gBACXrB,SACAe,WAAmB;CAEnB,IAAIA,UAAUU,WAAW,GACrB,OAAO,CAAC;CAGZ,MAAMI,mBAAmB,IAAIjC,iBAAiBI,OAAAA;CAC9C,MAAM8B,QAAQ,MAAMC,QAAQC,IACxBjB,UAAUO,KAAKb,OAAOoB,iBAAiBI,wBAAwBxB,EAAAA,CAAAA,CAC1DyB,MAAMC,SAAS,CAAC1B,IAAI0B,IAAAA,CAAK,CAAA,CAAA;CAGlC,MAAMC,SAAqC,CAAC;CAC5C,KAAK,MAAM,CAAC3B,IAAI0B,SAASL,OACrB,IAAIK,MACAC,OAAO3B,MAAM0B;CAGrB,OAAOC;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/identity-provider/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAoB,MAAM,8BAA8B,CAAC;AAElG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAKpG,MAAM,MAAM,wCAAwC,GAAG;IACnD,UAAU,EAAE,0BAA0B,CAAC;IACvC,eAAe,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;CACtC,CAAC;AAEF,qBAAa,iCAAkC,YAAW,2BAA2B;IACjF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAExD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;gBAEvC,GAAG,EAAE,wCAAwC;IAKnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IAyC/F,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAQzD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAkBhF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAMrF,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAInE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAI7E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IAIzD,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IAI5E,IAAI,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIzD,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKjG,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5F,cAAc,CAAC,QAAQ,EAAE,wBAAwB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAe3G"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/identity-provider/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAoB,MAAM,8BAA8B,CAAC;AAElG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAKpG,MAAM,MAAM,wCAAwC,GAAG;IACnD,UAAU,EAAE,0BAA0B,CAAC;IACvC,eAAe,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;CACtC,CAAC;AAEF,qBAAa,iCAAkC,YAAW,2BAA2B;IACjF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAExD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;gBAEvC,GAAG,EAAE,wCAAwC;IAKnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IAyC/F,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAQzD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAkBhF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAMrF,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAInE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAI7E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IAIzD,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IAI5E,IAAI,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIzD,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKjG,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5F,cAAc,CAAC,QAAQ,EAAE,wBAAwB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAqB3G"}
@@ -123,9 +123,11 @@ var IdentityProviderRepositoryAdapter = class {
123
123
  async findByProtocol(protocol, realmKey) {
124
124
  const qb = this.repository.createQueryBuilder("provider");
125
125
  qb.where("provider.protocol = :protocol", { protocol });
126
- if (realmKey) {
126
+ if (realmKey) if (isUUID(realmKey)) qb.andWhere("provider.realm_id = :realmId", { realmId: realmKey });
127
+ else {
127
128
  const realm = await this.realmRepository.resolve(realmKey);
128
- if (realm) qb.andWhere("provider.realm_id = :realmId", { realmId: realm.id });
129
+ if (!realm) return [];
130
+ qb.andWhere("provider.realm_id = :realmId", { realmId: realm.id });
129
131
  }
130
132
  const entities = await qb.getMany();
131
133
  await this.repository.extendManyWithEA(entities);
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","names":["isUUID","applyQuery","isEntityUnique","validateEntityJoinColumns","DatabaseConflictError","IdentityProviderEntity","translateWhereConditions","RealmRepositoryAdapter","IdentityProviderRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","defaultAlias","relations","allowed","onJoin","_property","key","q","addGroupBy","fields","default","filters","sort","maxLimit","entities","total","getManyAndCount","data","meta","findOneById","id","entity","findOneBy","extendOneWithEA","findOneByName","name","realmKey","where","realm","resolve","andWhere","realmId","getOne","findOneByIdOrName","idOrName","findManyBy","findBy","create","merge","save","saveWithEA","attributes","saveOneWithEA","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting","findByProtocol","protocol","getMany","extendManyWithEA"],"sources":["../../../../../../src/app/modules/database/repositories/identity-provider/repository.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 { IdentityProvider, IdentityProviderProtocol, Realm } from '@authup/core-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, isEntityUnique, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IIdentityProviderRepository, IRealmRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport type { IdentityProviderRepository } from '../../../../../adapters/database/domains/index.ts';\nimport { IdentityProviderEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type IdentityProviderRepositoryAdapterContext = {\n repository: IdentityProviderRepository,\n realmRepository: Repository<Realm>,\n};\n\nexport class IdentityProviderRepositoryAdapter implements IIdentityProviderRepository {\n private readonly repository: IdentityProviderRepository;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: IdentityProviderRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: Record<string, any>): Promise<EntityRepositoryFindManyResult<IdentityProvider>> {\n const qb = this.repository.createQueryBuilder('provider');\n qb.groupBy('provider.id');\n\n const { pagination } = applyQuery(qb, query, {\n defaultAlias: 'provider',\n relations: {\n allowed: ['realm'],\n onJoin: (_property: string, key: string, q: any) => {\n q.addGroupBy(`${key}.id`);\n },\n },\n fields: {\n default: [\n 'id',\n 'name',\n 'display_name',\n 'protocol',\n 'preset',\n 'enabled',\n 'realm_id',\n 'created_at',\n 'updated_at',\n ],\n },\n filters: { allowed: ['name', 'protocol', 'enabled', 'realm_id', 'realm.name'] },\n sort: { allowed: ['id', 'created_at', 'updated_at'] },\n pagination: { maxLimit: 50 },\n });\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneById(id: string): Promise<IdentityProvider | null> {\n const entity = await this.findOneBy({ id });\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<IdentityProvider | null> {\n const qb = this.repository.createQueryBuilder('provider');\n qb.where('provider.name = :name', { name });\n\n if (realmKey) {\n const realm = await this.realmRepository.resolve(realmKey);\n if (realm) {\n qb.andWhere('provider.realm_id = :realmId', { realmId: realm.id });\n }\n }\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<IdentityProvider | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findManyBy(where: Record<string, any>): Promise<IdentityProvider[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<IdentityProvider | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<IdentityProvider>): IdentityProvider {\n return this.repository.create(data);\n }\n\n merge(entity: IdentityProvider, data: Partial<IdentityProvider>): IdentityProvider {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: IdentityProvider): Promise<IdentityProvider> {\n return this.repository.save(entity);\n }\n\n async saveWithEA(entity: IdentityProvider, attributes?: Record<string, any>): Promise<IdentityProvider> {\n await this.repository.saveOneWithEA(entity, attributes);\n return entity;\n }\n\n async extendOneWithEA(entity: IdentityProvider): Promise<void> {\n await this.repository.extendOneWithEA(entity);\n }\n\n async remove(entity: IdentityProvider): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<IdentityProvider>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: IdentityProviderEntity,\n });\n }\n\n async checkUniqueness(data: Partial<IdentityProvider>, existing?: IdentityProvider): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: IdentityProviderEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n\n async findByProtocol(protocol: IdentityProviderProtocol, realmKey?: string): Promise<IdentityProvider[]> {\n const qb = this.repository.createQueryBuilder('provider');\n qb.where('provider.protocol = :protocol', { protocol });\n\n if (realmKey) {\n const realm = await this.realmRepository.resolve(realmKey);\n if (realm) {\n qb.andWhere('provider.realm_id = :realmId', { realmId: realm.id });\n }\n }\n\n const entities = await qb.getMany();\n await this.repository.extendManyWithEA(entities);\n return entities;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"repository.mjs","names":["isUUID","applyQuery","isEntityUnique","validateEntityJoinColumns","DatabaseConflictError","IdentityProviderEntity","translateWhereConditions","RealmRepositoryAdapter","IdentityProviderRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","defaultAlias","relations","allowed","onJoin","_property","key","q","addGroupBy","fields","default","filters","sort","maxLimit","entities","total","getManyAndCount","data","meta","findOneById","id","entity","findOneBy","extendOneWithEA","findOneByName","name","realmKey","where","realm","resolve","andWhere","realmId","getOne","findOneByIdOrName","idOrName","findManyBy","findBy","create","merge","save","saveWithEA","attributes","saveOneWithEA","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting","findByProtocol","protocol","getMany","extendManyWithEA"],"sources":["../../../../../../src/app/modules/database/repositories/identity-provider/repository.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 { IdentityProvider, IdentityProviderProtocol, Realm } from '@authup/core-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, isEntityUnique, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IIdentityProviderRepository, IRealmRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport type { IdentityProviderRepository } from '../../../../../adapters/database/domains/index.ts';\nimport { IdentityProviderEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type IdentityProviderRepositoryAdapterContext = {\n repository: IdentityProviderRepository,\n realmRepository: Repository<Realm>,\n};\n\nexport class IdentityProviderRepositoryAdapter implements IIdentityProviderRepository {\n private readonly repository: IdentityProviderRepository;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: IdentityProviderRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: Record<string, any>): Promise<EntityRepositoryFindManyResult<IdentityProvider>> {\n const qb = this.repository.createQueryBuilder('provider');\n qb.groupBy('provider.id');\n\n const { pagination } = applyQuery(qb, query, {\n defaultAlias: 'provider',\n relations: {\n allowed: ['realm'],\n onJoin: (_property: string, key: string, q: any) => {\n q.addGroupBy(`${key}.id`);\n },\n },\n fields: {\n default: [\n 'id',\n 'name',\n 'display_name',\n 'protocol',\n 'preset',\n 'enabled',\n 'realm_id',\n 'created_at',\n 'updated_at',\n ],\n },\n filters: { allowed: ['name', 'protocol', 'enabled', 'realm_id', 'realm.name'] },\n sort: { allowed: ['id', 'created_at', 'updated_at'] },\n pagination: { maxLimit: 50 },\n });\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneById(id: string): Promise<IdentityProvider | null> {\n const entity = await this.findOneBy({ id });\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<IdentityProvider | null> {\n const qb = this.repository.createQueryBuilder('provider');\n qb.where('provider.name = :name', { name });\n\n if (realmKey) {\n const realm = await this.realmRepository.resolve(realmKey);\n if (realm) {\n qb.andWhere('provider.realm_id = :realmId', { realmId: realm.id });\n }\n }\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<IdentityProvider | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findManyBy(where: Record<string, any>): Promise<IdentityProvider[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<IdentityProvider | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<IdentityProvider>): IdentityProvider {\n return this.repository.create(data);\n }\n\n merge(entity: IdentityProvider, data: Partial<IdentityProvider>): IdentityProvider {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: IdentityProvider): Promise<IdentityProvider> {\n return this.repository.save(entity);\n }\n\n async saveWithEA(entity: IdentityProvider, attributes?: Record<string, any>): Promise<IdentityProvider> {\n await this.repository.saveOneWithEA(entity, attributes);\n return entity;\n }\n\n async extendOneWithEA(entity: IdentityProvider): Promise<void> {\n await this.repository.extendOneWithEA(entity);\n }\n\n async remove(entity: IdentityProvider): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<IdentityProvider>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: IdentityProviderEntity,\n });\n }\n\n async checkUniqueness(data: Partial<IdentityProvider>, existing?: IdentityProvider): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: IdentityProviderEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n\n async findByProtocol(protocol: IdentityProviderProtocol, realmKey?: string): Promise<IdentityProvider[]> {\n const qb = this.repository.createQueryBuilder('provider');\n qb.where('provider.protocol = :protocol', { protocol });\n\n if (realmKey) {\n if (isUUID(realmKey)) {\n qb.andWhere('provider.realm_id = :realmId', { realmId: realmKey });\n } else {\n const realm = await this.realmRepository.resolve(realmKey);\n if (!realm) {\n return [];\n }\n\n qb.andWhere('provider.realm_id = :realmId', { realmId: realm.id });\n }\n }\n\n const entities = await qb.getMany();\n await this.repository.extendManyWithEA(entities);\n return entities;\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { IPermissionProvider, PermissionGetOptions, PermissionPolicyBinding } from '@authup/access';
1
+ import type { IPermissionProvider, PermissionGetOptions, PermissionPolicyBindingAggregated } from '@authup/access';
2
2
  import type { DataSource, Repository } from 'typeorm';
3
3
  import { PermissionEntity, PermissionPolicyEntity, PolicyRepository } from '../../../../../adapters/database/domains/index.ts';
4
4
  export declare class PermissionDatabaseProvider implements IPermissionProvider {
@@ -7,6 +7,6 @@ export declare class PermissionDatabaseProvider implements IPermissionProvider {
7
7
  protected permissionPolicyRepository: Repository<PermissionPolicyEntity>;
8
8
  protected policyRepository: PolicyRepository;
9
9
  constructor(dataSource: DataSource);
10
- findOne(options: PermissionGetOptions): Promise<PermissionPolicyBinding | null>;
10
+ findOne(options: PermissionGetOptions): Promise<PermissionPolicyBindingAggregated | null>;
11
11
  }
12
12
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/permission-provider/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAER,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EAC1B,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,UAAU,EAAoB,UAAU,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAEH,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EACnB,MAAM,mDAAmD,CAAC;AAE3D,qBAAa,0BAA2B,YAAW,mBAAmB;IAClE,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IAEjC,SAAS,CAAC,UAAU,EAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAEpD,SAAS,CAAC,0BAA0B,EAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAE1E,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;gBAEjC,UAAU,EAAE,UAAU;IAO5B,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAI,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;CAkDzF"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/permission-provider/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAER,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACpC,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,UAAU,EAAoB,UAAU,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAEH,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EACnB,MAAM,mDAAmD,CAAC;AAE3D,qBAAa,0BAA2B,YAAW,mBAAmB;IAClE,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IAEjC,SAAS,CAAC,UAAU,EAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAEpD,SAAS,CAAC,0BAA0B,EAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAE1E,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;gBAEjC,UAAU,EAAE,UAAU;IAO5B,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAI,OAAO,CAAC,iCAAiC,GAAG,IAAI,CAAC;CAsDnG"}
@@ -8,7 +8,7 @@ import { PermissionPolicyEntity } from "../../../../../adapters/database/domains
8
8
  import "../../../../../adapters/database/domains/index.mjs";
9
9
  import { IsNull } from "typeorm";
10
10
  import { buildCacheKey } from "@authup/server-kit";
11
- import { buildPermissionKey } from "@authup/access";
11
+ import { aggregatePermissionPolicyBindings, buildPermissionKey } from "@authup/access";
12
12
  //#region src/app/modules/database/repositories/permission-provider/module.ts
13
13
  var PermissionDatabaseProvider = class {
14
14
  dataSource;
@@ -49,10 +49,11 @@ var PermissionDatabaseProvider = class {
49
49
  const tree = await this.policyRepository.findDescendantsTree(junction.policy);
50
50
  if (tree) policies.push(tree);
51
51
  }
52
- return {
52
+ const [aggregated] = aggregatePermissionPolicyBindings([{
53
53
  permission: entity,
54
54
  policies: policies.length > 0 ? policies : void 0
55
- };
55
+ }]);
56
+ return aggregated ?? null;
56
57
  }
57
58
  return null;
58
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":["buildPermissionKey","buildCacheKey","IsNull","CachePrefix","PermissionEntity","PermissionPolicyEntity","PolicyRepository","PermissionDatabaseProvider","dataSource","repository","permissionPolicyRepository","policyRepository","getRepository","findOne","options","where","name","clientId","client_id","realmId","realm_id","entity","cache","id","prefix","PERMISSION","key","milliseconds","junctions","find","permission_id","relations","policies","junction","policy","tree","findDescendantsTree","push","permission","length","undefined"],"sources":["../../../../../../src/app/modules/database/repositories/permission-provider/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n BasePolicy,\n IPermissionProvider,\n PermissionGetOptions,\n PermissionPolicyBinding,\n} from '@authup/access';\nimport {\n buildPermissionKey,\n} from '@authup/access';\nimport { buildCacheKey } from '@authup/server-kit';\nimport type { DataSource, FindOptionsWhere, Repository } from 'typeorm';\nimport { IsNull } from 'typeorm';\nimport {\n CachePrefix,\n PermissionEntity,\n PermissionPolicyEntity,\n PolicyRepository,\n} from '../../../../../adapters/database/domains/index.ts';\n\nexport class PermissionDatabaseProvider implements IPermissionProvider {\n protected dataSource: DataSource;\n\n protected repository : Repository<PermissionEntity>;\n\n protected permissionPolicyRepository : Repository<PermissionPolicyEntity>;\n\n protected policyRepository: PolicyRepository;\n\n constructor(dataSource: DataSource) {\n this.dataSource = dataSource;\n this.repository = this.dataSource.getRepository(PermissionEntity);\n this.permissionPolicyRepository = this.dataSource.getRepository(PermissionPolicyEntity);\n this.policyRepository = new PolicyRepository(this.dataSource);\n }\n\n async findOne(options: PermissionGetOptions) : Promise<PermissionPolicyBinding | null> {\n const where : FindOptionsWhere<PermissionEntity> = { name: options.name };\n\n if (typeof options.clientId !== 'undefined') {\n where.client_id = options.clientId === null ? IsNull() : options.clientId;\n }\n\n if (typeof options.realmId !== 'undefined') {\n where.realm_id = options.realmId === null ? IsNull() : options.realmId;\n }\n\n const entity = await this.repository.findOne({\n where,\n cache: {\n id: buildCacheKey({\n prefix: CachePrefix.PERMISSION,\n key: buildPermissionKey({\n name: options.name,\n client_id: options.clientId,\n realm_id: options.realmId,\n }),\n }),\n milliseconds: 60_000,\n },\n });\n\n if (entity) {\n const junctions = await this.permissionPolicyRepository.find({\n where: { permission_id: entity.id },\n relations: ['policy'],\n });\n\n const policies : BasePolicy[] = [];\n for (const junction of junctions) {\n if (junction.policy) {\n const tree = await this.policyRepository.findDescendantsTree(junction.policy);\n if (tree) {\n policies.push(tree);\n }\n }\n }\n\n return {\n permission: entity,\n policies: policies.length > 0 ? policies : undefined,\n };\n }\n\n return null;\n }\n}\n"],"mappings":";;;;;;;;;;;;AA0BA,IAAaO,6BAAb,MAAaA;CACCC;CAEAC;CAEAC;CAEAC;CAEV,YAAYH,YAAwB;EAChC,KAAKA,aAAaA;EAClB,KAAKC,aAAa,KAAKD,WAAWI,cAAcR,gBAAAA;EAChD,KAAKM,6BAA6B,KAAKF,WAAWI,cAAcP,sBAAAA;EAChE,KAAKM,mBAAmB,IAAIL,iBAAiB,KAAKE,UAAU;CAChE;CAEA,MAAMK,QAAQC,SAAyE;EACnF,MAAMC,QAA6C,EAAEC,MAAMF,QAAQE,KAAK;EAExE,IAAI,OAAOF,QAAQG,aAAa,aAC5BF,MAAMG,YAAYJ,QAAQG,aAAa,OAAOf,OAAAA,IAAWY,QAAQG;EAGrE,IAAI,OAAOH,QAAQK,YAAY,aAC3BJ,MAAMK,WAAWN,QAAQK,YAAY,OAAOjB,OAAAA,IAAWY,QAAQK;EAGnE,MAAME,SAAS,MAAM,KAAKZ,WAAWI,QAAQ;GACzCE;GACAO,OAAO;IACHC,IAAItB,cAAc;KACduB,QAAQrB,YAAYsB;KACpBC,KAAK1B,mBAAmB;MACpBgB,MAAMF,QAAQE;MACdE,WAAWJ,QAAQG;MACnBG,UAAUN,QAAQK;KACtB,CAAA;IACJ,CAAA;IACAQ,cAAc;GAClB;EACJ,CAAA;EAEA,IAAIN,QAAQ;GACR,MAAMO,YAAY,MAAM,KAAKlB,2BAA2BmB,KAAK;IACzDd,OAAO,EAAEe,eAAeT,OAAOE,GAAG;IAClCQ,WAAW,CAAC,QAAA;GAChB,CAAA;GAEA,MAAMC,WAA0B,CAAA;GAChC,KAAK,MAAMC,YAAYL,WACnB,IAAIK,SAASC,QAAQ;IACjB,MAAMC,OAAO,MAAM,KAAKxB,iBAAiByB,oBAAoBH,SAASC,MAAM;IAC5E,IAAIC,MACAH,SAASK,KAAKF,IAAAA;GAEtB;GAGJ,OAAO;IACHG,YAAYjB;IACZW,UAAUA,SAASO,SAAS,IAAIP,WAAWQ,KAAAA;GAC/C;EACJ;EAEA,OAAO;CACX;AACJ"}
1
+ {"version":3,"file":"module.mjs","names":["aggregatePermissionPolicyBindings","buildPermissionKey","buildCacheKey","IsNull","CachePrefix","PermissionEntity","PermissionPolicyEntity","PolicyRepository","PermissionDatabaseProvider","dataSource","repository","permissionPolicyRepository","policyRepository","getRepository","findOne","options","where","name","clientId","client_id","realmId","realm_id","entity","cache","id","prefix","PERMISSION","key","milliseconds","junctions","find","permission_id","relations","policies","junction","policy","tree","findDescendantsTree","push","aggregated","permission","length","undefined"],"sources":["../../../../../../src/app/modules/database/repositories/permission-provider/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n BasePolicy,\n IPermissionProvider,\n PermissionGetOptions,\n PermissionPolicyBindingAggregated,\n} from '@authup/access';\nimport {\n aggregatePermissionPolicyBindings,\n buildPermissionKey,\n} from '@authup/access';\nimport { buildCacheKey } from '@authup/server-kit';\nimport type { DataSource, FindOptionsWhere, Repository } from 'typeorm';\nimport { IsNull } from 'typeorm';\nimport {\n CachePrefix,\n PermissionEntity,\n PermissionPolicyEntity,\n PolicyRepository,\n} from '../../../../../adapters/database/domains/index.ts';\n\nexport class PermissionDatabaseProvider implements IPermissionProvider {\n protected dataSource: DataSource;\n\n protected repository : Repository<PermissionEntity>;\n\n protected permissionPolicyRepository : Repository<PermissionPolicyEntity>;\n\n protected policyRepository: PolicyRepository;\n\n constructor(dataSource: DataSource) {\n this.dataSource = dataSource;\n this.repository = this.dataSource.getRepository(PermissionEntity);\n this.permissionPolicyRepository = this.dataSource.getRepository(PermissionPolicyEntity);\n this.policyRepository = new PolicyRepository(this.dataSource);\n }\n\n async findOne(options: PermissionGetOptions) : Promise<PermissionPolicyBindingAggregated | null> {\n const where : FindOptionsWhere<PermissionEntity> = { name: options.name };\n\n if (typeof options.clientId !== 'undefined') {\n where.client_id = options.clientId === null ? IsNull() : options.clientId;\n }\n\n if (typeof options.realmId !== 'undefined') {\n where.realm_id = options.realmId === null ? IsNull() : options.realmId;\n }\n\n const entity = await this.repository.findOne({\n where,\n cache: {\n id: buildCacheKey({\n prefix: CachePrefix.PERMISSION,\n key: buildPermissionKey({\n name: options.name,\n client_id: options.clientId,\n realm_id: options.realmId,\n }),\n }),\n milliseconds: 60_000,\n },\n });\n\n if (entity) {\n const junctions = await this.permissionPolicyRepository.find({\n where: { permission_id: entity.id },\n relations: ['policy'],\n });\n\n const policies : BasePolicy[] = [];\n for (const junction of junctions) {\n if (junction.policy) {\n const tree = await this.policyRepository.findDescendantsTree(junction.policy);\n if (tree) {\n policies.push(tree);\n }\n }\n }\n\n const [aggregated] = aggregatePermissionPolicyBindings([\n {\n permission: entity,\n policies: policies.length > 0 ? policies : undefined,\n },\n ]);\n\n return aggregated ?? null;\n }\n\n return null;\n }\n}\n"],"mappings":";;;;;;;;;;;;AA2BA,IAAaQ,6BAAb,MAAaA;CACCC;CAEAC;CAEAC;CAEAC;CAEV,YAAYH,YAAwB;EAChC,KAAKA,aAAaA;EAClB,KAAKC,aAAa,KAAKD,WAAWI,cAAcR,gBAAAA;EAChD,KAAKM,6BAA6B,KAAKF,WAAWI,cAAcP,sBAAAA;EAChE,KAAKM,mBAAmB,IAAIL,iBAAiB,KAAKE,UAAU;CAChE;CAEA,MAAMK,QAAQC,SAAmF;EAC7F,MAAMC,QAA6C,EAAEC,MAAMF,QAAQE,KAAK;EAExE,IAAI,OAAOF,QAAQG,aAAa,aAC5BF,MAAMG,YAAYJ,QAAQG,aAAa,OAAOf,OAAAA,IAAWY,QAAQG;EAGrE,IAAI,OAAOH,QAAQK,YAAY,aAC3BJ,MAAMK,WAAWN,QAAQK,YAAY,OAAOjB,OAAAA,IAAWY,QAAQK;EAGnE,MAAME,SAAS,MAAM,KAAKZ,WAAWI,QAAQ;GACzCE;GACAO,OAAO;IACHC,IAAItB,cAAc;KACduB,QAAQrB,YAAYsB;KACpBC,KAAK1B,mBAAmB;MACpBgB,MAAMF,QAAQE;MACdE,WAAWJ,QAAQG;MACnBG,UAAUN,QAAQK;KACtB,CAAA;IACJ,CAAA;IACAQ,cAAc;GAClB;EACJ,CAAA;EAEA,IAAIN,QAAQ;GACR,MAAMO,YAAY,MAAM,KAAKlB,2BAA2BmB,KAAK;IACzDd,OAAO,EAAEe,eAAeT,OAAOE,GAAG;IAClCQ,WAAW,CAAC,QAAA;GAChB,CAAA;GAEA,MAAMC,WAA0B,CAAA;GAChC,KAAK,MAAMC,YAAYL,WACnB,IAAIK,SAASC,QAAQ;IACjB,MAAMC,OAAO,MAAM,KAAKxB,iBAAiByB,oBAAoBH,SAASC,MAAM;IAC5E,IAAIC,MACAH,SAASK,KAAKF,IAAAA;GAEtB;GAGJ,MAAM,CAACG,cAAcvC,kCAAkC,CACnD;IACIwC,YAAYlB;IACZW,UAAUA,SAASQ,SAAS,IAAIR,WAAWS,KAAAA;GAC/C,CAAA,CACH;GAED,OAAOH,cAAc;EACzB;EAEA,OAAO;CACX;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/realm/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,qBAAa,sBAAuB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;gBAEnC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIzC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAI9C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAO5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAuBpF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAM1D,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIxD,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIlE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;IAInC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;IAI3C,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAInC,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAEnE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAevF"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/realm/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,qBAAa,sBAAuB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;gBAEnC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIzC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAI9C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAO5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAuBpF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAM1D,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIxD,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIlE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;IAInC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;IAI3C,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAInC,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAEnE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAkBvF"}
@@ -6,6 +6,7 @@ import "../../../../../adapters/database/domains/index.mjs";
6
6
  import { translateWhereConditions } from "../helpers.mjs";
7
7
  import { isUUID } from "@authup/kit";
8
8
  import { REALM_MASTER_NAME } from "@authup/core-kit";
9
+ import { InternalError } from "@authup/errors";
9
10
  import { applyQuery, validateEntityJoinColumns } from "typeorm-extension";
10
11
  //#region src/app/modules/database/repositories/realm/repository.ts
11
12
  var RealmRepositoryAdapter = class {
@@ -18,7 +19,7 @@ var RealmRepositoryAdapter = class {
18
19
  }
19
20
  findOneByName(name) {
20
21
  const qb = this.repository.createQueryBuilder("realm");
21
- qb.where("realm.name = :name", { name });
22
+ qb.where("realm.name = :name", { name: name.trim().toLowerCase() });
22
23
  return qb.getOne();
23
24
  }
24
25
  async findMany(query) {
@@ -87,7 +88,10 @@ var RealmRepositoryAdapter = class {
87
88
  async resolve(id, withFallback) {
88
89
  let entity = null;
89
90
  if (id) entity = await this.findOneByIdOrName(id);
90
- if (!entity && withFallback) entity = await this.findOneBy({ name: REALM_MASTER_NAME });
91
+ if (!entity && withFallback) {
92
+ entity = await this.findOneBy({ name: REALM_MASTER_NAME });
93
+ if (!entity) throw new InternalError("The master realm could not be resolved.");
94
+ }
91
95
  return entity;
92
96
  }
93
97
  };
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","names":["REALM_MASTER_NAME","isUUID","applyQuery","validateEntityJoinColumns","RealmEntity","translateWhereConditions","RealmRepositoryAdapter","repository","findOneById","id","findOneBy","findOneByName","name","qb","createQueryBuilder","where","getOne","findMany","query","groupBy","pagination","defaultAlias","filters","allowed","maxLimit","fields","sort","entities","total","getManyAndCount","data","meta","findOneByIdOrName","idOrName","findManyBy","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","resolve","withFallback"],"sources":["../../../../../../src/app/modules/database/repositories/realm/repository.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 { Realm } from '@authup/core-kit';\nimport { REALM_MASTER_NAME } from '@authup/core-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRealmRepository } from '../../../../../core/index.ts';\nimport { RealmEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class RealmRepositoryAdapter implements IRealmRepository {\n private readonly repository: Repository<Realm>;\n\n constructor(repository: Repository<Realm>) {\n this.repository = repository;\n }\n\n findOneById(id: string): Promise<Realm | null> {\n return this.findOneBy({ id });\n }\n\n findOneByName(name: string): Promise<Realm | null> {\n const qb = this.repository.createQueryBuilder('realm');\n qb.where('realm.name = :name', { name });\n\n return qb.getOne();\n }\n\n async findMany(query: Record<string, any>): Promise<EntityRepositoryFindManyResult<Realm>> {\n const qb = this.repository.createQueryBuilder('realm');\n qb.groupBy('realm.id');\n\n const { pagination } = applyQuery(qb, query, {\n defaultAlias: 'realm',\n filters: { allowed: ['id', 'built_in', 'display_name', 'name'] },\n pagination: { maxLimit: 50 },\n fields: { allowed: ['id', 'name', 'description', 'built_in', 'created_at', 'updated_at'] },\n sort: { allowed: ['id', 'name', 'created_at', 'updated_at'] },\n });\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneByIdOrName(idOrName: string): Promise<Realm | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<Realm[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<Realm | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<Realm>): Realm {\n return this.repository.create(data);\n }\n\n merge(entity: Realm, data: Partial<Realm>): Realm {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: Realm): Promise<Realm> {\n return this.repository.save(entity);\n }\n\n async remove(entity: Realm): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<Realm>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: RealmEntity,\n });\n }\n\n async resolve(id: string | undefined, withFallback: true): Promise<Realm>;\n\n async resolve(id: string | undefined, withFallback?: boolean): Promise<Realm | null>;\n\n async resolve(id: string | undefined, withFallback?: boolean): Promise<Realm | null> {\n let entity: Realm | null = null;\n\n if (id) {\n entity = await this.findOneByIdOrName(id);\n }\n\n if (!entity && withFallback) {\n entity = await this.findOneBy({ name: REALM_MASTER_NAME });\n }\n\n return entity;\n }\n}\n"],"mappings":";;;;;;;;;;AAiBA,IAAaM,yBAAb,MAAaA;CACQC;CAEjB,YAAYA,YAA+B;EACvC,KAAKA,aAAaA;CACtB;CAEAC,YAAYC,IAAmC;EAC3C,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEAE,cAAcC,MAAqC;EAC/C,MAAMC,KAAK,KAAKN,WAAWO,mBAAmB,OAAA;EAC9CD,GAAGE,MAAM,sBAAsB,EAAEH,KAAK,CAAA;EAEtC,OAAOC,GAAGG,OAAM;CACpB;CAEA,MAAMC,SAASC,OAA4E;EACvF,MAAML,KAAK,KAAKN,WAAWO,mBAAmB,OAAA;EAC9CD,GAAGM,QAAQ,UAAA;EAEX,MAAM,EAAEC,eAAelB,WAAWW,IAAIK,OAAO;GACzCG,cAAc;GACdC,SAAS,EAAEC,SAAS;IAAC;IAAM;IAAY;IAAgB;KAAQ;GAC/DH,YAAY,EAAEI,UAAU,GAAG;GAC3BC,QAAQ,EAAEF,SAAS;IAAC;IAAM;IAAQ;IAAe;IAAY;IAAc;KAAc;GACzFG,MAAM,EAAEH,SAAS;IAAC;IAAM;IAAQ;IAAc;KAAc;EAChE,CAAA;EAEA,MAAM,CAACI,UAAUC,SAAS,MAAMf,GAAGgB,gBAAe;EAElD,OAAO;GACHC,MAAMH;GACNI,MAAM;IACFH;IACA,GAAGR;GACP;EACJ;CACJ;CAEA,MAAMY,kBAAkBC,UAAyC;EAC7D,OAAOhC,OAAOgC,QAAAA,IACV,KAAKzB,YAAYyB,QAAAA,IACjB,KAAKtB,cAAcsB,QAAAA;CAC3B;CAEA,MAAMC,WAAWnB,OAA8C;EAC3D,OAAO,KAAKR,WAAW4B,OAAO9B,yBAAyBU,KAAAA,CAAAA;CAC3D;CAEA,MAAML,UAAUK,OAAmD;EAC/D,OAAO,KAAKR,WAAWG,UAAUL,yBAAyBU,KAAAA,CAAAA;CAC9D;CAEAqB,OAAON,MAA6B;EAChC,OAAO,KAAKvB,WAAW6B,OAAON,IAAAA;CAClC;CAEAO,MAAMC,QAAeR,MAA6B;EAC9C,OAAO,KAAKvB,WAAW8B,MAAMC,QAAQR,IAAAA;CACzC;CAEA,MAAMS,KAAKD,QAA+B;EACtC,OAAO,KAAK/B,WAAWgC,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAA8B;EACvC,MAAM,KAAK/B,WAAWiC,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBX,MAAqC;EAC3D,MAAM3B,0BAA0B2B,MAAM;GAClCY,YAAY,KAAKnC,WAAWoC,QAAQC;GACpCC,cAAczC;EAClB,CAAA;CACJ;CAMA,MAAM0C,QAAQrC,IAAwBsC,cAA+C;EACjF,IAAIT,SAAuB;EAE3B,IAAI7B,IACA6B,SAAS,MAAM,KAAKN,kBAAkBvB,EAAAA;EAG1C,IAAI,CAAC6B,UAAUS,cACXT,SAAS,MAAM,KAAK5B,UAAU,EAAEE,MAAMZ,kBAAkB,CAAA;EAG5D,OAAOsC;CACX;AACJ"}
1
+ {"version":3,"file":"repository.mjs","names":["REALM_MASTER_NAME","InternalError","isUUID","applyQuery","validateEntityJoinColumns","RealmEntity","translateWhereConditions","RealmRepositoryAdapter","repository","findOneById","id","findOneBy","findOneByName","name","qb","createQueryBuilder","where","trim","toLowerCase","getOne","findMany","query","groupBy","pagination","defaultAlias","filters","allowed","maxLimit","fields","sort","entities","total","getManyAndCount","data","meta","findOneByIdOrName","idOrName","findManyBy","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","resolve","withFallback"],"sources":["../../../../../../src/app/modules/database/repositories/realm/repository.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 { Realm } from '@authup/core-kit';\nimport { REALM_MASTER_NAME } from '@authup/core-kit';\nimport { InternalError } from '@authup/errors';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRealmRepository } from '../../../../../core/index.ts';\nimport { RealmEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class RealmRepositoryAdapter implements IRealmRepository {\n private readonly repository: Repository<Realm>;\n\n constructor(repository: Repository<Realm>) {\n this.repository = repository;\n }\n\n findOneById(id: string): Promise<Realm | null> {\n return this.findOneBy({ id });\n }\n\n findOneByName(name: string): Promise<Realm | null> {\n const qb = this.repository.createQueryBuilder('realm');\n qb.where('realm.name = :name', { name: name.trim().toLowerCase() });\n\n return qb.getOne();\n }\n\n async findMany(query: Record<string, any>): Promise<EntityRepositoryFindManyResult<Realm>> {\n const qb = this.repository.createQueryBuilder('realm');\n qb.groupBy('realm.id');\n\n const { pagination } = applyQuery(qb, query, {\n defaultAlias: 'realm',\n filters: { allowed: ['id', 'built_in', 'display_name', 'name'] },\n pagination: { maxLimit: 50 },\n fields: { allowed: ['id', 'name', 'description', 'built_in', 'created_at', 'updated_at'] },\n sort: { allowed: ['id', 'name', 'created_at', 'updated_at'] },\n });\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneByIdOrName(idOrName: string): Promise<Realm | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<Realm[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<Realm | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<Realm>): Realm {\n return this.repository.create(data);\n }\n\n merge(entity: Realm, data: Partial<Realm>): Realm {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: Realm): Promise<Realm> {\n return this.repository.save(entity);\n }\n\n async remove(entity: Realm): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<Realm>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: RealmEntity,\n });\n }\n\n async resolve(id: string | undefined, withFallback: true): Promise<Realm>;\n\n async resolve(id: string | undefined, withFallback?: boolean): Promise<Realm | null>;\n\n async resolve(id: string | undefined, withFallback?: boolean): Promise<Realm | null> {\n let entity: Realm | null = null;\n\n if (id) {\n entity = await this.findOneByIdOrName(id);\n }\n\n if (!entity && withFallback) {\n entity = await this.findOneBy({ name: REALM_MASTER_NAME });\n if (!entity) {\n throw new InternalError('The master realm could not be resolved.');\n }\n }\n\n return entity;\n }\n}\n"],"mappings":";;;;;;;;;;;AAkBA,IAAaO,yBAAb,MAAaA;CACQC;CAEjB,YAAYA,YAA+B;EACvC,KAAKA,aAAaA;CACtB;CAEAC,YAAYC,IAAmC;EAC3C,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEAE,cAAcC,MAAqC;EAC/C,MAAMC,KAAK,KAAKN,WAAWO,mBAAmB,OAAA;EAC9CD,GAAGE,MAAM,sBAAsB,EAAEH,MAAMA,KAAKI,KAAI,CAAA,CAAGC,YAAW,EAAG,CAAA;EAEjE,OAAOJ,GAAGK,OAAM;CACpB;CAEA,MAAMC,SAASC,OAA4E;EACvF,MAAMP,KAAK,KAAKN,WAAWO,mBAAmB,OAAA;EAC9CD,GAAGQ,QAAQ,UAAA;EAEX,MAAM,EAAEC,eAAepB,WAAWW,IAAIO,OAAO;GACzCG,cAAc;GACdC,SAAS,EAAEC,SAAS;IAAC;IAAM;IAAY;IAAgB;KAAQ;GAC/DH,YAAY,EAAEI,UAAU,GAAG;GAC3BC,QAAQ,EAAEF,SAAS;IAAC;IAAM;IAAQ;IAAe;IAAY;IAAc;KAAc;GACzFG,MAAM,EAAEH,SAAS;IAAC;IAAM;IAAQ;IAAc;KAAc;EAChE,CAAA;EAEA,MAAM,CAACI,UAAUC,SAAS,MAAMjB,GAAGkB,gBAAe;EAElD,OAAO;GACHC,MAAMH;GACNI,MAAM;IACFH;IACA,GAAGR;GACP;EACJ;CACJ;CAEA,MAAMY,kBAAkBC,UAAyC;EAC7D,OAAOlC,OAAOkC,QAAAA,IACV,KAAK3B,YAAY2B,QAAAA,IACjB,KAAKxB,cAAcwB,QAAAA;CAC3B;CAEA,MAAMC,WAAWrB,OAA8C;EAC3D,OAAO,KAAKR,WAAW8B,OAAOhC,yBAAyBU,KAAAA,CAAAA;CAC3D;CAEA,MAAML,UAAUK,OAAmD;EAC/D,OAAO,KAAKR,WAAWG,UAAUL,yBAAyBU,KAAAA,CAAAA;CAC9D;CAEAuB,OAAON,MAA6B;EAChC,OAAO,KAAKzB,WAAW+B,OAAON,IAAAA;CAClC;CAEAO,MAAMC,QAAeR,MAA6B;EAC9C,OAAO,KAAKzB,WAAWgC,MAAMC,QAAQR,IAAAA;CACzC;CAEA,MAAMS,KAAKD,QAA+B;EACtC,OAAO,KAAKjC,WAAWkC,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAA8B;EACvC,MAAM,KAAKjC,WAAWmC,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBX,MAAqC;EAC3D,MAAM7B,0BAA0B6B,MAAM;GAClCY,YAAY,KAAKrC,WAAWsC,QAAQC;GACpCC,cAAc3C;EAClB,CAAA;CACJ;CAMA,MAAM4C,QAAQvC,IAAwBwC,cAA+C;EACjF,IAAIT,SAAuB;EAE3B,IAAI/B,IACA+B,SAAS,MAAM,KAAKN,kBAAkBzB,EAAAA;EAG1C,IAAI,CAAC+B,UAAUS,cAAc;GACzBT,SAAS,MAAM,KAAK9B,UAAU,EAAEE,MAAMb,kBAAkB,CAAA;GACxD,IAAI,CAACyC,QACD,MAAM,IAAIxC,cAAc,yCAAA;EAEhC;EAEA,OAAOwC;CACX;AACJ"}
@@ -21,6 +21,8 @@ export declare class HTTPControllerModule {
21
21
  createIdentityProvider(container: IContainer): IdentityProviderController;
22
22
  createClientController(container: IContainer): ClientController;
23
23
  createRobotController(container: IContainer): RobotController;
24
+ private createPermissionRepository;
25
+ private createRoleRepository;
24
26
  createPermissionController(container: IContainer): Promise<PermissionController>;
25
27
  createRoleController(container: IContainer): RoleController;
26
28
  createClientPermissionController(container: IContainer): ClientPermissionController;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/controller.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAwElC,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,qCAAqC,EACrC,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAClB,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EASH,uBAAuB,EAOvB,mBAAmB,EAetB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,qBAAa,oBAAoB;IACvB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D9D,eAAe,CAAC,SAAS,EAAE,UAAU;IA0BrC,WAAW,CAAC,SAAS,EAAE,UAAU;IAgDjC,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAM5C,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAY9C,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAwBnD,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAY9C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAM5C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAI,sBAAsB;IAQxD,yBAAyB,CAAC,SAAS,EAAE,UAAU;IAwB/C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAiC5C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAiB5C,qBAAqB,CAAC,SAAS,EAAE,UAAU;IAoBrC,0BAA0B,CAAC,SAAS,EAAE,UAAU;IAkDtD,oBAAoB,CAAC,SAAS,EAAE,UAAU;IAe1C,gCAAgC,CAAC,SAAS,EAAE,UAAU;IAYtD,0BAA0B,CAAC,SAAS,EAAE,UAAU;IAShD,2BAA2B,CAAC,SAAS,EAAE,UAAU;IAQjD,+BAA+B,CAAC,SAAS,EAAE,UAAU;IAYrD,yBAAyB,CAAC,SAAS,EAAE,UAAU;IAS/C,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,gCAAgC,CAAC,SAAS,EAAE,UAAU;IAQtD,qBAAqB,CAAC,SAAS,EAAE,UAAU;IAe3C,oBAAoB,CAAC,SAAS,EAAE,UAAU;IAe1C,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAS9C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAyB5C,oCAAoC,CAAC,SAAS,EAAE,UAAU;IAS1D,mBAAmB,CAAC,SAAS,EAAE,UAAU;IAMzC,qBAAqB,CAAC,SAAS,EAAE,UAAU;CA8B9C"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/http/modules/controller.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAwElC,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,qCAAqC,EACrC,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAClB,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EASH,uBAAuB,EAOvB,mBAAmB,EAetB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,qBAAa,oBAAoB;IACvB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D9D,eAAe,CAAC,SAAS,EAAE,UAAU;IA0BrC,WAAW,CAAC,SAAS,EAAE,UAAU;IAkDjC,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAM5C,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAY9C,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAYpD,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAwBnD,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAY9C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAM5C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAI,sBAAsB;IAQxD,yBAAyB,CAAC,SAAS,EAAE,UAAU;IAwB/C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAiC5C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAiB5C,qBAAqB,CAAC,SAAS,EAAE,UAAU;IAoB3C,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,oBAAoB;IAOtB,0BAA0B,CAAC,SAAS,EAAE,UAAU;IAkDtD,oBAAoB,CAAC,SAAS,EAAE,UAAU;IAe1C,gCAAgC,CAAC,SAAS,EAAE,UAAU;IActD,0BAA0B,CAAC,SAAS,EAAE,UAAU;IAShD,2BAA2B,CAAC,SAAS,EAAE,UAAU;IAQjD,+BAA+B,CAAC,SAAS,EAAE,UAAU;IAcrD,yBAAyB,CAAC,SAAS,EAAE,UAAU;IAS/C,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAcpD,gCAAgC,CAAC,SAAS,EAAE,UAAU;IAQtD,qBAAqB,CAAC,SAAS,EAAE,UAAU;IAe3C,oBAAoB,CAAC,SAAS,EAAE,UAAU;IAe1C,6BAA6B,CAAC,SAAS,EAAE,UAAU;IAYnD,8BAA8B,CAAC,SAAS,EAAE,UAAU;IAcpD,wBAAwB,CAAC,SAAS,EAAE,UAAU;IAS9C,sBAAsB,CAAC,SAAS,EAAE,UAAU;IAyB5C,oCAAoC,CAAC,SAAS,EAAE,UAAU;IAc1D,mBAAmB,CAAC,SAAS,EAAE,UAAU;IAMzC,qBAAqB,CAAC,SAAS,EAAE,UAAU;CA8B9C"}
@@ -222,6 +222,7 @@ var HTTPControllerModule = class {
222
222
  robotAuthenticator: new RobotAuthenticator(identityResolver),
223
223
  userAuthenticator: new CredentialsAuthenticator([identityProviderLdapCollectionAuthenticator, new UserAuthenticator(identityResolver)]),
224
224
  oauth2ClientAuthenticator: new OAuth2ClientAuthenticator(identityResolver),
225
+ realmRepository: new RealmRepositoryAdapter(container.resolve(RealmEntity)),
225
226
  sessionManager
226
227
  });
227
228
  }
@@ -373,6 +374,18 @@ var HTTPControllerModule = class {
373
374
  dataSource
374
375
  });
375
376
  }
377
+ createPermissionRepository(container) {
378
+ return new PermissionRepositoryAdapter({
379
+ repository: container.resolve(PermissionEntity),
380
+ realmRepository: container.resolve(RealmEntity)
381
+ });
382
+ }
383
+ createRoleRepository(container) {
384
+ return new RoleRepositoryAdapter({
385
+ repository: container.resolve(RoleEntity),
386
+ realmRepository: container.resolve(RealmEntity)
387
+ });
388
+ }
376
389
  async createPermissionController(container) {
377
390
  const dataSource = container.resolve(DatabaseInjectionKey.DataSource);
378
391
  const realmRepository = container.resolve(RealmEntity);
@@ -419,6 +432,7 @@ var HTTPControllerModule = class {
419
432
  createClientPermissionController(container) {
420
433
  return new ClientPermissionController({ service: new ClientPermissionService({
421
434
  repository: new ClientPermissionRepositoryAdapter(container.resolve(ClientPermissionEntity)),
435
+ permissionRepository: this.createPermissionRepository(container),
422
436
  identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
423
437
  }) });
424
438
  }
@@ -434,6 +448,7 @@ var HTTPControllerModule = class {
434
448
  createRobotPermissionController(container) {
435
449
  return new RobotPermissionController({ service: new RobotPermissionService({
436
450
  repository: new RobotPermissionRepositoryAdapter(container.resolve(RobotPermissionEntity)),
451
+ permissionRepository: this.createPermissionRepository(container),
437
452
  identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
438
453
  }) });
439
454
  }
@@ -453,6 +468,7 @@ var HTTPControllerModule = class {
453
468
  createRolePermissionController(container) {
454
469
  return new RolePermissionController({ service: new RolePermissionService({
455
470
  repository: new RolePermissionRepositoryAdapter(container.resolve(RolePermissionEntity)),
471
+ permissionRepository: this.createPermissionRepository(container),
456
472
  identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
457
473
  }) });
458
474
  }
@@ -490,6 +506,7 @@ var HTTPControllerModule = class {
490
506
  createUserPermissionController(container) {
491
507
  return new UserPermissionController({ service: new UserPermissionService({
492
508
  repository: new UserPermissionRepositoryAdapter(container.resolve(UserPermissionEntity)),
509
+ permissionRepository: this.createPermissionRepository(container),
493
510
  identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
494
511
  }) });
495
512
  }
@@ -522,6 +539,7 @@ var HTTPControllerModule = class {
522
539
  createIdentityProviderRoleController(container) {
523
540
  return new IdentityProviderRoleMappingController({ service: new IdentityProviderRoleMappingService({
524
541
  repository: new IdentityProviderRoleMappingRepositoryAdapter(container.resolve(IdentityProviderRoleMappingEntity)),
542
+ roleRepository: this.createRoleRepository(container),
525
543
  identityPermissionProvider: container.resolve(IdentityInjectionKey.PermissionProvider)
526
544
  }) });
527
545
  }