@venizia/ignis 0.2.0-2 → 0.2.0-21

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 (291) hide show
  1. package/dist/base/applications/base.d.ts +14 -13
  2. package/dist/base/applications/base.d.ts.map +1 -1
  3. package/dist/base/applications/base.js +55 -52
  4. package/dist/base/applications/base.js.map +1 -1
  5. package/dist/base/applications/boot-steps.d.ts +13 -0
  6. package/dist/base/applications/boot-steps.d.ts.map +1 -0
  7. package/dist/base/applications/boot-steps.js +23 -0
  8. package/dist/base/applications/boot-steps.js.map +1 -0
  9. package/dist/base/applications/common/index.d.ts +2 -0
  10. package/dist/base/applications/common/index.d.ts.map +1 -0
  11. package/dist/base/applications/common/index.js +18 -0
  12. package/dist/base/applications/common/index.js.map +1 -0
  13. package/dist/base/applications/{types.d.ts → common/types.d.ts} +11 -0
  14. package/dist/base/applications/common/types.d.ts.map +1 -0
  15. package/dist/base/applications/common/types.js.map +1 -0
  16. package/dist/base/applications/index.d.ts +2 -1
  17. package/dist/base/applications/index.d.ts.map +1 -1
  18. package/dist/base/applications/index.js +2 -1
  19. package/dist/base/applications/index.js.map +1 -1
  20. package/dist/base/applications/server.d.ts +4 -2
  21. package/dist/base/applications/server.d.ts.map +1 -1
  22. package/dist/base/applications/server.js +25 -2
  23. package/dist/base/applications/server.js.map +1 -1
  24. package/dist/base/controllers/grpc/adapter.d.ts +2 -1
  25. package/dist/base/controllers/grpc/adapter.d.ts.map +1 -1
  26. package/dist/base/controllers/grpc/adapter.js +4 -3
  27. package/dist/base/controllers/grpc/adapter.js.map +1 -1
  28. package/dist/base/middlewares/app-error/app-error.middleware.d.ts +3 -2
  29. package/dist/base/middlewares/app-error/app-error.middleware.d.ts.map +1 -1
  30. package/dist/base/middlewares/app-error/app-error.middleware.js +4 -3
  31. package/dist/base/middlewares/app-error/app-error.middleware.js.map +1 -1
  32. package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts.map +1 -1
  33. package/dist/base/middlewares/request-spy/request-spy.middleware.js +2 -1
  34. package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
  35. package/dist/components/api-reference/component.d.ts.map +1 -1
  36. package/dist/components/api-reference/component.js +4 -2
  37. package/dist/components/api-reference/component.js.map +1 -1
  38. package/dist/components/api-reference/index.d.ts +1 -1
  39. package/dist/components/api-reference/index.d.ts.map +1 -1
  40. package/dist/components/api-reference/index.js +1 -1
  41. package/dist/components/api-reference/index.js.map +1 -1
  42. package/dist/components/api-reference/ui/factory.d.ts +14 -0
  43. package/dist/components/api-reference/ui/factory.d.ts.map +1 -0
  44. package/dist/components/api-reference/{ui-factory.js → ui/factory.js} +7 -21
  45. package/dist/components/api-reference/ui/factory.js.map +1 -0
  46. package/dist/components/api-reference/ui/index.d.ts +4 -0
  47. package/dist/components/api-reference/ui/index.d.ts.map +1 -0
  48. package/dist/components/api-reference/ui/index.js +20 -0
  49. package/dist/components/api-reference/ui/index.js.map +1 -0
  50. package/dist/components/api-reference/ui/scalar.d.ts +8 -0
  51. package/dist/components/api-reference/ui/scalar.d.ts.map +1 -0
  52. package/dist/components/api-reference/ui/scalar.js +28 -0
  53. package/dist/components/api-reference/ui/scalar.js.map +1 -0
  54. package/dist/components/api-reference/ui/swagger.d.ts +8 -0
  55. package/dist/components/api-reference/ui/swagger.d.ts.map +1 -0
  56. package/dist/components/api-reference/ui/swagger.js +28 -0
  57. package/dist/components/api-reference/ui/swagger.js.map +1 -0
  58. package/dist/components/auth/authenticate/component.d.ts +10 -1
  59. package/dist/components/auth/authenticate/component.d.ts.map +1 -1
  60. package/dist/components/auth/authenticate/component.js +79 -25
  61. package/dist/components/auth/authenticate/component.js.map +1 -1
  62. package/dist/components/auth/authenticate/controllers/factory.d.ts +33 -2
  63. package/dist/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
  64. package/dist/components/auth/authenticate/controllers/index.d.ts +1 -0
  65. package/dist/components/auth/authenticate/controllers/index.d.ts.map +1 -1
  66. package/dist/components/auth/authenticate/controllers/index.js +1 -0
  67. package/dist/components/auth/authenticate/controllers/index.js.map +1 -1
  68. package/dist/components/auth/authenticate/controllers/service-certs/controller.d.ts +10 -0
  69. package/dist/components/auth/authenticate/controllers/service-certs/controller.d.ts.map +1 -0
  70. package/dist/components/auth/authenticate/controllers/service-certs/controller.js +50 -0
  71. package/dist/components/auth/authenticate/controllers/service-certs/controller.js.map +1 -0
  72. package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts +73 -0
  73. package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts.map +1 -0
  74. package/dist/components/auth/authenticate/controllers/service-certs/definitions.js +34 -0
  75. package/dist/components/auth/authenticate/controllers/service-certs/definitions.js.map +1 -0
  76. package/dist/components/auth/authenticate/controllers/service-certs/index.d.ts +3 -0
  77. package/dist/components/auth/authenticate/controllers/service-certs/index.d.ts.map +1 -0
  78. package/dist/components/auth/authenticate/controllers/service-certs/index.js +19 -0
  79. package/dist/components/auth/authenticate/controllers/service-certs/index.js.map +1 -0
  80. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts +16 -0
  81. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts.map +1 -1
  82. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js +29 -0
  83. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js.map +1 -1
  84. package/dist/components/auth/authenticate/services/index.d.ts +1 -0
  85. package/dist/components/auth/authenticate/services/index.d.ts.map +1 -1
  86. package/dist/components/auth/authenticate/services/index.js +1 -0
  87. package/dist/components/auth/authenticate/services/index.js.map +1 -1
  88. package/dist/components/auth/authenticate/services/service/index.d.ts +3 -0
  89. package/dist/components/auth/authenticate/services/service/index.d.ts.map +1 -0
  90. package/dist/components/auth/authenticate/services/service/index.js +19 -0
  91. package/dist/components/auth/authenticate/services/service/index.js.map +1 -0
  92. package/dist/components/auth/authenticate/services/service/signer.service.d.ts +46 -0
  93. package/dist/components/auth/authenticate/services/service/signer.service.d.ts.map +1 -0
  94. package/dist/components/auth/authenticate/services/service/signer.service.js +135 -0
  95. package/dist/components/auth/authenticate/services/service/signer.service.js.map +1 -0
  96. package/dist/components/auth/authenticate/services/service/verifier.service.d.ts +40 -0
  97. package/dist/components/auth/authenticate/services/service/verifier.service.d.ts.map +1 -0
  98. package/dist/components/auth/authenticate/services/service/verifier.service.js +165 -0
  99. package/dist/components/auth/authenticate/services/service/verifier.service.js.map +1 -0
  100. package/dist/components/auth/authenticate/strategies/index.d.ts +2 -1
  101. package/dist/components/auth/authenticate/strategies/index.d.ts.map +1 -1
  102. package/dist/components/auth/authenticate/strategies/index.js +2 -1
  103. package/dist/components/auth/authenticate/strategies/index.js.map +1 -1
  104. package/dist/components/auth/authenticate/strategies/jwks/index.d.ts +3 -0
  105. package/dist/components/auth/authenticate/strategies/jwks/index.d.ts.map +1 -0
  106. package/dist/components/auth/authenticate/strategies/jwks/index.js +19 -0
  107. package/dist/components/auth/authenticate/strategies/jwks/index.js.map +1 -0
  108. package/dist/components/auth/authenticate/strategies/jwks/issuer.d.ts +13 -0
  109. package/dist/components/auth/authenticate/strategies/jwks/issuer.d.ts.map +1 -0
  110. package/dist/components/auth/authenticate/strategies/{jwks.strategy.js → jwks/issuer.js} +4 -27
  111. package/dist/components/auth/authenticate/strategies/jwks/issuer.js.map +1 -0
  112. package/dist/components/auth/authenticate/strategies/{jwks.strategy.d.ts → jwks/verifier.d.ts} +2 -10
  113. package/dist/components/auth/authenticate/strategies/jwks/verifier.d.ts.map +1 -0
  114. package/dist/components/auth/authenticate/strategies/jwks/verifier.js +45 -0
  115. package/dist/components/auth/authenticate/strategies/jwks/verifier.js.map +1 -0
  116. package/dist/components/auth/authenticate/strategies/service.strategy.d.ts +19 -0
  117. package/dist/components/auth/authenticate/strategies/service.strategy.d.ts.map +1 -0
  118. package/dist/components/auth/authenticate/strategies/service.strategy.js +73 -0
  119. package/dist/components/auth/authenticate/strategies/service.strategy.js.map +1 -0
  120. package/dist/components/auth/authorize/adapters/base-filtered.d.ts +1 -1
  121. package/dist/components/auth/authorize/adapters/base-filtered.d.ts.map +1 -1
  122. package/dist/components/auth/authorize/adapters/base-filtered.js +5 -8
  123. package/dist/components/auth/authorize/adapters/base-filtered.js.map +1 -1
  124. package/dist/components/auth/authorize/adapters/common/index.d.ts +2 -0
  125. package/dist/components/auth/authorize/adapters/common/index.d.ts.map +1 -0
  126. package/dist/components/auth/authorize/adapters/common/index.js +18 -0
  127. package/dist/components/auth/authorize/adapters/common/index.js.map +1 -0
  128. package/dist/components/auth/authorize/adapters/{types.d.ts → common/types.d.ts} +1 -1
  129. package/dist/components/auth/authorize/adapters/common/types.d.ts.map +1 -0
  130. package/dist/components/auth/authorize/adapters/common/types.js.map +1 -0
  131. package/dist/components/auth/authorize/adapters/connector.d.ts +10 -0
  132. package/dist/components/auth/authorize/adapters/connector.d.ts.map +1 -0
  133. package/dist/components/auth/authorize/adapters/connector.js +20 -0
  134. package/dist/components/auth/authorize/adapters/connector.js.map +1 -0
  135. package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts +52 -0
  136. package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts.map +1 -0
  137. package/dist/components/auth/authorize/adapters/custom-grant-expander.js +111 -0
  138. package/dist/components/auth/authorize/adapters/custom-grant-expander.js.map +1 -0
  139. package/dist/components/auth/authorize/adapters/index.d.ts +4 -2
  140. package/dist/components/auth/authorize/adapters/index.d.ts.map +1 -1
  141. package/dist/components/auth/authorize/adapters/index.js +4 -2
  142. package/dist/components/auth/authorize/adapters/index.js.map +1 -1
  143. package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.d.ts +93 -0
  144. package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.d.ts.map +1 -0
  145. package/dist/components/auth/authorize/adapters/{scoped-casbin.adapter.js → scoped-casbin/adapter.js} +95 -97
  146. package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.js.map +1 -0
  147. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.d.ts +2 -0
  148. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.d.ts.map +1 -0
  149. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js +5 -0
  150. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js.map +1 -0
  151. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.d.ts +3 -0
  152. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.d.ts.map +1 -0
  153. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js +19 -0
  154. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js.map +1 -0
  155. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.d.ts +50 -0
  156. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.d.ts.map +1 -0
  157. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js +3 -0
  158. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js.map +1 -0
  159. package/dist/components/auth/authorize/adapters/scoped-casbin/index.d.ts +4 -0
  160. package/dist/components/auth/authorize/adapters/scoped-casbin/index.d.ts.map +1 -0
  161. package/dist/components/auth/authorize/adapters/scoped-casbin/index.js +19 -0
  162. package/dist/components/auth/authorize/adapters/scoped-casbin/index.js.map +1 -0
  163. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.d.ts +17 -0
  164. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.d.ts.map +1 -0
  165. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js +11 -0
  166. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js.map +1 -0
  167. package/dist/components/auth/authorize/component.d.ts.map +1 -1
  168. package/dist/components/auth/authorize/component.js +3 -0
  169. package/dist/components/auth/authorize/component.js.map +1 -1
  170. package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts +7 -36
  171. package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -1
  172. package/dist/components/auth/authorize/enforcers/casbin.enforcer.js +48 -117
  173. package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
  174. package/dist/components/auth/authorize/enforcers/index.d.ts +2 -1
  175. package/dist/components/auth/authorize/enforcers/index.d.ts.map +1 -1
  176. package/dist/components/auth/authorize/enforcers/index.js +2 -1
  177. package/dist/components/auth/authorize/enforcers/index.js.map +1 -1
  178. package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts +26 -0
  179. package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts.map +1 -0
  180. package/dist/components/auth/authorize/enforcers/policy-line-codec.js +57 -0
  181. package/dist/components/auth/authorize/enforcers/policy-line-codec.js.map +1 -0
  182. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.d.ts +46 -0
  183. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.d.ts.map +1 -0
  184. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js +98 -0
  185. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js.map +1 -0
  186. package/dist/components/auth/authorize/index.d.ts +1 -0
  187. package/dist/components/auth/authorize/index.d.ts.map +1 -1
  188. package/dist/components/auth/authorize/index.js +1 -0
  189. package/dist/components/auth/authorize/index.js.map +1 -1
  190. package/dist/components/auth/authorize/role-managers/base.d.ts +34 -0
  191. package/dist/components/auth/authorize/role-managers/base.d.ts.map +1 -0
  192. package/dist/components/auth/authorize/role-managers/base.js +76 -0
  193. package/dist/components/auth/authorize/role-managers/base.js.map +1 -0
  194. package/dist/components/auth/authorize/role-managers/domain-hierarchy.d.ts +28 -0
  195. package/dist/components/auth/authorize/role-managers/domain-hierarchy.d.ts.map +1 -0
  196. package/dist/components/auth/authorize/role-managers/domain-hierarchy.js +77 -0
  197. package/dist/components/auth/authorize/role-managers/domain-hierarchy.js.map +1 -0
  198. package/dist/components/auth/authorize/role-managers/index.d.ts +5 -0
  199. package/dist/components/auth/authorize/role-managers/index.d.ts.map +1 -0
  200. package/dist/components/auth/authorize/role-managers/index.js +21 -0
  201. package/dist/components/auth/authorize/role-managers/index.js.map +1 -0
  202. package/dist/components/auth/authorize/role-managers/membership.d.ts +21 -0
  203. package/dist/components/auth/authorize/role-managers/membership.d.ts.map +1 -0
  204. package/dist/components/auth/authorize/role-managers/membership.js +69 -0
  205. package/dist/components/auth/authorize/role-managers/membership.js.map +1 -0
  206. package/dist/components/auth/authorize/{enforcers/resource-role-manager.d.ts → role-managers/resource.d.ts} +3 -9
  207. package/dist/components/auth/authorize/role-managers/resource.d.ts.map +1 -0
  208. package/dist/components/auth/authorize/{enforcers/resource-role-manager.js → role-managers/resource.js} +9 -21
  209. package/dist/components/auth/authorize/role-managers/resource.js.map +1 -0
  210. package/dist/components/auth/models/entities/policy-definition.model.d.ts +49 -14
  211. package/dist/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
  212. package/dist/components/auth/models/entities/policy-definition.model.js +45 -11
  213. package/dist/components/auth/models/entities/policy-definition.model.js.map +1 -1
  214. package/dist/components/auth/models/entities/user.model.d.ts +2 -2
  215. package/dist/components/mail/common/constants.d.ts +7 -0
  216. package/dist/components/mail/common/constants.d.ts.map +1 -1
  217. package/dist/components/mail/common/constants.js +7 -1
  218. package/dist/components/mail/common/constants.js.map +1 -1
  219. package/dist/components/mail/common/types/index.d.ts +6 -0
  220. package/dist/components/mail/common/types/index.d.ts.map +1 -0
  221. package/dist/components/mail/common/types/index.js +22 -0
  222. package/dist/components/mail/common/types/index.js.map +1 -0
  223. package/dist/components/mail/common/types/message.d.ts +48 -0
  224. package/dist/components/mail/common/types/message.d.ts.map +1 -0
  225. package/dist/components/mail/common/types/message.js +3 -0
  226. package/dist/components/mail/common/types/message.js.map +1 -0
  227. package/dist/components/mail/common/types/options.d.ts +42 -0
  228. package/dist/components/mail/common/types/options.d.ts.map +1 -0
  229. package/dist/components/mail/common/types/options.js +3 -0
  230. package/dist/components/mail/common/types/options.js.map +1 -0
  231. package/dist/components/mail/common/types/queue.d.ts +53 -0
  232. package/dist/components/mail/common/types/queue.d.ts.map +1 -0
  233. package/dist/components/mail/common/types/queue.js +3 -0
  234. package/dist/components/mail/common/types/queue.js.map +1 -0
  235. package/dist/components/mail/common/types/template.d.ts +33 -0
  236. package/dist/components/mail/common/types/template.d.ts.map +1 -0
  237. package/dist/components/mail/common/types/template.js +3 -0
  238. package/dist/components/mail/common/types/template.js.map +1 -0
  239. package/dist/components/mail/common/types/verification.d.ts +26 -0
  240. package/dist/components/mail/common/types/verification.d.ts.map +1 -0
  241. package/dist/components/mail/common/types/verification.js +3 -0
  242. package/dist/components/mail/common/types/verification.js.map +1 -0
  243. package/dist/components/mail/services/generators/index.d.ts +4 -0
  244. package/dist/components/mail/services/generators/index.d.ts.map +1 -0
  245. package/dist/components/mail/services/generators/index.js +20 -0
  246. package/dist/components/mail/services/generators/index.js.map +1 -0
  247. package/dist/components/mail/services/generators/numeric-code.d.ts +7 -0
  248. package/dist/components/mail/services/generators/numeric-code.d.ts.map +1 -0
  249. package/dist/components/mail/services/generators/numeric-code.js +20 -0
  250. package/dist/components/mail/services/generators/numeric-code.js.map +1 -0
  251. package/dist/components/mail/services/generators/random-token.d.ts +7 -0
  252. package/dist/components/mail/services/generators/random-token.d.ts.map +1 -0
  253. package/dist/components/mail/services/generators/random-token.js +18 -0
  254. package/dist/components/mail/services/generators/random-token.js.map +1 -0
  255. package/dist/components/mail/services/generators/verification-data.d.ts +9 -0
  256. package/dist/components/mail/services/generators/verification-data.d.ts.map +1 -0
  257. package/dist/components/mail/services/{generator.service.js → generators/verification-data.js} +10 -25
  258. package/dist/components/mail/services/generators/verification-data.js.map +1 -0
  259. package/dist/components/mail/services/index.d.ts +1 -1
  260. package/dist/components/mail/services/index.d.ts.map +1 -1
  261. package/dist/components/mail/services/index.js +1 -1
  262. package/dist/components/mail/services/index.js.map +1 -1
  263. package/dist/components/static-asset/controller/factory.d.ts +34 -2
  264. package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
  265. package/dist/components/static-asset/models/base.model.d.ts +4 -4
  266. package/dist/index.d.ts +1 -1
  267. package/dist/index.d.ts.map +1 -1
  268. package/package.json +22 -23
  269. package/dist/base/applications/types.d.ts.map +0 -1
  270. package/dist/base/applications/types.js.map +0 -1
  271. package/dist/components/api-reference/ui-factory.d.ts +0 -21
  272. package/dist/components/api-reference/ui-factory.d.ts.map +0 -1
  273. package/dist/components/api-reference/ui-factory.js.map +0 -1
  274. package/dist/components/auth/authenticate/strategies/jwks.strategy.d.ts.map +0 -1
  275. package/dist/components/auth/authenticate/strategies/jwks.strategy.js.map +0 -1
  276. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts +0 -121
  277. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts.map +0 -1
  278. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js.map +0 -1
  279. package/dist/components/auth/authorize/adapters/types.d.ts.map +0 -1
  280. package/dist/components/auth/authorize/adapters/types.js.map +0 -1
  281. package/dist/components/auth/authorize/enforcers/resource-role-manager.d.ts.map +0 -1
  282. package/dist/components/auth/authorize/enforcers/resource-role-manager.js.map +0 -1
  283. package/dist/components/mail/common/types.d.ts +0 -201
  284. package/dist/components/mail/common/types.d.ts.map +0 -1
  285. package/dist/components/mail/common/types.js +0 -10
  286. package/dist/components/mail/common/types.js.map +0 -1
  287. package/dist/components/mail/services/generator.service.d.ts +0 -14
  288. package/dist/components/mail/services/generator.service.d.ts.map +0 -1
  289. package/dist/components/mail/services/generator.service.js.map +0 -1
  290. /package/dist/base/applications/{types.js → common/types.js} +0 -0
  291. /package/dist/components/auth/authorize/adapters/{types.js → common/types.js} +0 -0
@@ -38,6 +38,9 @@ let AuthorizeComponent = AuthorizeComponent_1 = class AuthorizeComponent extends
38
38
  });
39
39
  }
40
40
  this.bindAlwaysAllowRoles({ options });
41
+ // The registry otherwise finds options only through a registered enforcer's container, so
42
+ // `defaultDecision` would be unreadable in the one case it decides: no enforcer registered.
43
+ ignis_kernel_4.AuthorizationEnforcerRegistry.getInstance().setOptions({ options });
41
44
  this.logger.for(this.binding.name).info('Authorization configured');
42
45
  }
43
46
  bindAlwaysAllowRoles(opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/auth/authorize/component.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,wDAAsD;AACtD,wDAA+C;AAC/C,wDAAqD;AACrD,sDAAuD;AAEvD,wDAAgF;AAEhF,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,4BAAa;IACnD,YAC8D,WAA4B;QAExF,KAAK,CAAC;YACJ,KAAK,EAAE,oBAAkB,CAAC,IAAI;YAC9B,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE;SACtD,CAAC,CAAC;QALyD,gBAAW,GAAX,WAAW,CAAiB;IAM1F,CAAC;IAEQ,OAAO;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAoB;YACtD,GAAG,EAAE,mCAAoB,CAAC,OAAO;YACjC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EACL,iIAAiI;aACpI,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtE,CAAC;IAEO,oBAAoB,CAAC,IAAoC;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW;aACb,IAAI,CAAW,EAAE,GAAG,EAAE,mCAAoB,CAAC,kBAAkB,EAAE,CAAC;aAChE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AArCY,gDAAkB;6BAAlB,kBAAkB;IAE1B,WAAA,IAAA,qBAAM,EAAC,EAAE,GAAG,EAAE,2BAAY,CAAC,oBAAoB,EAAE,CAAC,CAAA;;GAF1C,kBAAkB,CAqC9B"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/auth/authorize/component.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,wDAAsD;AACtD,wDAA+C;AAC/C,wDAAqD;AACrD,sDAAuD;AAEvD,wDAI+B;AAE/B,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,4BAAa;IACnD,YAC8D,WAA4B;QAExF,KAAK,CAAC;YACJ,KAAK,EAAE,oBAAkB,CAAC,IAAI;YAC9B,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE;SACtD,CAAC,CAAC;QALyD,gBAAW,GAAX,WAAW,CAAiB;IAM1F,CAAC;IAEQ,OAAO;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAoB;YACtD,GAAG,EAAE,mCAAoB,CAAC,OAAO;YACjC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EACL,iIAAiI;aACpI,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvC,0FAA0F;QAC1F,4FAA4F;QAC5F,4CAA6B,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtE,CAAC;IAEO,oBAAoB,CAAC,IAAoC;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW;aACb,IAAI,CAAW,EAAE,GAAG,EAAE,mCAAoB,CAAC,kBAAkB,EAAE,CAAC;aAChE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AAzCY,gDAAkB;6BAAlB,kBAAkB;IAE1B,WAAA,IAAA,qBAAM,EAAC,EAAE,GAAG,EAAE,2BAAY,CAAC,oBAAoB,EAAE,CAAC,CAAA;;GAF1C,kBAAkB,CAyC9B"}
@@ -1,9 +1,9 @@
1
1
  import { TContext } from '@venizia/ignis-kernel';
2
2
  import { BaseHelper } from '@venizia/ignis-helpers/core';
3
- import { TNullable } from '@venizia/ignis-helpers/common';
4
3
  import type { Enforcer as CasbinEnforcerType } from 'casbin';
5
4
  import { Env } from 'hono';
6
- import { IAuthorizationEnforcer, IAuthorizationUser, ICasbinEnforcerCachedRedis, ICasbinEnforcerOptions, ICasbinRules, type IAuthorizationRequest, type TAuthorizationDecision, type TCasbinDomainMatchingFunction } from '@venizia/ignis-kernel';
5
+ import { IAuthorizationEnforcer, IAuthorizationUser, ICasbinEnforcerOptions, ICasbinRules, type IAuthorizationRequest, type TAuthorizationDecision, type TCasbinDomainMatchingFunction } from '@venizia/ignis-kernel';
6
+ import { UserPolicyLineCache } from './user-policy-line-cache';
7
7
  /** Payload shape for the scoped/custom path, matching defaultScopedPayloadFn(). */
8
8
  type TNormalizePayloadFn<E extends Env, TAction, TResource> = (opts: {
9
9
  user: IAuthorizationUser;
@@ -22,7 +22,7 @@ export declare class CasbinAuthorizationEnforcer<E extends Env = Env, TAction ex
22
22
  private readonly MIN_EXPIRES_IN;
23
23
  private pool;
24
24
  private helper;
25
- private readonly pendingLineFetches;
25
+ private userPolicyLineCache;
26
26
  private resolvedPayloadFn;
27
27
  constructor(options: ICasbinEnforcerOptions<E, TAction, TResource>);
28
28
  configure(): Promise<void>;
@@ -56,17 +56,8 @@ export declare class CasbinAuthorizationEnforcer<E extends Env = Env, TAction ex
56
56
  cacheKey: string;
57
57
  lineCount: number;
58
58
  }>;
59
- /** Compute the user's cache key and reject an empty result - consistent with the read path. */
60
- protected resolveCacheKey(opts: {
61
- user: IAuthorizationUser;
62
- cached: ICasbinEnforcerCachedRedis & {
63
- use: true;
64
- };
65
- }): Promise<string>;
66
- /** Narrow `options.cached` to the redis variant; cache management is redis-only. */
67
- protected requireRedisCache(): ICasbinEnforcerCachedRedis & {
68
- use: true;
69
- };
59
+ /** Narrow `options.cached` to the redis variant and lazily create the per-user line cache - memoized so its single-flight de-dup map is shared across calls rather than reset on every access. */
60
+ protected requireRedisCache(): UserPolicyLineCache;
70
61
  protected registerMatchers(opts: {
71
62
  enforcer: CasbinEnforcerType;
72
63
  casbin: typeof import('casbin');
@@ -85,31 +76,11 @@ export declare class CasbinAuthorizationEnforcer<E extends Env = Env, TAction ex
85
76
  protected validateExpiresIn(opts: {
86
77
  expiresIn: number;
87
78
  }): void;
88
- /** Fetch the user's lines, collapsing concurrent misses per key onto one extraction. Best-effort: two misses may race past the cache read and both extract (benign - per-user lines are identical). */
89
- protected fetchLinesWithRedisCache(opts: {
90
- user: IAuthorizationUser;
91
- cached: ICasbinEnforcerCachedRedis & {
92
- use: true;
93
- };
94
- }): Promise<string[]>;
95
- /** Single source of truth for the Redis cache encoding. Used by miss-path and rebuild. */
96
- protected writeCachedPolicyLines(opts: {
97
- cacheKey: string;
98
- lines: string[];
99
- options: ICasbinEnforcerCachedRedis['options'];
100
- }): Promise<void>;
101
- /** Decode cached policy lines; on any corruption, log and return null so the caller refetches. */
102
- protected parseCachedPolicyLines(opts: {
103
- raw: string;
104
- cacheKey: string;
105
- }): TNullable<string[]>;
106
- /** Extract a user's lines from an ISOLATED throwaway enforcer (own model + adapter), never a pooled serving one, so concurrent requests cannot change what we cache. */
79
+ /** Resolves this enforcer's model, then delegates the isolated-enforcer extraction (own model + adapter, never a pooled serving one, so concurrent requests cannot change what we cache) to PolicyLineCodec. */
107
80
  protected extractUserLines(opts: {
108
81
  user: IAuthorizationUser;
109
82
  }): Promise<string[]>;
110
- /** Serialize ALL p-types and g-types (not just `p`/`g`) back into casbin lines so the cached payload is complete for the scoped model; it reads stored rules, so the loader needs no matching funcs registered. */
111
- protected extractLinesFrom(enforcer: CasbinEnforcerType): Promise<string[]>;
112
- /** Atomically reset a borrowed enforcer's model to exactly `lines` + rebuild role links. */
83
+ /** Requires configure() to have resolved the casbin Helper; the clearPolicy + loadPolicyLine + buildRoleLinks ordering lives in PolicyLineCodec. */
113
84
  protected loadPolicyLinesIntoModel(opts: {
114
85
  enforcer: CasbinEnforcerType;
115
86
  lines: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"casbin.enforcer.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/casbin.enforcer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"casbin.enforcer.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/casbin.enforcer.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,11 @@ const ignis_kernel_1 = require("@venizia/ignis-kernel");
18
18
  const core_1 = require("@venizia/ignis-helpers/core");
19
19
  const ignis_kernel_2 = require("@venizia/ignis-kernel");
20
20
  const ignis_kernel_3 = require("@venizia/ignis-kernel");
21
- const resource_role_manager_1 = require("./resource-role-manager");
21
+ const domain_hierarchy_1 = require("../role-managers/domain-hierarchy");
22
+ const membership_1 = require("../role-managers/membership");
23
+ const resource_1 = require("../role-managers/resource");
24
+ const policy_line_codec_1 = require("./policy-line-codec");
25
+ const user_policy_line_cache_1 = require("./user-policy-line-cache");
22
26
  // Wraps casbin (optional peer dep). Each request borrows its own pooled enforcer; any error during use destroys it (fail-closed). Pooled enforcers carry no adapter - only extractUserLines uses one.
23
27
  let CasbinAuthorizationEnforcer = CasbinAuthorizationEnforcer_1 = class CasbinAuthorizationEnforcer extends core_1.BaseHelper {
24
28
  constructor(options) {
@@ -28,8 +32,8 @@ let CasbinAuthorizationEnforcer = CasbinAuthorizationEnforcer_1 = class CasbinAu
28
32
  this.MIN_EXPIRES_IN = 10_000;
29
33
  this.pool = null;
30
34
  this.helper = null;
31
- // cacheKey -> in-progress line-fetch; concurrent misses for the same user share one extraction instead of all hitting the DB (see fetchLinesWithRedisCache).
32
- this.pendingLineFetches = new Map();
35
+ // Lazily created on first cache use (see requireRedisCache) - one instance for the enforcer's lifetime so its single-flight de-dup map actually dedupes.
36
+ this.userPolicyLineCache = null;
33
37
  // Memoized in configure() (options are fixed after) to avoid rebuilding this closure on every evaluate() (hot path).
34
38
  this.resolvedPayloadFn = null;
35
39
  }
@@ -97,7 +101,7 @@ let CasbinAuthorizationEnforcer = CasbinAuthorizationEnforcer_1 = class CasbinAu
97
101
  const { user } = opts;
98
102
  const cached = this.options.cached;
99
103
  const lines = cached.use
100
- ? await this.fetchLinesWithRedisCache({ user, cached })
104
+ ? await this.requireRedisCache().fetch({ user })
101
105
  : await this.extractUserLines({ user });
102
106
  return { user, lines };
103
107
  }
@@ -156,38 +160,23 @@ let CasbinAuthorizationEnforcer = CasbinAuthorizationEnforcer_1 = class CasbinAu
156
160
  }
157
161
  // Cache management - optional IAuthorizationEnforcer members (on-demand)
158
162
  async invalidateUserCache(opts) {
159
- const cached = this.requireRedisCache();
160
- const cacheKey = await this.resolveCacheKey({ user: opts.user, cached });
161
- const invalidatedKeys = await cached.options.connection.del({ keys: [cacheKey] });
163
+ const { cacheKey, invalidatedKeys } = await this.requireRedisCache().invalidate({
164
+ user: opts.user,
165
+ });
162
166
  this.logger
163
167
  .for(this.invalidateUserCache.name)
164
168
  .info('Invalidated authz cache | user: %s | key: %s | deleted: %s', opts.user.userId, cacheKey, invalidatedKeys);
165
169
  return { invalidatedKeys };
166
170
  }
167
171
  async rebuildUserCache(opts) {
168
- const cached = this.requireRedisCache();
169
172
  // Extraction runs on an isolated throwaway enforcer (not a serving model), so a concurrent request cannot make us cache another user's policies under this key.
170
- const cacheKey = await this.resolveCacheKey({ user: opts.user, cached });
171
- await cached.options.connection.del({ keys: [cacheKey] });
172
- const lines = await this.extractUserLines({ user: opts.user });
173
- await this.writeCachedPolicyLines({ cacheKey, lines, options: cached.options });
173
+ const { cacheKey, lines } = await this.requireRedisCache().rebuild({ user: opts.user });
174
174
  this.logger
175
175
  .for(this.rebuildUserCache.name)
176
176
  .info('Rebuilt authz cache | user: %s | key: %s | lines: %s', opts.user.userId, cacheKey, lines.length);
177
177
  return { cacheKey, lineCount: lines.length };
178
178
  }
179
- /** Compute the user's cache key and reject an empty result - consistent with the read path. */
180
- async resolveCacheKey(opts) {
181
- const cacheKey = await opts.cached.options.keyFn({ user: opts.user });
182
- if (!cacheKey) {
183
- throw (0, core_1.getError)({
184
- error: ignis_kernel_3.AuthorizationErrors.CACHE_KEY_INVALID,
185
- message: '[CasbinAuthorizationEnforcer] keyFn returned an empty cache key.',
186
- });
187
- }
188
- return cacheKey;
189
- }
190
- /** Narrow `options.cached` to the redis variant; cache management is redis-only. */
179
+ /** Narrow `options.cached` to the redis variant and lazily create the per-user line cache - memoized so its single-flight de-dup map is shared across calls rather than reset on every access. */
191
180
  requireRedisCache() {
192
181
  const { cached } = this.options;
193
182
  if (!cached.use) {
@@ -195,7 +184,10 @@ let CasbinAuthorizationEnforcer = CasbinAuthorizationEnforcer_1 = class CasbinAu
195
184
  message: '[CasbinAuthorizationEnforcer] Cache management requires the redis cache driver, but caching is disabled.',
196
185
  });
197
186
  }
198
- return cached;
187
+ return (this.userPolicyLineCache ??= new user_policy_line_cache_1.UserPolicyLineCache({
188
+ cached,
189
+ loadLines: opts => this.extractUserLines(opts),
190
+ }));
199
191
  }
200
192
  // Matchers & model resolvers
201
193
  async registerMatchers(opts) {
@@ -214,7 +206,25 @@ let CasbinAuthorizationEnforcer = CasbinAuthorizationEnforcer_1 = class CasbinAu
214
206
  await enforcer.addNamedDomainMatchingFunc(ignis_kernel_3.CasbinRuleVariants.G, casbin.Util.keyMatchFunc);
215
207
  await enforcer.addFunction('objectMatch', ignis_kernel_2.AuthorizationPermissionBuilder.objectMatch);
216
208
  // A dedicated role manager for the resource axis, NOT addNamedMatchingFunc: a matching func sets casbin's `hasPattern`, which makes every hasLink rebuild the whole g4 graph.
217
- enforcer.setNamedRoleManager(ignis_kernel_3.AuthorizationPolicyVariants.RESOURCE_INHERITS.rule, new resource_role_manager_1.ResourceRoleManager());
209
+ enforcer.setNamedRoleManager(ignis_kernel_3.AuthorizationPolicyVariants.RESOURCE_INHERITS.rule, new resource_1.ResourceRoleManager());
210
+ // Shared across g2, g3, and the reversed `g` instance below: casbin never puts the
211
+ // `g`-axis hierarchy manager in rmMap, so it never receives addLink and would miss
212
+ // per-request g3 edges - g2 needs the same freshness for a just-created child domain.
213
+ // This is a per-REQUEST overlay: `clear()` empties it every buildRoleLinks cycle, and it is
214
+ // repopulated from whatever `g3` lines this principal's own policy line set carries.
215
+ const domainHierarchyOverlay = new Map();
216
+ // g2 (membership) and g3 (domain nesting, request-domain-first) sit on their own axes.
217
+ enforcer.setNamedRoleManager(ignis_kernel_3.CasbinRuleVariants.G2, new membership_1.MembershipRoleManager({ overlay: domainHierarchyOverlay }));
218
+ enforcer.setNamedRoleManager(ignis_kernel_3.CasbinRuleVariants.G3, new domain_hierarchy_1.DomainHierarchyRoleManager({ overlay: domainHierarchyOverlay }));
219
+ // addNamedDomainMatchingFunc(G, keyMatchFunc) above must stay: generateTempRoles ORs
220
+ // hasDomainPattern with hasDomainHierarchy, and role_inherits `*` rides the keyMatch path.
221
+ const gRoleManager = enforcer.getNamedRoleManager(ignis_kernel_3.CasbinRuleVariants.G);
222
+ if (!gRoleManager?.addDomainHierarchy) {
223
+ throw (0, core_1.getError)({
224
+ message: '[registerMatchers] The "g" role manager does not expose addDomainHierarchy() - the scoped model requires casbin\'s DefaultRoleManager on the g axis (present in casbin ^5.51.1, this package\'s pinned range). Upgrade casbin, or check that a custom role manager was not substituted for "g".',
225
+ });
226
+ }
227
+ await gRoleManager.addDomainHierarchy(new domain_hierarchy_1.DomainHierarchyRoleManager({ reversed: true, overlay: domainHierarchyOverlay }));
218
228
  }
219
229
  await enforcer.buildRoleLinks();
220
230
  }
@@ -284,108 +294,29 @@ let CasbinAuthorizationEnforcer = CasbinAuthorizationEnforcer_1 = class CasbinAu
284
294
  });
285
295
  }
286
296
  // Policy loading internals
287
- /** Fetch the user's lines, collapsing concurrent misses per key onto one extraction. Best-effort: two misses may race past the cache read and both extract (benign - per-user lines are identical). */
288
- async fetchLinesWithRedisCache(opts) {
289
- const { user, cached } = opts;
290
- const cacheKey = await this.resolveCacheKey({ user, cached });
291
- // Cache hit - Redis owns expiry (PX on write), so a present key is fresh; a corrupted/legacy entry must NOT 500 the request, so it is discarded and refetched.
292
- const raw = await cached.options.connection.get({ key: cacheKey });
293
- if (raw) {
294
- const lines = this.parseCachedPolicyLines({ raw, cacheKey });
295
- if (lines) {
296
- return lines;
297
- }
298
- }
299
- const existing = this.pendingLineFetches.get(cacheKey);
300
- if (existing) {
301
- return existing;
302
- }
303
- // Cache miss (or discarded corrupt entry) - extract from an ISOLATED enforcer so a concurrent load cannot contaminate the cache, persist it, then return the lines for THIS request.
304
- const task = async () => {
305
- const lines = await this.extractUserLines({ user });
306
- await this.writeCachedPolicyLines({ cacheKey, lines, options: cached.options });
307
- return lines;
308
- };
309
- const promise = task().finally(() => {
310
- this.pendingLineFetches.delete(cacheKey);
311
- });
312
- this.pendingLineFetches.set(cacheKey, promise);
313
- return promise;
314
- }
315
- /** Single source of truth for the Redis cache encoding. Used by miss-path and rebuild. */
316
- async writeCachedPolicyLines(opts) {
317
- await opts.options.connection.set({
318
- key: opts.cacheKey,
319
- value: opts.lines,
320
- options: { expiresIn: opts.options.expiresIn },
321
- });
322
- }
323
- /** Decode cached policy lines; on any corruption, log and return null so the caller refetches. */
324
- parseCachedPolicyLines(opts) {
325
- try {
326
- const parsed = JSON.parse(opts.raw);
327
- if (!Array.isArray(parsed) || parsed.some(line => typeof line !== 'string')) {
328
- throw (0, core_1.getError)({
329
- message: '[CasbinAuthorizationEnforcer] Cached payload is not an array of policy lines.',
330
- });
331
- }
332
- return parsed;
333
- }
334
- catch (error) {
335
- this.logger
336
- .for(this.parseCachedPolicyLines.name)
337
- .warn('Discarding corrupted authz cache entry | key: %s | error: %s', opts.cacheKey, error);
338
- return null;
339
- }
340
- }
341
- /** Extract a user's lines from an ISOLATED throwaway enforcer (own model + adapter), never a pooled serving one, so concurrent requests cannot change what we cache. */
297
+ /** Resolves this enforcer's model, then delegates the isolated-enforcer extraction (own model + adapter, never a pooled serving one, so concurrent requests cannot change what we cache) to PolicyLineCodec. */
342
298
  async extractUserLines(opts) {
343
299
  const casbin = await import('casbin');
344
300
  const model = this.resolveModel({ casbin, model: this.options.model });
345
- const loader = await casbin.newEnforcer(model, this.options.adapter);
346
- if (!loader.loadFilteredPolicy) {
347
- throw (0, core_1.getError)({
348
- message: '[extractUserLines] Adapter does not support loadFilteredPolicy.',
349
- });
350
- }
351
- await loader.loadFilteredPolicy({
352
- principal: { type: opts.user.principalType, id: opts.user.userId },
301
+ return policy_line_codec_1.PolicyLineCodec.extractUserLines({
302
+ casbin,
303
+ model,
304
+ adapter: this.options.adapter,
305
+ user: opts.user,
353
306
  });
354
- return this.extractLinesFrom(loader);
355
- }
356
- /** Serialize ALL p-types and g-types (not just `p`/`g`) back into casbin lines so the cached payload is complete for the scoped model; it reads stored rules, so the loader needs no matching funcs registered. */
357
- async extractLinesFrom(enforcer) {
358
- const model = enforcer.getModel();
359
- const lines = [];
360
- const policyTypes = model.model.get(ignis_kernel_3.CasbinRuleVariants.P);
361
- for (const ptype of policyTypes?.keys() ?? []) {
362
- const rules = await enforcer.getNamedPolicy(ptype);
363
- for (const rule of rules) {
364
- lines.push([ptype, ...rule].join(', '));
365
- }
366
- }
367
- const groupingTypes = model.model.get(ignis_kernel_3.CasbinRuleVariants.G);
368
- for (const gtype of groupingTypes?.keys() ?? []) {
369
- const rules = await enforcer.getNamedGroupingPolicy(gtype);
370
- for (const rule of rules) {
371
- lines.push([gtype, ...rule].join(', '));
372
- }
373
- }
374
- return lines;
375
307
  }
376
- /** Atomically reset a borrowed enforcer's model to exactly `lines` + rebuild role links. */
308
+ /** Requires configure() to have resolved the casbin Helper; the clearPolicy + loadPolicyLine + buildRoleLinks ordering lives in PolicyLineCodec. */
377
309
  async loadPolicyLinesIntoModel(opts) {
378
310
  if (!this.helper) {
379
311
  throw (0, core_1.getError)({
380
312
  message: '[loadPolicyLinesIntoModel] Not configured. Call configure() first.',
381
313
  });
382
314
  }
383
- const model = opts.enforcer.getModel();
384
- model.clearPolicy();
385
- for (const line of opts.lines) {
386
- this.helper.loadPolicyLine(line, model);
387
- }
388
- await opts.enforcer.buildRoleLinks();
315
+ await policy_line_codec_1.PolicyLineCodec.loadLinesIntoModel({
316
+ enforcer: opts.enforcer,
317
+ lines: opts.lines,
318
+ helper: this.helper,
319
+ });
389
320
  }
390
321
  };
391
322
  exports.CasbinAuthorizationEnforcer = CasbinAuthorizationEnforcer;
@@ -1 +1 @@
1
- {"version":3,"file":"casbin.enforcer.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/casbin.enforcer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"casbin.enforcer.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/casbin.enforcer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from '@venizia/ignis-kernel';
2
2
  export * from './casbin.enforcer';
3
3
  export * from './models';
4
- export * from './resource-role-manager';
4
+ export * from './policy-line-codec';
5
+ export * from './user-policy-line-cache';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC;AAEtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC;AAEtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
@@ -18,5 +18,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("@venizia/ignis-kernel"), exports);
19
19
  __exportStar(require("./casbin.enforcer"), exports);
20
20
  __exportStar(require("./models"), exports);
21
- __exportStar(require("./resource-role-manager"), exports);
21
+ __exportStar(require("./policy-line-codec"), exports);
22
+ __exportStar(require("./user-policy-line-cache"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8FAA8F;AAC9F,wDAAsC;AAEtC,oDAAkC;AAClC,2CAAyB;AACzB,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8FAA8F;AAC9F,wDAAsC;AAEtC,oDAAkC;AAClC,2CAAyB;AACzB,sDAAoC;AACpC,2DAAyC"}
@@ -0,0 +1,26 @@
1
+ import { type IAuthorizationUser, type ICasbinEnforcerOptions } from '@venizia/ignis-kernel';
2
+ import type { Enforcer as CasbinEnforcerType, Helper as CasbinHelperType, Model as CasbinModelType } from 'casbin';
3
+ /**
4
+ * Serializes casbin policy state to/from plain string lines. Pure - no pool, no cache, no
5
+ * lifecycle; every method takes exactly what it needs from the caller instead of holding state.
6
+ */
7
+ export declare class PolicyLineCodec {
8
+ /** Extract a user's lines from an ISOLATED throwaway enforcer (own model + adapter), never a pooled serving one, so concurrent requests cannot change what we cache. */
9
+ static extractUserLines(opts: {
10
+ casbin: typeof import('casbin');
11
+ model: CasbinModelType;
12
+ adapter: ICasbinEnforcerOptions['adapter'];
13
+ user: IAuthorizationUser;
14
+ }): Promise<string[]>;
15
+ /** Serialize ALL p-types and g-types (not just `p`/`g`) back into casbin lines so the cached payload is complete for the scoped model; it reads stored rules, so the loader needs no matching funcs registered. */
16
+ static extractLinesFrom(opts: {
17
+ enforcer: CasbinEnforcerType;
18
+ }): Promise<string[]>;
19
+ /** Atomically reset a borrowed enforcer's model to exactly `lines` + rebuild role links. */
20
+ static loadLinesIntoModel(opts: {
21
+ enforcer: CasbinEnforcerType;
22
+ lines: string[];
23
+ helper: typeof CasbinHelperType;
24
+ }): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=policy-line-codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-line-codec.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/policy-line-codec.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,QAAQ,IAAI,kBAAkB,EAC9B,MAAM,IAAI,gBAAgB,EAC1B,KAAK,IAAI,eAAe,EACzB,MAAM,QAAQ,CAAC;AAEhB;;;GAGG;AACH,qBAAa,eAAe;IAC1B,wKAAwK;WAC3J,gBAAgB,CAAC,IAAI,EAAE;QAClC,MAAM,EAAE,cAAc,QAAQ,CAAC,CAAC;QAChC,KAAK,EAAE,eAAe,CAAC;QACvB,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,EAAE,kBAAkB,CAAC;KAC1B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBrB,mNAAmN;WACtM,gBAAgB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,kBAAkB,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBxF,4FAA4F;WAC/E,kBAAkB,CAAC,IAAI,EAAE;QACpC,QAAQ,EAAE,kBAAkB,CAAC;QAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,OAAO,gBAAgB,CAAC;KACjC,GAAG,OAAO,CAAC,IAAI,CAAC;CAUlB"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolicyLineCodec = void 0;
4
+ const core_1 = require("@venizia/ignis-helpers/core");
5
+ const ignis_kernel_1 = require("@venizia/ignis-kernel");
6
+ /**
7
+ * Serializes casbin policy state to/from plain string lines. Pure - no pool, no cache, no
8
+ * lifecycle; every method takes exactly what it needs from the caller instead of holding state.
9
+ */
10
+ class PolicyLineCodec {
11
+ /** Extract a user's lines from an ISOLATED throwaway enforcer (own model + adapter), never a pooled serving one, so concurrent requests cannot change what we cache. */
12
+ static async extractUserLines(opts) {
13
+ const { casbin, model, adapter, user } = opts;
14
+ const loader = await casbin.newEnforcer(model, adapter);
15
+ if (!loader.loadFilteredPolicy) {
16
+ throw (0, core_1.getError)({
17
+ message: '[PolicyLineCodec] Adapter does not support loadFilteredPolicy.',
18
+ });
19
+ }
20
+ await loader.loadFilteredPolicy({
21
+ principal: { type: user.principalType, id: user.userId },
22
+ });
23
+ return PolicyLineCodec.extractLinesFrom({ enforcer: loader });
24
+ }
25
+ /** Serialize ALL p-types and g-types (not just `p`/`g`) back into casbin lines so the cached payload is complete for the scoped model; it reads stored rules, so the loader needs no matching funcs registered. */
26
+ static async extractLinesFrom(opts) {
27
+ const { enforcer } = opts;
28
+ const model = enforcer.getModel();
29
+ const lines = [];
30
+ const policyTypes = model.model.get(ignis_kernel_1.CasbinRuleVariants.P);
31
+ for (const ptype of policyTypes?.keys() ?? []) {
32
+ const rules = await enforcer.getNamedPolicy(ptype);
33
+ for (const rule of rules) {
34
+ lines.push([ptype, ...rule].join(', '));
35
+ }
36
+ }
37
+ const groupingTypes = model.model.get(ignis_kernel_1.CasbinRuleVariants.G);
38
+ for (const gtype of groupingTypes?.keys() ?? []) {
39
+ const rules = await enforcer.getNamedGroupingPolicy(gtype);
40
+ for (const rule of rules) {
41
+ lines.push([gtype, ...rule].join(', '));
42
+ }
43
+ }
44
+ return lines;
45
+ }
46
+ /** Atomically reset a borrowed enforcer's model to exactly `lines` + rebuild role links. */
47
+ static async loadLinesIntoModel(opts) {
48
+ const model = opts.enforcer.getModel();
49
+ model.clearPolicy();
50
+ for (const line of opts.lines) {
51
+ opts.helper.loadPolicyLine(line, model);
52
+ }
53
+ await opts.enforcer.buildRoleLinks();
54
+ }
55
+ }
56
+ exports.PolicyLineCodec = PolicyLineCodec;
57
+ //# sourceMappingURL=policy-line-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-line-codec.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/policy-line-codec.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AACvD,wDAI+B;AAO/B;;;GAGG;AACH,MAAa,eAAe;IAC1B,wKAAwK;IACxK,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAK7B;QACC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC/B,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,gEAAgE;aAC1E,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,CAAC,kBAAkB,CAAC;YAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;SACzD,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,mNAAmN;IACnN,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAsC;QAClE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAkB,CAAC,CAAC,CAAC,CAAC;QAC1D,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAkB,CAAC,CAAC,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4FAA4F;IAC5F,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAI/B;QACC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;IACvC,CAAC;CACF;AAhED,0CAgEC"}
@@ -0,0 +1,46 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers/core';
2
+ import { type IAuthorizationUser, type ICasbinEnforcerCachedRedis } from '@venizia/ignis-kernel';
3
+ /** Computes a user's policy lines on a cache miss - CasbinAuthorizationEnforcer wires this to its isolated-enforcer extraction (PolicyLineCodec.extractUserLines). */
4
+ export type TPolicyLineLoader = (opts: {
5
+ user: IAuthorizationUser;
6
+ }) => Promise<string[]>;
7
+ /**
8
+ * Per-user redis cache of casbin policy lines. Owns the cache key, the TTL, and concurrent-miss
9
+ * de-duplication so N simultaneous misses for the same user collapse onto one extraction.
10
+ */
11
+ export declare class UserPolicyLineCache extends BaseHelper {
12
+ private readonly cached;
13
+ private readonly loadLines;
14
+ private readonly pendingLineFetches;
15
+ constructor(opts: {
16
+ cached: ICasbinEnforcerCachedRedis & {
17
+ use: true;
18
+ };
19
+ loadLines: TPolicyLineLoader;
20
+ });
21
+ /** Fetch the user's lines, collapsing concurrent misses per key onto one extraction. Best-effort: two misses may race past the cache read and both extract (benign - per-user lines are identical). */
22
+ fetch(opts: {
23
+ user: IAuthorizationUser;
24
+ }): Promise<string[]>;
25
+ /** Drop the user's cached entry. */
26
+ invalidate(opts: {
27
+ user: IAuthorizationUser;
28
+ }): Promise<{
29
+ cacheKey: string;
30
+ invalidatedKeys: number;
31
+ }>;
32
+ /** Drop then recompute the user's cached entry via `loadLines` - an isolated extraction (never a pooled serving enforcer), so a concurrent request cannot make the cache hold another user's lines. */
33
+ rebuild(opts: {
34
+ user: IAuthorizationUser;
35
+ }): Promise<{
36
+ cacheKey: string;
37
+ lines: string[];
38
+ }>;
39
+ /** Compute the user's cache key and reject an empty result - consistent with the read path. */
40
+ private resolveCacheKey;
41
+ /** Single source of truth for the cache encoding. Used by the miss path and rebuild(). */
42
+ private writeLines;
43
+ /** Decode cached policy lines; on any corruption, log and return null so the caller refetches. */
44
+ private parseLines;
45
+ }
46
+ //# sourceMappingURL=user-policy-line-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-policy-line-cache.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/enforcers/user-policy-line-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAChC,MAAM,uBAAuB,CAAC;AAE/B,sKAAsK;AACtK,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAE1F;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IACpE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAG9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwC;gBAE/D,IAAI,EAAE;QAChB,MAAM,EAAE,0BAA0B,GAAG;YAAE,GAAG,EAAE,IAAI,CAAA;SAAE,CAAC;QACnD,SAAS,EAAE,iBAAiB,CAAC;KAC9B;IAMD,uMAAuM;IACjM,KAAK,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,kBAAkB,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiClE,oCAAoC;IAC9B,UAAU,CAAC,IAAI,EAAE;QACrB,IAAI,EAAE,kBAAkB,CAAC;KAC1B,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAO1D,uMAAuM;IACjM,OAAO,CAAC,IAAI,EAAE;QAClB,IAAI,EAAE,kBAAkB,CAAC;KAC1B,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAUlD,+FAA+F;YACjF,eAAe;IAY7B,0FAA0F;YAC5E,UAAU;IAQxB,kGAAkG;IAClG,OAAO,CAAC,UAAU;CAkBnB"}