@authup/server-core 1.0.0-beta.41 → 1.0.0-beta.42

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 (687) hide show
  1. package/dist/adapters/database/cache/module.mjs.map +1 -1
  2. package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
  3. package/dist/adapters/database/data-source/singleton.mjs.map +1 -1
  4. package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
  5. package/dist/adapters/database/domains/client/subscriber.mjs.map +1 -1
  6. package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
  7. package/dist/adapters/database/domains/client-permission/subscriber.mjs.map +1 -1
  8. package/dist/adapters/database/domains/client-role/entity.mjs.map +1 -1
  9. package/dist/adapters/database/domains/client-role/subscriber.mjs.map +1 -1
  10. package/dist/adapters/database/domains/client-scope/entity.mjs.map +1 -1
  11. package/dist/adapters/database/domains/client-scope/subscriber.mjs.map +1 -1
  12. package/dist/adapters/database/domains/identity-provider/entity.mjs.map +1 -1
  13. package/dist/adapters/database/domains/identity-provider/repository.mjs.map +1 -1
  14. package/dist/adapters/database/domains/identity-provider/subscriber.mjs.map +1 -1
  15. package/dist/adapters/database/domains/identity-provider-account/entity.mjs.map +1 -1
  16. package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs.map +1 -1
  17. package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs.map +1 -1
  18. package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs.map +1 -1
  19. package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs.map +1 -1
  20. package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs.map +1 -1
  21. package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs.map +1 -1
  22. package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs.map +1 -1
  23. package/dist/adapters/database/domains/key/entity.mjs.map +1 -1
  24. package/dist/adapters/database/domains/permission/entity.mjs.map +1 -1
  25. package/dist/adapters/database/domains/permission/subscriber.mjs.map +1 -1
  26. package/dist/adapters/database/domains/permission-policy/entity.mjs.map +1 -1
  27. package/dist/adapters/database/domains/policy/entity.mjs.map +1 -1
  28. package/dist/adapters/database/domains/policy/repository.mjs.map +1 -1
  29. package/dist/adapters/database/domains/policy/subscriber.mjs.map +1 -1
  30. package/dist/adapters/database/domains/policy-attribute/entity.mjs.map +1 -1
  31. package/dist/adapters/database/domains/policy-attribute/subscriber.mjs.map +1 -1
  32. package/dist/adapters/database/domains/realm/entity.mjs.map +1 -1
  33. package/dist/adapters/database/domains/realm/repository.mjs.map +1 -1
  34. package/dist/adapters/database/domains/realm/subscriber.mjs.map +1 -1
  35. package/dist/adapters/database/domains/robot/entity.mjs.map +1 -1
  36. package/dist/adapters/database/domains/robot/subscriber.mjs.map +1 -1
  37. package/dist/adapters/database/domains/robot-permission/entity.mjs.map +1 -1
  38. package/dist/adapters/database/domains/robot-permission/subscriber.mjs.map +1 -1
  39. package/dist/adapters/database/domains/robot-role/entity.mjs.map +1 -1
  40. package/dist/adapters/database/domains/robot-role/subscriber.mjs.map +1 -1
  41. package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
  42. package/dist/adapters/database/domains/role/repository.mjs.map +1 -1
  43. package/dist/adapters/database/domains/role/subscriber.mjs.map +1 -1
  44. package/dist/adapters/database/domains/role-attribute/entity.mjs.map +1 -1
  45. package/dist/adapters/database/domains/role-attribute/subscriber.mjs.map +1 -1
  46. package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
  47. package/dist/adapters/database/domains/role-permission/subscriber.mjs.map +1 -1
  48. package/dist/adapters/database/domains/scope/entity.mjs.map +1 -1
  49. package/dist/adapters/database/domains/scope/subscriber.mjs.map +1 -1
  50. package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
  51. package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
  52. package/dist/adapters/database/domains/user/repository.mjs.map +1 -1
  53. package/dist/adapters/database/domains/user/subscriber.mjs.map +1 -1
  54. package/dist/adapters/database/domains/user-attribute/entity.mjs.map +1 -1
  55. package/dist/adapters/database/domains/user-attribute/subscriber.mjs.map +1 -1
  56. package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
  57. package/dist/adapters/database/domains/user-permission/subscriber.mjs.map +1 -1
  58. package/dist/adapters/database/domains/user-role/entity.mjs.map +1 -1
  59. package/dist/adapters/database/domains/user-role/subscriber.mjs.map +1 -1
  60. package/dist/adapters/database/errors/conflict.d.ts +2 -2
  61. package/dist/adapters/database/errors/conflict.d.ts.map +1 -1
  62. package/dist/adapters/database/errors/conflict.mjs +6 -3
  63. package/dist/adapters/database/errors/conflict.mjs.map +1 -1
  64. package/dist/adapters/database/event-publisher/module.mjs.map +1 -1
  65. package/dist/adapters/database/extra-attribute-repository/adapter.mjs.map +1 -1
  66. package/dist/adapters/database/extra-attribute-repository/repository.mjs.map +1 -1
  67. package/dist/adapters/database/extra-attribute-repository/tree/adapter.mjs.map +1 -1
  68. package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs.map +1 -1
  69. package/dist/adapters/database/helpers/is-supported.mjs.map +1 -1
  70. package/dist/adapters/database/logger/module.mjs.map +1 -1
  71. package/dist/adapters/database/migrations/mysql/1673449341125-Default.mjs.map +1 -1
  72. package/dist/adapters/database/migrations/mysql/1689597906910-Default.mjs.map +1 -1
  73. package/dist/adapters/database/migrations/mysql/1718790373914-Default.mjs.map +1 -1
  74. package/dist/adapters/database/migrations/mysql/1722673916392-Default.mjs.map +1 -1
  75. package/dist/adapters/database/migrations/mysql/1740991051622-Default.mjs.map +1 -1
  76. package/dist/adapters/database/migrations/mysql/1766830857009-Default.mjs.map +1 -1
  77. package/dist/adapters/database/migrations/mysql/1774800953474-Default.mjs.map +1 -1
  78. package/dist/adapters/database/migrations/postgres/1673449341125-Default.mjs.map +1 -1
  79. package/dist/adapters/database/migrations/postgres/1689597906910-Default.mjs.map +1 -1
  80. package/dist/adapters/database/migrations/postgres/1718790373914-Default.mjs.map +1 -1
  81. package/dist/adapters/database/migrations/postgres/1722673916392-Default.mjs.map +1 -1
  82. package/dist/adapters/database/migrations/postgres/1740991051622-Default.mjs.map +1 -1
  83. package/dist/adapters/database/migrations/postgres/1766830857009-Default.mjs.map +1 -1
  84. package/dist/adapters/database/migrations/postgres/1774800953474-Default.mjs.map +1 -1
  85. package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
  86. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +2 -2
  87. package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
  88. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +2 -2
  89. package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
  90. package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs.map +1 -1
  91. package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
  92. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +4 -4
  93. package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
  94. package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs.map +1 -1
  95. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +4 -4
  96. package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs.map +1 -1
  97. package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs.map +1 -1
  98. package/dist/adapters/http/controllers/entities/client/module.d.ts.map +1 -1
  99. package/dist/adapters/http/controllers/entities/client/module.mjs +10 -6
  100. package/dist/adapters/http/controllers/entities/client/module.mjs.map +1 -1
  101. package/dist/adapters/http/controllers/entities/client-permission/module.mjs.map +1 -1
  102. package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs.map +1 -1
  103. package/dist/adapters/http/controllers/entities/client-role/module.mjs.map +1 -1
  104. package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs.map +1 -1
  105. package/dist/adapters/http/controllers/entities/client-scope/module.mjs.map +1 -1
  106. package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs.map +1 -1
  107. package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs.map +1 -1
  108. package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
  109. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +19 -17
  110. package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
  111. package/dist/adapters/http/controllers/entities/permission/module.d.ts +3 -10
  112. package/dist/adapters/http/controllers/entities/permission/module.d.ts.map +1 -1
  113. package/dist/adapters/http/controllers/entities/permission/module.mjs +16 -49
  114. package/dist/adapters/http/controllers/entities/permission/module.mjs.map +1 -1
  115. package/dist/adapters/http/controllers/entities/permission-policy/module.mjs.map +1 -1
  116. package/dist/adapters/http/controllers/entities/policy/module.d.ts +3 -7
  117. package/dist/adapters/http/controllers/entities/policy/module.d.ts.map +1 -1
  118. package/dist/adapters/http/controllers/entities/policy/module.mjs +16 -39
  119. package/dist/adapters/http/controllers/entities/policy/module.mjs.map +1 -1
  120. package/dist/adapters/http/controllers/entities/policy/utils/attributes-validator.mjs.map +1 -1
  121. package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs.map +1 -1
  122. package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
  123. package/dist/adapters/http/controllers/entities/realm/module.mjs +1 -1
  124. package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
  125. package/dist/adapters/http/controllers/entities/robot/module.d.ts.map +1 -1
  126. package/dist/adapters/http/controllers/entities/robot/module.mjs +11 -7
  127. package/dist/adapters/http/controllers/entities/robot/module.mjs.map +1 -1
  128. package/dist/adapters/http/controllers/entities/robot-permission/module.mjs.map +1 -1
  129. package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs.map +1 -1
  130. package/dist/adapters/http/controllers/entities/robot-role/module.mjs.map +1 -1
  131. package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs.map +1 -1
  132. package/dist/adapters/http/controllers/entities/role/module.mjs.map +1 -1
  133. package/dist/adapters/http/controllers/entities/role-attribute/module.mjs.map +1 -1
  134. package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs.map +1 -1
  135. package/dist/adapters/http/controllers/entities/role-permission/module.mjs.map +1 -1
  136. package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs.map +1 -1
  137. package/dist/adapters/http/controllers/entities/scope/module.mjs.map +1 -1
  138. package/dist/adapters/http/controllers/entities/user/module.d.ts.map +1 -1
  139. package/dist/adapters/http/controllers/entities/user/module.mjs +7 -3
  140. package/dist/adapters/http/controllers/entities/user/module.mjs.map +1 -1
  141. package/dist/adapters/http/controllers/entities/user-attribute/module.mjs.map +1 -1
  142. package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs.map +1 -1
  143. package/dist/adapters/http/controllers/entities/user-permission/module.mjs.map +1 -1
  144. package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs.map +1 -1
  145. package/dist/adapters/http/controllers/entities/user-role/module.mjs.map +1 -1
  146. package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs.map +1 -1
  147. package/dist/adapters/http/controllers/workflows/activate/module.mjs.map +1 -1
  148. package/dist/adapters/http/controllers/workflows/activate/validator.mjs.map +1 -1
  149. package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
  150. package/dist/adapters/http/controllers/workflows/authorize/module.mjs +2 -2
  151. package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
  152. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts.map +1 -1
  153. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs +3 -4
  154. package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs.map +1 -1
  155. package/dist/adapters/http/controllers/workflows/jwks/module.d.ts.map +1 -1
  156. package/dist/adapters/http/controllers/workflows/jwks/module.mjs +3 -4
  157. package/dist/adapters/http/controllers/workflows/jwks/module.mjs.map +1 -1
  158. package/dist/adapters/http/controllers/workflows/openid/module.mjs.map +1 -1
  159. package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
  160. package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
  161. package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
  162. package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
  163. package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
  164. package/dist/adapters/http/controllers/workflows/token/module.mjs +6 -6
  165. package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
  166. package/dist/adapters/http/controllers/workflows/token/utils/extract.mjs.map +1 -1
  167. package/dist/adapters/http/controllers/workflows/token/utils/validator.mjs.map +1 -1
  168. package/dist/adapters/http/index.mjs +4 -1
  169. package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
  170. package/dist/adapters/http/middleware/built-in/authorization/factory.mjs.map +1 -1
  171. package/dist/adapters/http/middleware/built-in/authorization/module.mjs +2 -2
  172. package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
  173. package/dist/adapters/http/middleware/built-in/basic.mjs.map +1 -1
  174. package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
  175. package/dist/adapters/http/middleware/built-in/error.mjs +5 -3
  176. package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
  177. package/dist/adapters/http/middleware/built-in/index.d.ts +1 -0
  178. package/dist/adapters/http/middleware/built-in/index.d.ts.map +1 -1
  179. package/dist/adapters/http/middleware/built-in/index.mjs +4 -1
  180. package/dist/adapters/http/middleware/built-in/loggedin/module.mjs.map +1 -1
  181. package/dist/adapters/http/middleware/built-in/loggedin/user.mjs +1 -1
  182. package/dist/adapters/http/middleware/built-in/loggedin/user.mjs.map +1 -1
  183. package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
  184. package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
  185. package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
  186. package/dist/adapters/http/middleware/built-in/realm-resolver/factory.d.ts +4 -0
  187. package/dist/adapters/http/middleware/built-in/realm-resolver/factory.d.ts.map +1 -0
  188. package/dist/adapters/http/middleware/built-in/realm-resolver/factory.mjs +14 -0
  189. package/dist/adapters/http/middleware/built-in/realm-resolver/factory.mjs.map +1 -0
  190. package/dist/adapters/http/middleware/built-in/realm-resolver/index.d.ts +4 -0
  191. package/dist/adapters/http/middleware/built-in/realm-resolver/index.d.ts.map +1 -0
  192. package/dist/adapters/http/middleware/built-in/realm-resolver/index.mjs +3 -0
  193. package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts +9 -0
  194. package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts.map +1 -0
  195. package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs +26 -0
  196. package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs.map +1 -0
  197. package/dist/adapters/http/middleware/built-in/realm-resolver/types.d.ts +5 -0
  198. package/dist/adapters/http/middleware/built-in/realm-resolver/types.d.ts.map +1 -0
  199. package/dist/adapters/http/middleware/built-in/swagger.mjs.map +1 -1
  200. package/dist/adapters/http/middleware/index.mjs +3 -1
  201. package/dist/adapters/http/request/helpers/actor.d.ts +1 -1
  202. package/dist/adapters/http/request/helpers/actor.d.ts.map +1 -1
  203. package/dist/adapters/http/request/helpers/actor.mjs.map +1 -1
  204. package/dist/adapters/http/request/helpers/body-realm-id.mjs.map +1 -1
  205. package/dist/adapters/http/request/helpers/identity.mjs +1 -1
  206. package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
  207. package/dist/adapters/http/request/helpers/index.d.ts +1 -0
  208. package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
  209. package/dist/adapters/http/request/helpers/index.mjs +2 -1
  210. package/dist/adapters/http/request/helpers/locations.mjs.map +1 -1
  211. package/dist/adapters/http/request/helpers/param-id.mjs.map +1 -1
  212. package/dist/adapters/http/request/helpers/realm-id.d.ts +5 -0
  213. package/dist/adapters/http/request/helpers/realm-id.d.ts.map +1 -0
  214. package/dist/adapters/http/request/helpers/realm-id.mjs +19 -0
  215. package/dist/adapters/http/request/helpers/realm-id.mjs.map +1 -0
  216. package/dist/adapters/http/request/helpers/scopes.mjs.map +1 -1
  217. package/dist/adapters/http/request/helpers/token.mjs.map +1 -1
  218. package/dist/adapters/http/request/index.mjs +2 -1
  219. package/dist/adapters/http/request/permission/helper.mjs.map +1 -1
  220. package/dist/adapters/http/request/permission/module.mjs.map +1 -1
  221. package/dist/adapters/shared/ldap/factory.mjs.map +1 -1
  222. package/dist/adapters/shared/ldap/module.mjs.map +1 -1
  223. package/dist/app/builder.mjs.map +1 -1
  224. package/dist/app/factory.mjs.map +1 -1
  225. package/dist/app/modules/authentication/constants.mjs.map +1 -1
  226. package/dist/app/modules/authentication/module.mjs.map +1 -1
  227. package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
  228. package/dist/app/modules/cache/constants.mjs.map +1 -1
  229. package/dist/app/modules/cache/module.mjs.map +1 -1
  230. package/dist/app/modules/components/module.mjs.map +1 -1
  231. package/dist/app/modules/config/constants.mjs.map +1 -1
  232. package/dist/app/modules/config/module.mjs.map +1 -1
  233. package/dist/app/modules/config/normalize.mjs.map +1 -1
  234. package/dist/app/modules/config/parse.mjs.map +1 -1
  235. package/dist/app/modules/config/read/env.mjs.map +1 -1
  236. package/dist/app/modules/config/read/fs.mjs.map +1 -1
  237. package/dist/app/modules/config/read/module.mjs.map +1 -1
  238. package/dist/app/modules/constants.mjs.map +1 -1
  239. package/dist/app/modules/database/constants.mjs.map +1 -1
  240. package/dist/app/modules/database/module.mjs.map +1 -1
  241. package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
  242. package/dist/app/modules/database/repositories/client/repository.d.ts +2 -1
  243. package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
  244. package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
  245. package/dist/app/modules/database/repositories/client-permission/repository.d.ts +1 -1
  246. package/dist/app/modules/database/repositories/client-permission/repository.d.ts.map +1 -1
  247. package/dist/app/modules/database/repositories/client-permission/repository.mjs.map +1 -1
  248. package/dist/app/modules/database/repositories/client-role/repository.d.ts +1 -1
  249. package/dist/app/modules/database/repositories/client-role/repository.d.ts.map +1 -1
  250. package/dist/app/modules/database/repositories/client-role/repository.mjs.map +1 -1
  251. package/dist/app/modules/database/repositories/client-scope/repository.d.ts +1 -1
  252. package/dist/app/modules/database/repositories/client-scope/repository.d.ts.map +1 -1
  253. package/dist/app/modules/database/repositories/client-scope/repository.mjs.map +1 -1
  254. package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
  255. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts +2 -1
  256. package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
  257. package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
  258. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts +2 -1
  259. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts.map +1 -1
  260. package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs.map +1 -1
  261. package/dist/app/modules/database/repositories/permission/repository.d.ts +2 -1
  262. package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
  263. package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
  264. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts +2 -1
  265. package/dist/app/modules/database/repositories/permission-policy/repository.d.ts.map +1 -1
  266. package/dist/app/modules/database/repositories/permission-policy/repository.mjs.map +1 -1
  267. package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
  268. package/dist/app/modules/database/repositories/policy/repository.d.ts +2 -1
  269. package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
  270. package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
  271. package/dist/app/modules/database/repositories/realm/repository.d.ts +2 -1
  272. package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
  273. package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
  274. package/dist/app/modules/database/repositories/robot/repository.d.ts +2 -1
  275. package/dist/app/modules/database/repositories/robot/repository.d.ts.map +1 -1
  276. package/dist/app/modules/database/repositories/robot/repository.mjs.map +1 -1
  277. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts +1 -1
  278. package/dist/app/modules/database/repositories/robot-permission/repository.d.ts.map +1 -1
  279. package/dist/app/modules/database/repositories/robot-permission/repository.mjs.map +1 -1
  280. package/dist/app/modules/database/repositories/robot-role/repository.d.ts +2 -1
  281. package/dist/app/modules/database/repositories/robot-role/repository.d.ts.map +1 -1
  282. package/dist/app/modules/database/repositories/robot-role/repository.mjs.map +1 -1
  283. package/dist/app/modules/database/repositories/role/repository.d.ts +2 -1
  284. package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
  285. package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
  286. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts +2 -1
  287. package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
  288. package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
  289. package/dist/app/modules/database/repositories/role-permission/repository.d.ts +2 -1
  290. package/dist/app/modules/database/repositories/role-permission/repository.d.ts.map +1 -1
  291. package/dist/app/modules/database/repositories/role-permission/repository.mjs.map +1 -1
  292. package/dist/app/modules/database/repositories/scope/repository.d.ts +2 -1
  293. package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
  294. package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
  295. package/dist/app/modules/database/repositories/user/repository.d.ts +2 -1
  296. package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
  297. package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
  298. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts +2 -1
  299. package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
  300. package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
  301. package/dist/app/modules/database/repositories/user-permission/repository.d.ts +2 -1
  302. package/dist/app/modules/database/repositories/user-permission/repository.d.ts.map +1 -1
  303. package/dist/app/modules/database/repositories/user-permission/repository.mjs.map +1 -1
  304. package/dist/app/modules/database/repositories/user-role/repository.d.ts +2 -1
  305. package/dist/app/modules/database/repositories/user-role/repository.d.ts.map +1 -1
  306. package/dist/app/modules/database/repositories/user-role/repository.mjs.map +1 -1
  307. package/dist/app/modules/http/constants.mjs.map +1 -1
  308. package/dist/app/modules/http/module.mjs.map +1 -1
  309. package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
  310. package/dist/app/modules/http/modules/controller.mjs +27 -19
  311. package/dist/app/modules/http/modules/controller.mjs.map +1 -1
  312. package/dist/app/modules/http/modules/middleware.d.ts +1 -0
  313. package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
  314. package/dist/app/modules/http/modules/middleware.mjs +10 -0
  315. package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
  316. package/dist/app/modules/identity/constants.mjs.map +1 -1
  317. package/dist/app/modules/identity/module.mjs.map +1 -1
  318. package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
  319. package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +1 -1
  320. package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs.map +1 -1
  321. package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs.map +1 -1
  322. package/dist/app/modules/identity/repositories/provider/mapper/role.mjs.map +1 -1
  323. package/dist/app/modules/identity/repositories/robot.mjs.map +1 -1
  324. package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
  325. package/dist/app/modules/ldap/constants.mjs.map +1 -1
  326. package/dist/app/modules/ldap/module.mjs.map +1 -1
  327. package/dist/app/modules/logger/constants.mjs.map +1 -1
  328. package/dist/app/modules/logger/module.mjs.map +1 -1
  329. package/dist/app/modules/mail/adapter/smtp/module.mjs.map +1 -1
  330. package/dist/app/modules/mail/adapter/smtp/smtp.mjs.map +1 -1
  331. package/dist/app/modules/mail/adapter/void.mjs.map +1 -1
  332. package/dist/app/modules/mail/constants.mjs.map +1 -1
  333. package/dist/app/modules/mail/module.mjs.map +1 -1
  334. package/dist/app/modules/oauth2/constants.mjs.map +1 -1
  335. package/dist/app/modules/oauth2/module.mjs.map +1 -1
  336. package/dist/app/modules/oauth2/repositories/authorize/code/repository.mjs.map +1 -1
  337. package/dist/app/modules/oauth2/repositories/authorize/state/repository.mjs.map +1 -1
  338. package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
  339. package/dist/app/modules/oauth2/repositories/key/repository.mjs.map +1 -1
  340. package/dist/app/modules/oauth2/repositories/scope/repository.mjs.map +1 -1
  341. package/dist/app/modules/oauth2/repositories/token/repository.mjs.map +1 -1
  342. package/dist/app/modules/provisioning/module.mjs.map +1 -1
  343. package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
  344. package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
  345. package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
  346. package/dist/app/modules/runtime/module.mjs.map +1 -1
  347. package/dist/cli/commands/healthcheck.mjs.map +1 -1
  348. package/dist/cli/commands/migration.mjs.map +1 -1
  349. package/dist/cli/commands/reset.mjs.map +1 -1
  350. package/dist/cli/commands/start.mjs.map +1 -1
  351. package/dist/cli/index.mjs.map +1 -1
  352. package/dist/cli/module.mjs.map +1 -1
  353. package/dist/components/database/unique-entries/factory.mjs.map +1 -1
  354. package/dist/components/database/unique-entries/module.mjs.map +1 -1
  355. package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
  356. package/dist/core/authentication/base.mjs.map +1 -1
  357. package/dist/core/authentication/credential/entities/client/module.mjs.map +1 -1
  358. package/dist/core/authentication/credential/entities/robot/module.mjs.map +1 -1
  359. package/dist/core/authentication/credential/entities/user/module.mjs.map +1 -1
  360. package/dist/core/authentication/entities/client/module.d.ts.map +1 -1
  361. package/dist/core/authentication/entities/client/module.mjs +7 -5
  362. package/dist/core/authentication/entities/client/module.mjs.map +1 -1
  363. package/dist/core/authentication/entities/robot/module.d.ts.map +1 -1
  364. package/dist/core/authentication/entities/robot/module.mjs +5 -4
  365. package/dist/core/authentication/entities/robot/module.mjs.map +1 -1
  366. package/dist/core/authentication/entities/user/module.d.ts.map +1 -1
  367. package/dist/core/authentication/entities/user/module.mjs +5 -4
  368. package/dist/core/authentication/entities/user/module.mjs.map +1 -1
  369. package/dist/core/authentication/module.mjs.map +1 -1
  370. package/dist/core/authentication/session/module.mjs.map +1 -1
  371. package/dist/core/entities/client/service.d.ts +2 -3
  372. package/dist/core/entities/client/service.d.ts.map +1 -1
  373. package/dist/core/entities/client/service.mjs +8 -8
  374. package/dist/core/entities/client/service.mjs.map +1 -1
  375. package/dist/core/entities/client/types.d.ts +1 -2
  376. package/dist/core/entities/client/types.d.ts.map +1 -1
  377. package/dist/core/entities/client-permission/service.d.ts +2 -3
  378. package/dist/core/entities/client-permission/service.d.ts.map +1 -1
  379. package/dist/core/entities/client-permission/service.mjs +8 -7
  380. package/dist/core/entities/client-permission/service.mjs.map +1 -1
  381. package/dist/core/entities/client-permission/types.d.ts +1 -2
  382. package/dist/core/entities/client-permission/types.d.ts.map +1 -1
  383. package/dist/core/entities/client-role/service.d.ts +2 -3
  384. package/dist/core/entities/client-role/service.d.ts.map +1 -1
  385. package/dist/core/entities/client-role/service.mjs +9 -8
  386. package/dist/core/entities/client-role/service.mjs.map +1 -1
  387. package/dist/core/entities/client-role/types.d.ts +1 -2
  388. package/dist/core/entities/client-role/types.d.ts.map +1 -1
  389. package/dist/core/entities/client-scope/service.d.ts +2 -3
  390. package/dist/core/entities/client-scope/service.d.ts.map +1 -1
  391. package/dist/core/entities/client-scope/service.mjs +7 -6
  392. package/dist/core/entities/client-scope/service.mjs.map +1 -1
  393. package/dist/core/entities/client-scope/types.d.ts +1 -2
  394. package/dist/core/entities/client-scope/types.d.ts.map +1 -1
  395. package/dist/core/entities/identity-provider/types.d.ts +1 -1
  396. package/dist/core/entities/identity-provider/types.d.ts.map +1 -1
  397. package/dist/core/entities/identity-provider-role-mapping/service.d.ts +2 -3
  398. package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
  399. package/dist/core/entities/identity-provider-role-mapping/service.mjs +10 -9
  400. package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
  401. package/dist/core/entities/identity-provider-role-mapping/types.d.ts +1 -2
  402. package/dist/core/entities/identity-provider-role-mapping/types.d.ts.map +1 -1
  403. package/dist/core/entities/index.d.ts +0 -3
  404. package/dist/core/entities/index.d.ts.map +1 -1
  405. package/dist/core/entities/index.mjs +1 -2
  406. package/dist/core/entities/permission/service.d.ts +2 -3
  407. package/dist/core/entities/permission/service.d.ts.map +1 -1
  408. package/dist/core/entities/permission/service.mjs +8 -9
  409. package/dist/core/entities/permission/service.mjs.map +1 -1
  410. package/dist/core/entities/permission/types.d.ts +1 -2
  411. package/dist/core/entities/permission/types.d.ts.map +1 -1
  412. package/dist/core/entities/permission-policy/service.d.ts +2 -3
  413. package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
  414. package/dist/core/entities/permission-policy/service.mjs +7 -6
  415. package/dist/core/entities/permission-policy/service.mjs.map +1 -1
  416. package/dist/core/entities/permission-policy/types.d.ts +1 -2
  417. package/dist/core/entities/permission-policy/types.d.ts.map +1 -1
  418. package/dist/core/entities/policy/attributes-validator.mjs.map +1 -1
  419. package/dist/core/entities/policy/service.d.ts +2 -3
  420. package/dist/core/entities/policy/service.d.ts.map +1 -1
  421. package/dist/core/entities/policy/service.mjs +8 -8
  422. package/dist/core/entities/policy/service.mjs.map +1 -1
  423. package/dist/core/entities/policy/types.d.ts +1 -2
  424. package/dist/core/entities/policy/types.d.ts.map +1 -1
  425. package/dist/core/entities/realm/service.d.ts +2 -3
  426. package/dist/core/entities/realm/service.d.ts.map +1 -1
  427. package/dist/core/entities/realm/service.mjs +8 -8
  428. package/dist/core/entities/realm/service.mjs.map +1 -1
  429. package/dist/core/entities/realm/types.d.ts +1 -2
  430. package/dist/core/entities/realm/types.d.ts.map +1 -1
  431. package/dist/core/entities/robot/service.d.ts +2 -3
  432. package/dist/core/entities/robot/service.d.ts.map +1 -1
  433. package/dist/core/entities/robot/service.mjs +8 -8
  434. package/dist/core/entities/robot/service.mjs.map +1 -1
  435. package/dist/core/entities/robot/types.d.ts +1 -2
  436. package/dist/core/entities/robot/types.d.ts.map +1 -1
  437. package/dist/core/entities/robot-permission/service.d.ts +2 -3
  438. package/dist/core/entities/robot-permission/service.d.ts.map +1 -1
  439. package/dist/core/entities/robot-permission/service.mjs +8 -7
  440. package/dist/core/entities/robot-permission/service.mjs.map +1 -1
  441. package/dist/core/entities/robot-permission/types.d.ts +1 -2
  442. package/dist/core/entities/robot-permission/types.d.ts.map +1 -1
  443. package/dist/core/entities/robot-role/service.d.ts +2 -3
  444. package/dist/core/entities/robot-role/service.d.ts.map +1 -1
  445. package/dist/core/entities/robot-role/service.mjs +9 -8
  446. package/dist/core/entities/robot-role/service.mjs.map +1 -1
  447. package/dist/core/entities/robot-role/types.d.ts +1 -2
  448. package/dist/core/entities/robot-role/types.d.ts.map +1 -1
  449. package/dist/core/entities/role/service.d.ts +2 -3
  450. package/dist/core/entities/role/service.d.ts.map +1 -1
  451. package/dist/core/entities/role/service.mjs +8 -8
  452. package/dist/core/entities/role/service.mjs.map +1 -1
  453. package/dist/core/entities/role/types.d.ts +1 -2
  454. package/dist/core/entities/role/types.d.ts.map +1 -1
  455. package/dist/core/entities/role-attribute/service.d.ts +2 -3
  456. package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
  457. package/dist/core/entities/role-attribute/service.mjs +5 -5
  458. package/dist/core/entities/role-attribute/service.mjs.map +1 -1
  459. package/dist/core/entities/role-attribute/types.d.ts +1 -2
  460. package/dist/core/entities/role-attribute/types.d.ts.map +1 -1
  461. package/dist/core/entities/role-permission/service.d.ts +2 -3
  462. package/dist/core/entities/role-permission/service.d.ts.map +1 -1
  463. package/dist/core/entities/role-permission/service.mjs +8 -7
  464. package/dist/core/entities/role-permission/service.mjs.map +1 -1
  465. package/dist/core/entities/role-permission/types.d.ts +1 -2
  466. package/dist/core/entities/role-permission/types.d.ts.map +1 -1
  467. package/dist/core/entities/scope/service.d.ts +2 -3
  468. package/dist/core/entities/scope/service.d.ts.map +1 -1
  469. package/dist/core/entities/scope/service.mjs +8 -8
  470. package/dist/core/entities/scope/service.mjs.map +1 -1
  471. package/dist/core/entities/scope/types.d.ts +1 -2
  472. package/dist/core/entities/scope/types.d.ts.map +1 -1
  473. package/dist/core/entities/user/service.d.ts +2 -3
  474. package/dist/core/entities/user/service.d.ts.map +1 -1
  475. package/dist/core/entities/user/service.mjs +8 -8
  476. package/dist/core/entities/user/service.mjs.map +1 -1
  477. package/dist/core/entities/user/types.d.ts +1 -2
  478. package/dist/core/entities/user/types.d.ts.map +1 -1
  479. package/dist/core/entities/user-attribute/service.d.ts +2 -3
  480. package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
  481. package/dist/core/entities/user-attribute/service.mjs +8 -8
  482. package/dist/core/entities/user-attribute/service.mjs.map +1 -1
  483. package/dist/core/entities/user-attribute/types.d.ts +1 -2
  484. package/dist/core/entities/user-attribute/types.d.ts.map +1 -1
  485. package/dist/core/entities/user-permission/service.d.ts +2 -3
  486. package/dist/core/entities/user-permission/service.d.ts.map +1 -1
  487. package/dist/core/entities/user-permission/service.mjs +8 -7
  488. package/dist/core/entities/user-permission/service.mjs.map +1 -1
  489. package/dist/core/entities/user-permission/types.d.ts +1 -2
  490. package/dist/core/entities/user-permission/types.d.ts.map +1 -1
  491. package/dist/core/entities/user-role/service.d.ts +2 -3
  492. package/dist/core/entities/user-role/service.d.ts.map +1 -1
  493. package/dist/core/entities/user-role/service.mjs +9 -8
  494. package/dist/core/entities/user-role/service.mjs.map +1 -1
  495. package/dist/core/entities/user-role/types.d.ts +1 -2
  496. package/dist/core/entities/user-role/types.d.ts.map +1 -1
  497. package/dist/core/identity/index.d.ts +1 -0
  498. package/dist/core/identity/index.d.ts.map +1 -1
  499. package/dist/core/identity/index.mjs +4 -1
  500. package/dist/core/identity/password-recovery/check.d.ts +7 -0
  501. package/dist/core/identity/password-recovery/check.d.ts.map +1 -0
  502. package/dist/core/identity/password-recovery/check.mjs +24 -0
  503. package/dist/core/identity/password-recovery/check.mjs.map +1 -0
  504. package/dist/core/identity/password-recovery/disabled.d.ts +6 -0
  505. package/dist/core/identity/password-recovery/disabled.d.ts.map +1 -0
  506. package/dist/core/identity/password-recovery/disabled.mjs +16 -0
  507. package/dist/core/identity/password-recovery/disabled.mjs.map +1 -0
  508. package/dist/core/identity/password-recovery/email-verification-required.d.ts +6 -0
  509. package/dist/core/identity/password-recovery/email-verification-required.d.ts.map +1 -0
  510. package/dist/core/identity/password-recovery/email-verification-required.mjs +16 -0
  511. package/dist/core/identity/password-recovery/email-verification-required.mjs.map +1 -0
  512. package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
  513. package/dist/core/identity/password-recovery/service.mjs +10 -7
  514. package/dist/core/identity/password-recovery/service.mjs.map +1 -1
  515. package/dist/core/identity/password-recovery/token-expired.d.ts +6 -0
  516. package/dist/core/identity/password-recovery/token-expired.d.ts.map +1 -0
  517. package/dist/core/identity/password-recovery/token-expired.mjs +16 -0
  518. package/dist/core/identity/password-recovery/token-expired.mjs.map +1 -0
  519. package/dist/core/identity/permission/checker/index.d.ts +3 -0
  520. package/dist/core/identity/permission/checker/index.d.ts.map +1 -0
  521. package/dist/core/identity/permission/checker/index.mjs +2 -0
  522. package/dist/core/identity/permission/checker/service.d.ts +10 -0
  523. package/dist/core/identity/permission/checker/service.d.ts.map +1 -0
  524. package/dist/core/identity/permission/checker/service.mjs +55 -0
  525. package/dist/core/identity/permission/checker/service.mjs.map +1 -0
  526. package/dist/core/identity/permission/checker/types.d.ts +42 -0
  527. package/dist/core/identity/permission/checker/types.d.ts.map +1 -0
  528. package/dist/core/identity/permission/identity-policy-data.d.ts +4 -0
  529. package/dist/core/identity/permission/identity-policy-data.d.ts.map +1 -0
  530. package/dist/core/identity/permission/identity-policy-data.mjs +23 -0
  531. package/dist/core/identity/permission/identity-policy-data.mjs.map +1 -0
  532. package/dist/core/identity/permission/index.d.ts +1 -0
  533. package/dist/core/identity/permission/index.d.ts.map +1 -1
  534. package/dist/core/identity/permission/index.mjs +3 -1
  535. package/dist/core/identity/permission/module.mjs.map +1 -1
  536. package/dist/core/identity/policy/checker/index.d.ts +3 -0
  537. package/dist/core/identity/policy/checker/index.d.ts.map +1 -0
  538. package/dist/core/identity/policy/checker/index.mjs +2 -0
  539. package/dist/core/identity/policy/checker/service.d.ts +10 -0
  540. package/dist/core/identity/policy/checker/service.d.ts.map +1 -0
  541. package/dist/core/identity/policy/checker/service.mjs +46 -0
  542. package/dist/core/identity/policy/checker/service.mjs.map +1 -0
  543. package/dist/core/identity/policy/checker/types.d.ts +40 -0
  544. package/dist/core/identity/policy/checker/types.d.ts.map +1 -0
  545. package/dist/core/identity/policy/index.d.ts +2 -0
  546. package/dist/core/identity/policy/index.d.ts.map +1 -0
  547. package/dist/core/identity/policy/index.mjs +3 -0
  548. package/dist/core/identity/provider/account/module.d.ts.map +1 -1
  549. package/dist/core/identity/provider/account/module.mjs +2 -2
  550. package/dist/core/identity/provider/account/module.mjs.map +1 -1
  551. package/dist/core/identity/provider/authentication/constants.mjs.map +1 -1
  552. package/dist/core/identity/provider/authentication/factory.mjs.map +1 -1
  553. package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
  554. package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
  555. package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
  556. package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
  557. package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -1
  558. package/dist/core/identity/provider/authentication/protocols/ldap/collection.d.ts.map +1 -1
  559. package/dist/core/identity/provider/authentication/protocols/ldap/collection.mjs +3 -2
  560. package/dist/core/identity/provider/authentication/protocols/ldap/collection.mjs.map +1 -1
  561. package/dist/core/identity/provider/authentication/protocols/ldap/module.d.ts.map +1 -1
  562. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs +7 -4
  563. package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs.map +1 -1
  564. package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
  565. package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs.map +1 -1
  566. package/dist/core/identity/provider/mapper/attributes/module.mjs.map +1 -1
  567. package/dist/core/identity/provider/mapper/base.mjs.map +1 -1
  568. package/dist/core/identity/provider/mapper/permission/module.mjs.map +1 -1
  569. package/dist/core/identity/provider/mapper/role/module.mjs.map +1 -1
  570. package/dist/core/identity/registration/check.d.ts +3 -0
  571. package/dist/core/identity/registration/check.d.ts.map +1 -0
  572. package/dist/core/identity/registration/check.mjs +12 -0
  573. package/dist/core/identity/registration/check.mjs.map +1 -0
  574. package/dist/core/identity/registration/error.d.ts +6 -0
  575. package/dist/core/identity/registration/error.d.ts.map +1 -0
  576. package/dist/core/identity/registration/error.mjs +16 -0
  577. package/dist/core/identity/registration/error.mjs.map +1 -0
  578. package/dist/core/identity/registration/service.d.ts.map +1 -1
  579. package/dist/core/identity/registration/service.mjs +4 -3
  580. package/dist/core/identity/registration/service.mjs.map +1 -1
  581. package/dist/core/identity/resolver/entities/ldap/module.mjs.map +1 -1
  582. package/dist/core/identity/resolver/module.mjs.map +1 -1
  583. package/dist/core/identity/role/module.mjs.map +1 -1
  584. package/dist/core/index.mjs +5 -4
  585. package/dist/core/oauth2/authorization/code/issuer/module.mjs.map +1 -1
  586. package/dist/core/oauth2/authorization/code/verifier/module.mjs +8 -8
  587. package/dist/core/oauth2/authorization/code/verifier/module.mjs.map +1 -1
  588. package/dist/core/oauth2/authorization/code-request/validator.mjs +2 -2
  589. package/dist/core/oauth2/authorization/code-request/validator.mjs.map +1 -1
  590. package/dist/core/oauth2/authorization/code-request/verifier/module.d.ts.map +1 -1
  591. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +8 -8
  592. package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
  593. package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
  594. package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
  595. package/dist/core/oauth2/authorization/module.mjs +4 -4
  596. package/dist/core/oauth2/authorization/module.mjs.map +1 -1
  597. package/dist/core/oauth2/authorization/state/module.mjs +4 -4
  598. package/dist/core/oauth2/authorization/state/module.mjs.map +1 -1
  599. package/dist/core/oauth2/client/authenticator.mjs +6 -6
  600. package/dist/core/oauth2/client/authenticator.mjs.map +1 -1
  601. package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
  602. package/dist/core/oauth2/grant-types/base.mjs.map +1 -1
  603. package/dist/core/oauth2/grant-types/client-credentials.mjs.map +1 -1
  604. package/dist/core/oauth2/grant-types/identity.mjs.map +1 -1
  605. package/dist/core/oauth2/grant-types/password.mjs.map +1 -1
  606. package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
  607. package/dist/core/oauth2/grant-types/robot-credentials.mjs.map +1 -1
  608. package/dist/core/oauth2/helpers/{erorr.d.ts → error.d.ts} +1 -1
  609. package/dist/core/oauth2/helpers/error.d.ts.map +1 -0
  610. package/dist/core/oauth2/helpers/{erorr.mjs → error.mjs} +6 -7
  611. package/dist/core/oauth2/helpers/error.mjs.map +1 -0
  612. package/dist/core/oauth2/helpers/index.d.ts +1 -1
  613. package/dist/core/oauth2/helpers/index.mjs +1 -1
  614. package/dist/core/oauth2/openid/claims.mjs.map +1 -1
  615. package/dist/core/oauth2/response/bearer.mjs.map +1 -1
  616. package/dist/core/oauth2/scope/resolver.mjs.map +1 -1
  617. package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
  618. package/dist/core/oauth2/token/issuer/base.mjs.map +1 -1
  619. package/dist/core/oauth2/token/issuer/open-id/module.mjs.map +1 -1
  620. package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
  621. package/dist/core/oauth2/token/revoker/module.mjs.map +1 -1
  622. package/dist/core/oauth2/token/signer/module.mjs.map +1 -1
  623. package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
  624. package/dist/core/provisioning/entities/client/relations-validator.mjs.map +1 -1
  625. package/dist/core/provisioning/entities/client/validator.mjs.map +1 -1
  626. package/dist/core/provisioning/entities/permission/validator.mjs.map +1 -1
  627. package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
  628. package/dist/core/provisioning/entities/realm/validator.mjs.map +1 -1
  629. package/dist/core/provisioning/entities/robot/relations-validator.mjs.map +1 -1
  630. package/dist/core/provisioning/entities/robot/validator.mjs.map +1 -1
  631. package/dist/core/provisioning/entities/role/relations-validator.mjs.map +1 -1
  632. package/dist/core/provisioning/entities/role/validator.mjs.map +1 -1
  633. package/dist/core/provisioning/entities/root/validator.mjs.map +1 -1
  634. package/dist/core/provisioning/entities/scope/validator.mjs.map +1 -1
  635. package/dist/core/provisioning/entities/user/relations-validator.mjs.map +1 -1
  636. package/dist/core/provisioning/entities/user/validator.mjs.map +1 -1
  637. package/dist/core/provisioning/strategy/normalize.mjs.map +1 -1
  638. package/dist/core/provisioning/strategy/validator.mjs.map +1 -1
  639. package/dist/core/provisioning/synchronizer/base.mjs.map +1 -1
  640. package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
  641. package/dist/core/provisioning/synchronizer/entity-resolver.d.ts +1 -1
  642. package/dist/core/provisioning/synchronizer/entity-resolver.d.ts.map +1 -1
  643. package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
  644. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts +1 -1
  645. package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts.map +1 -1
  646. package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs.map +1 -1
  647. package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
  648. package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
  649. package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
  650. package/dist/core/provisioning/synchronizer/robot/module.mjs.map +1 -1
  651. package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
  652. package/dist/core/provisioning/synchronizer/root/module.mjs.map +1 -1
  653. package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
  654. package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
  655. package/dist/core/security/policy/engine.mjs.map +1 -1
  656. package/dist/core/security/policy/evaluator.mjs.map +1 -1
  657. package/dist/index.mjs +4 -1
  658. package/dist/path.mjs.map +1 -1
  659. package/dist/swagger.json +3125 -1269
  660. package/dist/ui/client/.vite/ssr-manifest.json +30 -35
  661. package/dist/ui/client/assets/index-BdPtpN2t.js +66 -0
  662. package/dist/ui/client/index.html +1 -1
  663. package/dist/ui/server/server.js +24261 -972
  664. package/dist/utils/error.d.ts +13 -0
  665. package/dist/utils/error.d.ts.map +1 -1
  666. package/dist/utils/error.mjs +26 -23
  667. package/dist/utils/error.mjs.map +1 -1
  668. package/dist/utils/host.mjs.map +1 -1
  669. package/dist/utils/self-id.mjs.map +1 -1
  670. package/dist/utils/url.mjs.map +1 -1
  671. package/package.json +26 -27
  672. package/dist/core/entities/actor/index.d.ts +0 -2
  673. package/dist/core/entities/actor/index.d.ts.map +0 -1
  674. package/dist/core/entities/actor/types.d.ts +0 -7
  675. package/dist/core/entities/actor/types.d.ts.map +0 -1
  676. package/dist/core/entities/service.d.ts +0 -6
  677. package/dist/core/entities/service.d.ts.map +0 -1
  678. package/dist/core/entities/service.mjs +0 -21
  679. package/dist/core/entities/service.mjs.map +0 -1
  680. package/dist/core/entities/types.d.ts +0 -22
  681. package/dist/core/entities/types.d.ts.map +0 -1
  682. package/dist/core/oauth2/helpers/erorr.d.ts.map +0 -1
  683. package/dist/core/oauth2/helpers/erorr.mjs.map +0 -1
  684. package/dist/ui/client/assets/index-DJBdH-x_.js +0 -64
  685. /package/dist/{core/entities/actor → adapters/http/middleware/built-in/realm-resolver}/types.mjs +0 -0
  686. /package/dist/core/{entities → identity/permission/checker}/types.mjs +0 -0
  687. /package/dist/core/{entities/actor/index.mjs → identity/policy/checker/types.mjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-permission/service.ts"],"names":[],"mappings":"AASA,OAAO,EAAkB,uBAAuB,EAAkB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,MAAM,4BAA4B,GAAG;IACvC,UAAU,EAAE,yBAAyB,CAAC;IACtC,0BAA0B,EAAE,2BAA2B,CAAC;CAC3D,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,qBAAsB,YAAW,sBAAsB;IAC9F,SAAS,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAEhD,SAAS,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;IAElE,SAAS,CAAC,SAAS,EAAE,uBAAuB,CAAC;gBAEjC,GAAG,EAAE,4BAA4B;IAOvC,OAAO,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC;IAYpD,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,CAAC;IAiBpB,MAAM,CACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,CAAC;IA6DpB,MAAM,CACR,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,CAAC;IAyBpB,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,CAAC;CAmB7B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-permission/service.ts"],"names":[],"mappings":"AAUA,OAAO,EAAkB,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAG,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,MAAM,4BAA4B,GAAG;IACvC,UAAU,EAAE,yBAAyB,CAAC;IACtC,0BAA0B,EAAE,2BAA2B,CAAC;CAC3D,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,qBAAsB,YAAW,sBAAsB;IAC9F,SAAS,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAEhD,SAAS,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;IAElE,SAAS,CAAC,SAAS,EAAE,uBAAuB,CAAC;gBAEjC,GAAG,EAAE,4BAA4B;IAOvC,OAAO,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC;IAYpD,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,CAAC;IAiBpB,MAAM,CACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,CAAC;IA6DpB,MAAM,CACR,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,CAAC;IAyBpB,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,CAAC;CAmB7B"}
@@ -1,7 +1,8 @@
1
- import { AbstractEntityService } from "../service.mjs";
2
- import { PermissionName, UserPermissionValidator, ValidatorGroup } from "@authup/core-kit";
1
+ import { PermissionName, UserPermissionValidator } from "@authup/core-kit";
2
+ import { AbstractEntityService } from "@authup/server-kit";
3
+ import { ValidatorGroup } from "@authup/kit";
3
4
  import { BuiltInPolicyType, PolicyData } from "@authup/access";
4
- import { ConflictError, NotFoundError } from "@ebec/http";
5
+ import { EntityConflictError, EntityNotFoundError } from "@authup/errors";
5
6
  //#region src/core/entities/user-permission/service.ts
6
7
  var UserPermissionService = class extends AbstractEntityService {
7
8
  repository;
@@ -28,7 +29,7 @@ var UserPermissionService = class extends AbstractEntityService {
28
29
  PermissionName.USER_PERMISSION_READ
29
30
  ] });
30
31
  const entity = await this.repository.findOneBy({ id });
31
- if (!entity) throw new NotFoundError();
32
+ if (!entity) throw new EntityNotFoundError();
32
33
  return entity;
33
34
  }
34
35
  async create(data, actor) {
@@ -38,7 +39,7 @@ var UserPermissionService = class extends AbstractEntityService {
38
39
  if (await this.repository.findOneBy({
39
40
  permission_id: validated.permission_id,
40
41
  user_id: validated.user_id
41
- })) throw new ConflictError("The user-permission assignment already exists.");
42
+ })) throw new EntityConflictError({ entity: "user-permission" });
42
43
  if (validated.permission) {
43
44
  validated.permission_realm_id = validated.permission.realm_id;
44
45
  await actor.permissionEvaluator.preEvaluate({
@@ -70,7 +71,7 @@ var UserPermissionService = class extends AbstractEntityService {
70
71
  async update(id, data, actor) {
71
72
  await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_PERMISSION_UPDATE });
72
73
  const entity = await this.repository.findOneBy({ id });
73
- if (!entity) throw new NotFoundError();
74
+ if (!entity) throw new EntityNotFoundError();
74
75
  const updateData = {};
75
76
  if (Object.prototype.hasOwnProperty.call(data, "policy_id")) updateData.policy_id = data.policy_id;
76
77
  await this.repository.validateJoinColumns(updateData);
@@ -84,7 +85,7 @@ var UserPermissionService = class extends AbstractEntityService {
84
85
  async delete(id, actor) {
85
86
  await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_PERMISSION_DELETE });
86
87
  const entity = await this.repository.findOneBy({ id });
87
- if (!entity) throw new NotFoundError();
88
+ if (!entity) throw new EntityNotFoundError();
88
89
  await actor.permissionEvaluator.evaluate({
89
90
  name: PermissionName.USER_PERMISSION_DELETE,
90
91
  input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity })
@@ -1 +1 @@
1
- {"version":3,"file":"service.mjs","names":["BuiltInPolicyType","PolicyData","ConflictError","NotFoundError","PermissionName","UserPermissionValidator","ValidatorGroup","AbstractEntityService","UserPermissionService","repository","identityPermissionProvider","validator","ctx","getMany","query","actor","permissionEvaluator","preEvaluateOneOf","name","USER_PERMISSION_CREATE","USER_PERMISSION_DELETE","USER_PERMISSION_READ","findMany","getOne","id","entity","findOneBy","create","data","preEvaluate","validated","run","group","CREATE","validateJoinColumns","existing","permission_id","user_id","permission","permission_realm_id","realm_id","realmId","clientId","client_id","user","user_realm_id","identity","policy_id","junctionPolicy","resolveJunctionPolicy","type","evaluate","input","ATTRIBUTES","save","update","USER_PERMISSION_UPDATE","updateData","Object","prototype","hasOwnProperty","call","merged","merge","delete","entityId","remove"],"sources":["../../../../src/core/entities/user-permission/service.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 { BuiltInPolicyType, PolicyData } from '@authup/access';\nimport { ConflictError, NotFoundError } from '@ebec/http';\nimport { PermissionName, UserPermissionValidator, ValidatorGroup } from '@authup/core-kit';\nimport type { UserPermission } from '@authup/core-kit';\nimport type { IIdentityPermissionProvider } from '../../identity/permission/types.ts';\nimport type { ActorContext } from '../actor/types.ts';\nimport { AbstractEntityService } from '../service.ts';\nimport type { EntityRepositoryFindManyResult } from '../types.ts';\nimport type { IUserPermissionRepository, IUserPermissionService } from './types.ts';\n\nexport type UserPermissionServiceContext = {\n repository: IUserPermissionRepository;\n identityPermissionProvider: IIdentityPermissionProvider;\n};\n\nexport class UserPermissionService extends AbstractEntityService implements IUserPermissionService {\n protected repository: IUserPermissionRepository;\n\n protected identityPermissionProvider: IIdentityPermissionProvider;\n\n protected validator: UserPermissionValidator;\n\n constructor(ctx: UserPermissionServiceContext) {\n super();\n this.repository = ctx.repository;\n this.identityPermissionProvider = ctx.identityPermissionProvider;\n this.validator = new UserPermissionValidator();\n }\n\n async getMany(\n query: Record<string, any>,\n actor: ActorContext,\n ): Promise<EntityRepositoryFindManyResult<UserPermission>> {\n await actor.permissionEvaluator.preEvaluateOneOf({\n name: [\n PermissionName.USER_PERMISSION_CREATE,\n PermissionName.USER_PERMISSION_DELETE,\n PermissionName.USER_PERMISSION_READ,\n ],\n });\n\n return this.repository.findMany(query);\n }\n\n async getOne(\n id: string,\n actor: ActorContext,\n ): Promise<UserPermission> {\n await actor.permissionEvaluator.preEvaluateOneOf({\n name: [\n PermissionName.USER_PERMISSION_CREATE,\n PermissionName.USER_PERMISSION_DELETE,\n PermissionName.USER_PERMISSION_READ,\n ],\n });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new NotFoundError();\n }\n\n return entity;\n }\n\n async create(\n data: Record<string, any>,\n actor: ActorContext,\n ): Promise<UserPermission> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_PERMISSION_CREATE });\n\n const validated = await this.validator.run(data, { group: ValidatorGroup.CREATE });\n\n await this.repository.validateJoinColumns(validated);\n\n const existing = await this.repository.findOneBy({\n permission_id: validated.permission_id,\n user_id: validated.user_id,\n });\n if (existing) {\n throw new ConflictError('The user-permission assignment already exists.');\n }\n\n if (validated.permission) {\n validated.permission_realm_id = validated.permission.realm_id;\n\n await actor.permissionEvaluator.preEvaluate({\n name: validated.permission.name,\n realmId: validated.permission.realm_id,\n clientId: validated.permission.client_id,\n });\n }\n\n if (validated.user) {\n validated.user_realm_id = validated.user.realm_id;\n }\n\n if (\n validated.permission &&\n actor.identity &&\n typeof validated.policy_id === 'undefined'\n ) {\n const junctionPolicy = await this.identityPermissionProvider.resolveJunctionPolicy(\n {\n type: actor.identity.type,\n id: actor.identity.data.id,\n },\n {\n name: validated.permission.name,\n realmId: validated.permission.realm_id,\n clientId: validated.permission.client_id,\n },\n );\n if (junctionPolicy) {\n validated.policy_id = junctionPolicy.id;\n }\n }\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_PERMISSION_CREATE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: validated }),\n });\n\n let entity = this.repository.create(validated);\n entity = await this.repository.save(entity);\n\n return entity;\n }\n\n async update(\n id: string,\n data: Record<string, any>,\n actor: ActorContext,\n ): Promise<UserPermission> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_PERMISSION_UPDATE });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new NotFoundError();\n }\n\n const updateData: Record<string, any> = {};\n if (Object.prototype.hasOwnProperty.call(data, 'policy_id')) {\n updateData.policy_id = data.policy_id;\n }\n\n await this.repository.validateJoinColumns(updateData);\n\n const merged = this.repository.merge(entity, updateData);\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_PERMISSION_UPDATE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: merged }),\n });\n\n return this.repository.save(merged);\n }\n\n async delete(\n id: string,\n actor: ActorContext,\n ): Promise<UserPermission> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_PERMISSION_DELETE });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new NotFoundError();\n }\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_PERMISSION_DELETE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity }),\n });\n\n const { id: entityId } = entity;\n await this.repository.remove(entity);\n entity.id = entityId;\n\n return entity;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"service.mjs","names":["BuiltInPolicyType","PolicyData","EntityConflictError","EntityNotFoundError","ValidatorGroup","PermissionName","UserPermissionValidator","AbstractEntityService","UserPermissionService","repository","identityPermissionProvider","validator","ctx","getMany","query","actor","permissionEvaluator","preEvaluateOneOf","name","USER_PERMISSION_CREATE","USER_PERMISSION_DELETE","USER_PERMISSION_READ","findMany","getOne","id","entity","findOneBy","create","data","preEvaluate","validated","run","group","CREATE","validateJoinColumns","existing","permission_id","user_id","permission","permission_realm_id","realm_id","realmId","clientId","client_id","user","user_realm_id","identity","policy_id","junctionPolicy","resolveJunctionPolicy","type","evaluate","input","ATTRIBUTES","save","update","USER_PERMISSION_UPDATE","updateData","Object","prototype","hasOwnProperty","call","merged","merge","delete","entityId","remove"],"sources":["../../../../src/core/entities/user-permission/service.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 { BuiltInPolicyType, PolicyData } from '@authup/access';\nimport { EntityConflictError, EntityNotFoundError } from '@authup/errors';\nimport { ValidatorGroup } from '@authup/kit';\nimport { PermissionName, UserPermissionValidator } from '@authup/core-kit';\nimport type { UserPermission } from '@authup/core-kit';\nimport type { IIdentityPermissionProvider } from '../../identity/permission/types.ts';\nimport type { ActorContext, EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport { AbstractEntityService } from '@authup/server-kit';\nimport type { IUserPermissionRepository, IUserPermissionService } from './types.ts';\n\nexport type UserPermissionServiceContext = {\n repository: IUserPermissionRepository;\n identityPermissionProvider: IIdentityPermissionProvider;\n};\n\nexport class UserPermissionService extends AbstractEntityService implements IUserPermissionService {\n protected repository: IUserPermissionRepository;\n\n protected identityPermissionProvider: IIdentityPermissionProvider;\n\n protected validator: UserPermissionValidator;\n\n constructor(ctx: UserPermissionServiceContext) {\n super();\n this.repository = ctx.repository;\n this.identityPermissionProvider = ctx.identityPermissionProvider;\n this.validator = new UserPermissionValidator();\n }\n\n async getMany(\n query: Record<string, any>,\n actor: ActorContext,\n ): Promise<EntityRepositoryFindManyResult<UserPermission>> {\n await actor.permissionEvaluator.preEvaluateOneOf({\n name: [\n PermissionName.USER_PERMISSION_CREATE,\n PermissionName.USER_PERMISSION_DELETE,\n PermissionName.USER_PERMISSION_READ,\n ],\n });\n\n return this.repository.findMany(query);\n }\n\n async getOne(\n id: string,\n actor: ActorContext,\n ): Promise<UserPermission> {\n await actor.permissionEvaluator.preEvaluateOneOf({\n name: [\n PermissionName.USER_PERMISSION_CREATE,\n PermissionName.USER_PERMISSION_DELETE,\n PermissionName.USER_PERMISSION_READ,\n ],\n });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new EntityNotFoundError();\n }\n\n return entity;\n }\n\n async create(\n data: Record<string, any>,\n actor: ActorContext,\n ): Promise<UserPermission> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_PERMISSION_CREATE });\n\n const validated = await this.validator.run(data, { group: ValidatorGroup.CREATE });\n\n await this.repository.validateJoinColumns(validated);\n\n const existing = await this.repository.findOneBy({\n permission_id: validated.permission_id,\n user_id: validated.user_id,\n });\n if (existing) {\n throw new EntityConflictError({ entity: 'user-permission' });\n }\n\n if (validated.permission) {\n validated.permission_realm_id = validated.permission.realm_id;\n\n await actor.permissionEvaluator.preEvaluate({\n name: validated.permission.name,\n realmId: validated.permission.realm_id,\n clientId: validated.permission.client_id,\n });\n }\n\n if (validated.user) {\n validated.user_realm_id = validated.user.realm_id;\n }\n\n if (\n validated.permission &&\n actor.identity &&\n typeof validated.policy_id === 'undefined'\n ) {\n const junctionPolicy = await this.identityPermissionProvider.resolveJunctionPolicy(\n {\n type: actor.identity.type,\n id: actor.identity.data.id,\n },\n {\n name: validated.permission.name,\n realmId: validated.permission.realm_id,\n clientId: validated.permission.client_id,\n },\n );\n if (junctionPolicy) {\n validated.policy_id = junctionPolicy.id;\n }\n }\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_PERMISSION_CREATE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: validated }),\n });\n\n let entity = this.repository.create(validated);\n entity = await this.repository.save(entity);\n\n return entity;\n }\n\n async update(\n id: string,\n data: Record<string, any>,\n actor: ActorContext,\n ): Promise<UserPermission> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_PERMISSION_UPDATE });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new EntityNotFoundError();\n }\n\n const updateData: Record<string, any> = {};\n if (Object.prototype.hasOwnProperty.call(data, 'policy_id')) {\n updateData.policy_id = data.policy_id;\n }\n\n await this.repository.validateJoinColumns(updateData);\n\n const merged = this.repository.merge(entity, updateData);\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_PERMISSION_UPDATE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: merged }),\n });\n\n return this.repository.save(merged);\n }\n\n async delete(\n id: string,\n actor: ActorContext,\n ): Promise<UserPermission> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_PERMISSION_DELETE });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new EntityNotFoundError();\n }\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_PERMISSION_DELETE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity }),\n });\n\n const { id: entityId } = entity;\n await this.repository.remove(entity);\n entity.id = entityId;\n\n return entity;\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type { UserPermission } from '@authup/core-kit';
2
- import type { ActorContext } from '../actor/types.ts';
3
- import type { EntityRepositoryFindManyResult, IEntityRepository } from '../types.ts';
2
+ import type { ActorContext, EntityRepositoryFindManyResult, IEntityRepository } from '@authup/server-kit';
4
3
  export interface IUserPermissionRepository extends IEntityRepository<UserPermission> {
5
4
  }
6
5
  export interface IUserPermissionService {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-permission/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB,CAAC,cAAc,CAAC;CACnF;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC;IAClH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAChF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5F,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACpE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-permission/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAE,iBAAiB,EAAG,MAAM,oBAAoB,CAAC;AAE3G,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB,CAAC,cAAc,CAAC;CACnF;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC;IAClH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAChF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5F,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACpE"}
@@ -1,8 +1,7 @@
1
1
  import { UserRoleValidator } from '@authup/core-kit';
2
2
  import type { UserRole } from '@authup/core-kit';
3
- import type { ActorContext } from '../actor/types.ts';
4
- import { AbstractEntityService } from '../service.ts';
5
- import type { EntityRepositoryFindManyResult } from '../types.ts';
3
+ import type { ActorContext, EntityRepositoryFindManyResult } from '@authup/server-kit';
4
+ import { AbstractEntityService } from '@authup/server-kit';
6
5
  import type { IIdentityPermissionProvider } from '../../identity/permission/types.ts';
7
6
  import type { IUserRoleRepository, IUserRoleService } from './types.ts';
8
7
  export type UserRoleServiceContext = {
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-role/service.ts"],"names":[],"mappings":"AASA,OAAO,EAAkB,iBAAiB,EAAkB,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAExE,MAAM,MAAM,sBAAsB,GAAG;IACjC,UAAU,EAAE,mBAAmB,CAAC;IAChC,0BAA0B,EAAE,2BAA2B,CAAC;CAC3D,CAAC;AAEF,qBAAa,eAAgB,SAAQ,qBAAsB,YAAW,gBAAgB;IAClF,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAE1C,SAAS,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;IAElE,SAAS,CAAC,SAAS,EAAE,iBAAiB,CAAC;gBAE3B,GAAG,EAAE,sBAAsB;IAOjC,OAAO,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAY9C,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,QAAQ,CAAC;IAiBd,MAAM,CACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,QAAQ,CAAC;IAmDd,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,QAAQ,CAAC;CAmBvB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-role/service.ts"],"names":[],"mappings":"AAUA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAG,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAExE,MAAM,MAAM,sBAAsB,GAAG;IACjC,UAAU,EAAE,mBAAmB,CAAC;IAChC,0BAA0B,EAAE,2BAA2B,CAAC;CAC3D,CAAC;AAEF,qBAAa,eAAgB,SAAQ,qBAAsB,YAAW,gBAAgB;IAClF,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAE1C,SAAS,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;IAElE,SAAS,CAAC,SAAS,EAAE,iBAAiB,CAAC;gBAE3B,GAAG,EAAE,sBAAsB;IAOjC,OAAO,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAY9C,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,QAAQ,CAAC;IAiBd,MAAM,CACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,QAAQ,CAAC;IAmDd,MAAM,CACR,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,QAAQ,CAAC;CAmBvB"}
@@ -1,7 +1,8 @@
1
- import { AbstractEntityService } from "../service.mjs";
2
- import { PermissionName, UserRoleValidator, ValidatorGroup } from "@authup/core-kit";
3
- import { BuiltInPolicyType, PolicyData } from "@authup/access";
4
- import { ConflictError, ForbiddenError, NotFoundError } from "@ebec/http";
1
+ import { PermissionName, UserRoleValidator } from "@authup/core-kit";
2
+ import { AbstractEntityService } from "@authup/server-kit";
3
+ import { ValidatorGroup } from "@authup/kit";
4
+ import { BuiltInPolicyType, PermissionError, PolicyData } from "@authup/access";
5
+ import { EntityConflictError, EntityNotFoundError } from "@authup/errors";
5
6
  //#region src/core/entities/user-role/service.ts
6
7
  var UserRoleService = class extends AbstractEntityService {
7
8
  repository;
@@ -28,7 +29,7 @@ var UserRoleService = class extends AbstractEntityService {
28
29
  PermissionName.USER_ROLE_UPDATE
29
30
  ] });
30
31
  const entity = await this.repository.findOneBy({ id });
31
- if (!entity) throw new NotFoundError();
32
+ if (!entity) throw new EntityNotFoundError();
32
33
  return entity;
33
34
  }
34
35
  async create(data, actor) {
@@ -38,7 +39,7 @@ var UserRoleService = class extends AbstractEntityService {
38
39
  if (await this.repository.findOneBy({
39
40
  role_id: validated.role_id,
40
41
  user_id: validated.user_id
41
- })) throw new ConflictError("The user-role assignment already exists.");
42
+ })) throw new EntityConflictError({ entity: "user-role" });
42
43
  if (validated.role) validated.role_realm_id = validated.role.realm_id;
43
44
  if (validated.user) validated.user_realm_id = validated.user.realm_id;
44
45
  if (validated.role && actor.identity) {
@@ -49,7 +50,7 @@ var UserRoleService = class extends AbstractEntityService {
49
50
  type: "role",
50
51
  id: validated.role_id,
51
52
  clientId: validated.role.client_id
52
- })) throw new ForbiddenError("You don't own the required permissions.");
53
+ })) throw new PermissionError({ message: "You don't own the required permissions." });
53
54
  }
54
55
  await actor.permissionEvaluator.evaluate({
55
56
  name: PermissionName.USER_ROLE_CREATE,
@@ -62,7 +63,7 @@ var UserRoleService = class extends AbstractEntityService {
62
63
  async delete(id, actor) {
63
64
  await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_ROLE_DELETE });
64
65
  const entity = await this.repository.findOneBy({ id });
65
- if (!entity) throw new NotFoundError();
66
+ if (!entity) throw new EntityNotFoundError();
66
67
  await actor.permissionEvaluator.evaluate({
67
68
  name: PermissionName.USER_ROLE_DELETE,
68
69
  input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity })
@@ -1 +1 @@
1
- {"version":3,"file":"service.mjs","names":["BuiltInPolicyType","PolicyData","ConflictError","ForbiddenError","NotFoundError","PermissionName","UserRoleValidator","ValidatorGroup","AbstractEntityService","UserRoleService","repository","identityPermissionProvider","validator","ctx","getMany","query","actor","permissionEvaluator","preEvaluateOneOf","name","USER_ROLE_READ","USER_ROLE_CREATE","USER_ROLE_UPDATE","findMany","getOne","id","entity","findOneBy","create","data","preEvaluate","validated","run","group","CREATE","validateJoinColumns","existing","role_id","user_id","role","role_realm_id","realm_id","user","user_realm_id","identity","hasPermissions","isSuperset","type","clientId","client_id","evaluate","input","ATTRIBUTES","save","delete","USER_ROLE_DELETE","entityId","remove"],"sources":["../../../../src/core/entities/user-role/service.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 { BuiltInPolicyType, PolicyData } from '@authup/access';\nimport { ConflictError, ForbiddenError, NotFoundError } from '@ebec/http';\nimport { PermissionName, UserRoleValidator, ValidatorGroup } from '@authup/core-kit';\nimport type { UserRole } from '@authup/core-kit';\nimport type { ActorContext } from '../actor/types.ts';\nimport { AbstractEntityService } from '../service.ts';\nimport type { EntityRepositoryFindManyResult } from '../types.ts';\nimport type { IIdentityPermissionProvider } from '../../identity/permission/types.ts';\nimport type { IUserRoleRepository, IUserRoleService } from './types.ts';\n\nexport type UserRoleServiceContext = {\n repository: IUserRoleRepository;\n identityPermissionProvider: IIdentityPermissionProvider;\n};\n\nexport class UserRoleService extends AbstractEntityService implements IUserRoleService {\n protected repository: IUserRoleRepository;\n\n protected identityPermissionProvider: IIdentityPermissionProvider;\n\n protected validator: UserRoleValidator;\n\n constructor(ctx: UserRoleServiceContext) {\n super();\n this.repository = ctx.repository;\n this.identityPermissionProvider = ctx.identityPermissionProvider;\n this.validator = new UserRoleValidator();\n }\n\n async getMany(\n query: Record<string, any>,\n actor: ActorContext,\n ): Promise<EntityRepositoryFindManyResult<UserRole>> {\n await actor.permissionEvaluator.preEvaluateOneOf({\n name: [\n PermissionName.USER_ROLE_READ,\n PermissionName.USER_ROLE_CREATE,\n PermissionName.USER_ROLE_UPDATE,\n ],\n });\n\n return this.repository.findMany(query);\n }\n\n async getOne(\n id: string,\n actor: ActorContext,\n ): Promise<UserRole> {\n await actor.permissionEvaluator.preEvaluateOneOf({\n name: [\n PermissionName.USER_ROLE_READ,\n PermissionName.USER_ROLE_CREATE,\n PermissionName.USER_ROLE_UPDATE,\n ],\n });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new NotFoundError();\n }\n\n return entity;\n }\n\n async create(\n data: Record<string, any>,\n actor: ActorContext,\n ): Promise<UserRole> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_ROLE_CREATE });\n\n const validated = await this.validator.run(data, { group: ValidatorGroup.CREATE });\n\n await this.repository.validateJoinColumns(validated);\n\n const existing = await this.repository.findOneBy({\n role_id: validated.role_id,\n user_id: validated.user_id,\n });\n if (existing) {\n throw new ConflictError('The user-role assignment already exists.');\n }\n\n if (validated.role) {\n validated.role_realm_id = validated.role.realm_id;\n }\n\n if (validated.user) {\n validated.user_realm_id = validated.user.realm_id;\n }\n\n if (validated.role && actor.identity) {\n const hasPermissions = await this.identityPermissionProvider.isSuperset(\n {\n type: actor.identity.type,\n id: actor.identity.data.id,\n },\n {\n type: 'role',\n id: validated.role_id,\n clientId: validated.role.client_id,\n },\n );\n if (!hasPermissions) {\n throw new ForbiddenError('You don\\'t own the required permissions.');\n }\n }\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_ROLE_CREATE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: validated }),\n });\n\n let entity = this.repository.create(validated);\n entity = await this.repository.save(entity);\n\n return entity;\n }\n\n async delete(\n id: string,\n actor: ActorContext,\n ): Promise<UserRole> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_ROLE_DELETE });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new NotFoundError();\n }\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_ROLE_DELETE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity }),\n });\n\n const { id: entityId } = entity;\n await this.repository.remove(entity);\n entity.id = entityId;\n\n return entity;\n }\n}\n"],"mappings":";;;;;AAsBA,IAAaS,kBAAb,cAAqCD,sBAAAA;CACvBE;CAEAC;CAEAC;CAEV,YAAYC,KAA6B;AACrC,SAAK;AACL,OAAKH,aAAaG,IAAIH;AACtB,OAAKC,6BAA6BE,IAAIF;AACtC,OAAKC,YAAY,IAAIN,mBAAAA;;CAGzB,MAAMQ,QACFC,OACAC,OACiD;AACjD,QAAMA,MAAMC,oBAAoBC,iBAAiB,EAC7CC,MAAM;GACFd,eAAee;GACff,eAAegB;GACfhB,eAAeiB;GAClB,EACL,CAAA;AAEA,SAAO,KAAKZ,WAAWa,SAASR,MAAAA;;CAGpC,MAAMS,OACFC,IACAT,OACiB;AACjB,QAAMA,MAAMC,oBAAoBC,iBAAiB,EAC7CC,MAAM;GACFd,eAAee;GACff,eAAegB;GACfhB,eAAeiB;GAClB,EACL,CAAA;EAEA,MAAMI,SAAS,MAAM,KAAKhB,WAAWiB,UAAU,EAAEF,IAAG,CAAA;AACpD,MAAI,CAACC,OACD,OAAM,IAAItB,eAAAA;AAGd,SAAOsB;;CAGX,MAAME,OACFC,MACAb,OACiB;AACjB,QAAMA,MAAMC,oBAAoBa,YAAY,EAAEX,MAAMd,eAAegB,kBAAiB,CAAA;EAEpF,MAAMU,YAAY,MAAM,KAAKnB,UAAUoB,IAAIH,MAAM,EAAEI,OAAO1B,eAAe2B,QAAO,CAAA;AAEhF,QAAM,KAAKxB,WAAWyB,oBAAoBJ,UAAAA;AAM1C,MAAIK,MAJmB,KAAK1B,WAAWiB,UAAU;GAC7CU,SAASN,UAAUM;GACnBC,SAASP,UAAUO;GACvB,CAAA,CAEI,OAAM,IAAIpC,cAAc,2CAAA;AAG5B,MAAI6B,UAAUQ,KACVR,WAAUS,gBAAgBT,UAAUQ,KAAKE;AAG7C,MAAIV,UAAUW,KACVX,WAAUY,gBAAgBZ,UAAUW,KAAKD;AAG7C,MAAIV,UAAUQ,QAAQvB,MAAM4B;OAYpB,CAACC,MAXwB,KAAKlC,2BAA2BmC,WACzD;IACIC,MAAM/B,MAAM4B,SAASG;IACrBtB,IAAIT,MAAM4B,SAASf,KAAKJ;IAC5B,EACA;IACIsB,MAAM;IACNtB,IAAIM,UAAUM;IACdW,UAAUjB,UAAUQ,KAAKU;IAC7B,CAAA,CAGA,OAAM,IAAI9C,eAAe,0CAAA;;AAIjC,QAAMa,MAAMC,oBAAoBiC,SAAS;GACrC/B,MAAMd,eAAegB;GACrB8B,OAAO,IAAIlD,WAAW,GAAGD,kBAAkBoD,aAAarB,WAAU,CAAA;GACtE,CAAA;EAEA,IAAIL,SAAS,KAAKhB,WAAWkB,OAAOG,UAAAA;AACpCL,WAAS,MAAM,KAAKhB,WAAW2C,KAAK3B,OAAAA;AAEpC,SAAOA;;CAGX,MAAM4B,OACF7B,IACAT,OACiB;AACjB,QAAMA,MAAMC,oBAAoBa,YAAY,EAAEX,MAAMd,eAAekD,kBAAiB,CAAA;EAEpF,MAAM7B,SAAS,MAAM,KAAKhB,WAAWiB,UAAU,EAAEF,IAAG,CAAA;AACpD,MAAI,CAACC,OACD,OAAM,IAAItB,eAAAA;AAGd,QAAMY,MAAMC,oBAAoBiC,SAAS;GACrC/B,MAAMd,eAAekD;GACrBJ,OAAO,IAAIlD,WAAW,GAAGD,kBAAkBoD,aAAa1B,QAAO,CAAA;GACnE,CAAA;EAEA,MAAM,EAAED,IAAI+B,aAAa9B;AACzB,QAAM,KAAKhB,WAAW+C,OAAO/B,OAAAA;AAC7BA,SAAOD,KAAK+B;AAEZ,SAAO9B"}
1
+ {"version":3,"file":"service.mjs","names":["BuiltInPolicyType","PermissionError","PolicyData","EntityConflictError","EntityNotFoundError","ValidatorGroup","PermissionName","UserRoleValidator","AbstractEntityService","UserRoleService","repository","identityPermissionProvider","validator","ctx","getMany","query","actor","permissionEvaluator","preEvaluateOneOf","name","USER_ROLE_READ","USER_ROLE_CREATE","USER_ROLE_UPDATE","findMany","getOne","id","entity","findOneBy","create","data","preEvaluate","validated","run","group","CREATE","validateJoinColumns","existing","role_id","user_id","role","role_realm_id","realm_id","user","user_realm_id","identity","hasPermissions","isSuperset","type","clientId","client_id","message","evaluate","input","ATTRIBUTES","save","delete","USER_ROLE_DELETE","entityId","remove"],"sources":["../../../../src/core/entities/user-role/service.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 { BuiltInPolicyType, PermissionError, PolicyData } from '@authup/access';\nimport { EntityConflictError, EntityNotFoundError } from '@authup/errors';\nimport { ValidatorGroup } from '@authup/kit';\nimport { PermissionName, UserRoleValidator } from '@authup/core-kit';\nimport type { UserRole } from '@authup/core-kit';\nimport type { ActorContext, EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport { AbstractEntityService } from '@authup/server-kit';\nimport type { IIdentityPermissionProvider } from '../../identity/permission/types.ts';\nimport type { IUserRoleRepository, IUserRoleService } from './types.ts';\n\nexport type UserRoleServiceContext = {\n repository: IUserRoleRepository;\n identityPermissionProvider: IIdentityPermissionProvider;\n};\n\nexport class UserRoleService extends AbstractEntityService implements IUserRoleService {\n protected repository: IUserRoleRepository;\n\n protected identityPermissionProvider: IIdentityPermissionProvider;\n\n protected validator: UserRoleValidator;\n\n constructor(ctx: UserRoleServiceContext) {\n super();\n this.repository = ctx.repository;\n this.identityPermissionProvider = ctx.identityPermissionProvider;\n this.validator = new UserRoleValidator();\n }\n\n async getMany(\n query: Record<string, any>,\n actor: ActorContext,\n ): Promise<EntityRepositoryFindManyResult<UserRole>> {\n await actor.permissionEvaluator.preEvaluateOneOf({\n name: [\n PermissionName.USER_ROLE_READ,\n PermissionName.USER_ROLE_CREATE,\n PermissionName.USER_ROLE_UPDATE,\n ],\n });\n\n return this.repository.findMany(query);\n }\n\n async getOne(\n id: string,\n actor: ActorContext,\n ): Promise<UserRole> {\n await actor.permissionEvaluator.preEvaluateOneOf({\n name: [\n PermissionName.USER_ROLE_READ,\n PermissionName.USER_ROLE_CREATE,\n PermissionName.USER_ROLE_UPDATE,\n ],\n });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new EntityNotFoundError();\n }\n\n return entity;\n }\n\n async create(\n data: Record<string, any>,\n actor: ActorContext,\n ): Promise<UserRole> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_ROLE_CREATE });\n\n const validated = await this.validator.run(data, { group: ValidatorGroup.CREATE });\n\n await this.repository.validateJoinColumns(validated);\n\n const existing = await this.repository.findOneBy({\n role_id: validated.role_id,\n user_id: validated.user_id,\n });\n if (existing) {\n throw new EntityConflictError({ entity: 'user-role' });\n }\n\n if (validated.role) {\n validated.role_realm_id = validated.role.realm_id;\n }\n\n if (validated.user) {\n validated.user_realm_id = validated.user.realm_id;\n }\n\n if (validated.role && actor.identity) {\n const hasPermissions = await this.identityPermissionProvider.isSuperset(\n {\n type: actor.identity.type,\n id: actor.identity.data.id,\n },\n {\n type: 'role',\n id: validated.role_id,\n clientId: validated.role.client_id,\n },\n );\n if (!hasPermissions) {\n throw new PermissionError({ message: 'You don\\'t own the required permissions.' });\n }\n }\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_ROLE_CREATE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: validated }),\n });\n\n let entity = this.repository.create(validated);\n entity = await this.repository.save(entity);\n\n return entity;\n }\n\n async delete(\n id: string,\n actor: ActorContext,\n ): Promise<UserRole> {\n await actor.permissionEvaluator.preEvaluate({ name: PermissionName.USER_ROLE_DELETE });\n\n const entity = await this.repository.findOneBy({ id });\n if (!entity) {\n throw new EntityNotFoundError();\n }\n\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.USER_ROLE_DELETE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity }),\n });\n\n const { id: entityId } = entity;\n await this.repository.remove(entity);\n entity.id = entityId;\n\n return entity;\n }\n}\n"],"mappings":";;;;;;AAsBA,IAAaS,kBAAb,cAAqCD,sBAAAA;CACvBE;CAEAC;CAEAC;CAEV,YAAYC,KAA6B;EACrC,MAAK;EACL,KAAKH,aAAaG,IAAIH;EACtB,KAAKC,6BAA6BE,IAAIF;EACtC,KAAKC,YAAY,IAAIL,kBAAAA;CACzB;CAEA,MAAMO,QACFC,OACAC,OACiD;EACjD,MAAMA,MAAMC,oBAAoBC,iBAAiB,EAC7CC,MAAM;GACFb,eAAec;GACfd,eAAee;GACff,eAAegB;IAEvB,CAAA;EAEA,OAAO,KAAKZ,WAAWa,SAASR,KAAAA;CACpC;CAEA,MAAMS,OACFC,IACAT,OACiB;EACjB,MAAMA,MAAMC,oBAAoBC,iBAAiB,EAC7CC,MAAM;GACFb,eAAec;GACfd,eAAee;GACff,eAAegB;IAEvB,CAAA;EAEA,MAAMI,SAAS,MAAM,KAAKhB,WAAWiB,UAAU,EAAEF,GAAG,CAAA;EACpD,IAAI,CAACC,QACD,MAAM,IAAItB,oBAAAA;EAGd,OAAOsB;CACX;CAEA,MAAME,OACFC,MACAb,OACiB;EACjB,MAAMA,MAAMC,oBAAoBa,YAAY,EAAEX,MAAMb,eAAee,iBAAiB,CAAA;EAEpF,MAAMU,YAAY,MAAM,KAAKnB,UAAUoB,IAAIH,MAAM,EAAEI,OAAO5B,eAAe6B,OAAO,CAAA;EAEhF,MAAM,KAAKxB,WAAWyB,oBAAoBJ,SAAAA;EAM1C,IAAIK,MAJmB,KAAK1B,WAAWiB,UAAU;GAC7CU,SAASN,UAAUM;GACnBC,SAASP,UAAUO;EACvB,CAAA,GAEI,MAAM,IAAInC,oBAAoB,EAAEuB,QAAQ,YAAY,CAAA;EAGxD,IAAIK,UAAUQ,MACVR,UAAUS,gBAAgBT,UAAUQ,KAAKE;EAG7C,IAAIV,UAAUW,MACVX,UAAUY,gBAAgBZ,UAAUW,KAAKD;EAG7C,IAAIV,UAAUQ,QAAQvB,MAAM4B;OAYpB,CAACC,MAXwB,KAAKlC,2BAA2BmC,WACzD;IACIC,MAAM/B,MAAM4B,SAASG;IACrBtB,IAAIT,MAAM4B,SAASf,KAAKJ;GAC5B,GACA;IACIsB,MAAM;IACNtB,IAAIM,UAAUM;IACdW,UAAUjB,UAAUQ,KAAKU;GAC7B,CAAA,GAGA,MAAM,IAAIhD,gBAAgB,EAAEiD,SAAS,0CAA2C,CAAA;EAAA;EAIxF,MAAMlC,MAAMC,oBAAoBkC,SAAS;GACrChC,MAAMb,eAAee;GACrB+B,OAAO,IAAIlD,WAAW,GAAGF,kBAAkBqD,aAAatB,UAAU,CAAA;EACtE,CAAA;EAEA,IAAIL,SAAS,KAAKhB,WAAWkB,OAAOG,SAAAA;EACpCL,SAAS,MAAM,KAAKhB,WAAW4C,KAAK5B,MAAAA;EAEpC,OAAOA;CACX;CAEA,MAAM6B,OACF9B,IACAT,OACiB;EACjB,MAAMA,MAAMC,oBAAoBa,YAAY,EAAEX,MAAMb,eAAekD,iBAAiB,CAAA;EAEpF,MAAM9B,SAAS,MAAM,KAAKhB,WAAWiB,UAAU,EAAEF,GAAG,CAAA;EACpD,IAAI,CAACC,QACD,MAAM,IAAItB,oBAAAA;EAGd,MAAMY,MAAMC,oBAAoBkC,SAAS;GACrChC,MAAMb,eAAekD;GACrBJ,OAAO,IAAIlD,WAAW,GAAGF,kBAAkBqD,aAAa3B,OAAO,CAAA;EACnE,CAAA;EAEA,MAAM,EAAED,IAAIgC,aAAa/B;EACzB,MAAM,KAAKhB,WAAWgD,OAAOhC,MAAAA;EAC7BA,OAAOD,KAAKgC;EAEZ,OAAO/B;CACX;AACJ"}
@@ -1,6 +1,5 @@
1
1
  import type { UserRole } from '@authup/core-kit';
2
- import type { ActorContext } from '../actor/types.ts';
3
- import type { EntityRepositoryFindManyResult, IEntityRepository } from '../types.ts';
2
+ import type { ActorContext, EntityRepositoryFindManyResult, IEntityRepository } from '@authup/server-kit';
4
3
  export interface IUserRoleRepository extends IEntityRepository<UserRole> {
5
4
  }
6
5
  export interface IUserRoleService {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-role/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB,CAAC,QAAQ,CAAC;CACvE;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5G,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC9D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/entities/user-role/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAE,iBAAiB,EAAG,MAAM,oBAAoB,CAAC;AAE3G,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB,CAAC,QAAQ,CAAC;CACvE;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5G,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC9D"}
@@ -1,6 +1,7 @@
1
1
  export * from './entities/index.ts';
2
2
  export * from './password-recovery/index.ts';
3
3
  export * from './permission/index.ts';
4
+ export * from './policy/index.ts';
4
5
  export * from './provider/index.ts';
5
6
  export * from './registration/index.ts';
6
7
  export * from './resolver/index.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/identity/index.ts"],"names":[],"mappings":"AAOA,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/identity/index.ts"],"names":[],"mappings":"AAOA,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { PasswordRecoveryService } from "./password-recovery/service.mjs";
2
2
  import "./password-recovery/index.mjs";
3
+ import { PermissionCheckerService } from "./permission/checker/service.mjs";
3
4
  import { IdentityPermissionProvider } from "./permission/module.mjs";
4
5
  import "./permission/index.mjs";
6
+ import { PolicyCheckerService } from "./policy/checker/service.mjs";
7
+ import "./policy/index.mjs";
5
8
  import { IdentityProviderMapperOperation } from "./provider/mapper/constants.mjs";
6
9
  import { IdentityProviderAccountBaseMapper } from "./provider/mapper/base.mjs";
7
10
  import { IdentityProviderAttributeMapper } from "./provider/mapper/attributes/module.mjs";
@@ -25,4 +28,4 @@ import "./registration/index.mjs";
25
28
  import { IdentityResolver } from "./resolver/module.mjs";
26
29
  import "./resolver/index.mjs";
27
30
  import { IdentityRoleProvider } from "./role/module.mjs";
28
- export { IDENTITY_PROVIDER_LDAP_COLLECTION_AUTHENTICATOR_TOKEN, IdentityPermissionProvider, IdentityProviderAccountBaseMapper, IdentityProviderAccountManager, IdentityProviderAttributeMapper, IdentityProviderFacebookAuthenticator, IdentityProviderGithubAuthenticator, IdentityProviderGoogleAuthenticator, IdentityProviderInstagramAuthenticator, IdentityProviderLdapAuthenticator, IdentityProviderLdapCollectionAuthenticator, IdentityProviderMapperOperation, IdentityProviderOAuth2Authenticator, IdentityProviderOpenIDAuthenticator, IdentityProviderPaypalAuthenticator, IdentityProviderPermissionMapper, IdentityProviderRoleMapper, IdentityResolver, IdentityRoleProvider, PasswordRecoveryService, RegistrationService, createIdentityProviderOAuth2Authenticator };
31
+ export { IDENTITY_PROVIDER_LDAP_COLLECTION_AUTHENTICATOR_TOKEN, IdentityPermissionProvider, IdentityProviderAccountBaseMapper, IdentityProviderAccountManager, IdentityProviderAttributeMapper, IdentityProviderFacebookAuthenticator, IdentityProviderGithubAuthenticator, IdentityProviderGoogleAuthenticator, IdentityProviderInstagramAuthenticator, IdentityProviderLdapAuthenticator, IdentityProviderLdapCollectionAuthenticator, IdentityProviderMapperOperation, IdentityProviderOAuth2Authenticator, IdentityProviderOpenIDAuthenticator, IdentityProviderPaypalAuthenticator, IdentityProviderPermissionMapper, IdentityProviderRoleMapper, IdentityResolver, IdentityRoleProvider, PasswordRecoveryService, PermissionCheckerService, PolicyCheckerService, RegistrationService, createIdentityProviderOAuth2Authenticator };
@@ -0,0 +1,7 @@
1
+ import { type PasswordRecoveryDisabledError } from './disabled.ts';
2
+ import { type EmailVerificationRequiredError } from './email-verification-required.ts';
3
+ import { type ResetTokenExpiredError } from './token-expired.ts';
4
+ export declare function isPasswordRecoveryDisabledError(input: unknown): input is PasswordRecoveryDisabledError;
5
+ export declare function isEmailVerificationRequiredError(input: unknown): input is EmailVerificationRequiredError;
6
+ export declare function isResetTokenExpiredError(input: unknown): input is ResetTokenExpiredError;
7
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/core/identity/password-recovery/check.ts"],"names":[],"mappings":"AAQA,OAAO,EAA6C,KAAK,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,EAA8C,KAAK,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACnI,OAAO,EAAsC,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAErG,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,6BAA6B,CAItG;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,8BAA8B,CAIxG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAIxF"}
@@ -0,0 +1,24 @@
1
+ import { PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE } from "./disabled.mjs";
2
+ import { EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE } from "./email-verification-required.mjs";
3
+ import { RESET_TOKEN_EXPIRED_ERROR_INSTANCE } from "./token-expired.mjs";
4
+ import { ErrorCode, hasInstanceof, isAuthupError } from "@authup/errors";
5
+ //#region src/core/identity/password-recovery/check.ts
6
+ function isPasswordRecoveryDisabledError(input) {
7
+ if (hasInstanceof(input, PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE)) return true;
8
+ if (!isAuthupError(input)) return false;
9
+ return input.code === ErrorCode.PASSWORD_RECOVERY_DISABLED;
10
+ }
11
+ function isEmailVerificationRequiredError(input) {
12
+ if (hasInstanceof(input, EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE)) return true;
13
+ if (!isAuthupError(input)) return false;
14
+ return input.code === ErrorCode.EMAIL_VERIFICATION_REQUIRED;
15
+ }
16
+ function isResetTokenExpiredError(input) {
17
+ if (hasInstanceof(input, RESET_TOKEN_EXPIRED_ERROR_INSTANCE)) return true;
18
+ if (!isAuthupError(input)) return false;
19
+ return input.code === ErrorCode.RESET_TOKEN_EXPIRED;
20
+ }
21
+ //#endregion
22
+ export { isEmailVerificationRequiredError, isPasswordRecoveryDisabledError, isResetTokenExpiredError };
23
+
24
+ //# sourceMappingURL=check.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.mjs","names":["ErrorCode","hasInstanceof","isAuthupError","PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE","EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE","RESET_TOKEN_EXPIRED_ERROR_INSTANCE","isPasswordRecoveryDisabledError","input","code","PASSWORD_RECOVERY_DISABLED","isEmailVerificationRequiredError","EMAIL_VERIFICATION_REQUIRED","isResetTokenExpiredError","RESET_TOKEN_EXPIRED"],"sources":["../../../../src/core/identity/password-recovery/check.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode, hasInstanceof, isAuthupError } from '@authup/errors';\nimport { PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE, type PasswordRecoveryDisabledError } from './disabled.ts';\nimport { EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE, type EmailVerificationRequiredError } from './email-verification-required.ts';\nimport { RESET_TOKEN_EXPIRED_ERROR_INSTANCE, type ResetTokenExpiredError } from './token-expired.ts';\n\nexport function isPasswordRecoveryDisabledError(input: unknown): input is PasswordRecoveryDisabledError {\n if (hasInstanceof(input, PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.PASSWORD_RECOVERY_DISABLED;\n}\n\nexport function isEmailVerificationRequiredError(input: unknown): input is EmailVerificationRequiredError {\n if (hasInstanceof(input, EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.EMAIL_VERIFICATION_REQUIRED;\n}\n\nexport function isResetTokenExpiredError(input: unknown): input is ResetTokenExpiredError {\n if (hasInstanceof(input, RESET_TOKEN_EXPIRED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.RESET_TOKEN_EXPIRED;\n}\n"],"mappings":";;;;;AAYA,SAAgBM,gCAAgCC,OAAc;CAC1D,IAAIN,cAAcM,OAAOJ,yCAAAA,GAA4C,OAAO;CAC5E,IAAI,CAACD,cAAcK,KAAAA,GAAQ,OAAO;CAClC,OAAOA,MAAMC,SAASR,UAAUS;AACpC;AAEA,SAAgBC,iCAAiCH,OAAc;CAC3D,IAAIN,cAAcM,OAAOH,0CAAAA,GAA6C,OAAO;CAC7E,IAAI,CAACF,cAAcK,KAAAA,GAAQ,OAAO;CAClC,OAAOA,MAAMC,SAASR,UAAUW;AACpC;AAEA,SAAgBC,yBAAyBL,OAAc;CACnD,IAAIN,cAAcM,OAAOF,kCAAAA,GAAqC,OAAO;CACrE,IAAI,CAACH,cAAcK,KAAAA,GAAQ,OAAO;CAClC,OAAOA,MAAMC,SAASR,UAAUa;AACpC"}
@@ -0,0 +1,6 @@
1
+ import { BadRequestError } from '@authup/errors';
2
+ export declare const PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE: unique symbol;
3
+ export declare class PasswordRecoveryDisabledError extends BadRequestError {
4
+ constructor();
5
+ }
6
+ //# sourceMappingURL=disabled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disabled.d.ts","sourceRoot":"","sources":["../../../../src/core/identity/password-recovery/disabled.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAA6B,MAAM,gBAAgB,CAAC;AAE5E,eAAO,MAAM,yCAAyC,eAAkE,CAAC;AAEzH,qBAAa,6BAA8B,SAAQ,eAAe;;CAQjE"}
@@ -0,0 +1,16 @@
1
+ import { BadRequestError, ErrorCode, markInstanceof } from "@authup/errors";
2
+ //#region src/core/identity/password-recovery/disabled.ts
3
+ const PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE = Symbol.for("@authup/server-core/PasswordRecoveryDisabledError");
4
+ var PasswordRecoveryDisabledError = class extends BadRequestError {
5
+ constructor() {
6
+ super({
7
+ code: ErrorCode.PASSWORD_RECOVERY_DISABLED,
8
+ message: "Password recovery is not enabled."
9
+ });
10
+ markInstanceof(this, PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE);
11
+ }
12
+ };
13
+ //#endregion
14
+ export { PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE, PasswordRecoveryDisabledError };
15
+
16
+ //# sourceMappingURL=disabled.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disabled.mjs","names":["BadRequestError","ErrorCode","markInstanceof","PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE","Symbol","for","PasswordRecoveryDisabledError","code","PASSWORD_RECOVERY_DISABLED","message"],"sources":["../../../../src/core/identity/password-recovery/disabled.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError, ErrorCode, markInstanceof } from '@authup/errors';\n\nexport const PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE = Symbol.for('@authup/server-core/PasswordRecoveryDisabledError');\n\nexport class PasswordRecoveryDisabledError extends BadRequestError {\n constructor() {\n super({\n code: ErrorCode.PASSWORD_RECOVERY_DISABLED,\n message: 'Password recovery is not enabled.',\n });\n markInstanceof(this, PASSWORD_RECOVERY_DISABLED_ERROR_INSTANCE);\n }\n}\n"],"mappings":";;AASA,MAAaG,4CAA4CC,OAAOC,IAAI,mDAAA;AAEpE,IAAaC,gCAAb,cAAmDN,gBAAAA;CAC/C,cAAc;EACV,MAAM;GACFO,MAAMN,UAAUO;GAChBC,SAAS;EACb,CAAA;EACAP,eAAe,MAAMC,yCAAAA;CACzB;AACJ"}
@@ -0,0 +1,6 @@
1
+ import { BadRequestError } from '@authup/errors';
2
+ export declare const EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE: unique symbol;
3
+ export declare class EmailVerificationRequiredError extends BadRequestError {
4
+ constructor(message?: string);
5
+ }
6
+ //# sourceMappingURL=email-verification-required.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-verification-required.d.ts","sourceRoot":"","sources":["../../../../src/core/identity/password-recovery/email-verification-required.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAA6B,MAAM,gBAAgB,CAAC;AAE5E,eAAO,MAAM,0CAA0C,eAAmE,CAAC;AAE3H,qBAAa,8BAA+B,SAAQ,eAAe;gBACnD,OAAO,GAAE,MAA0C;CAOlE"}
@@ -0,0 +1,16 @@
1
+ import { BadRequestError, ErrorCode, markInstanceof } from "@authup/errors";
2
+ //#region src/core/identity/password-recovery/email-verification-required.ts
3
+ const EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE = Symbol.for("@authup/server-core/EmailVerificationRequiredError");
4
+ var EmailVerificationRequiredError = class extends BadRequestError {
5
+ constructor(message = "Email verification is required.") {
6
+ super({
7
+ code: ErrorCode.EMAIL_VERIFICATION_REQUIRED,
8
+ message
9
+ });
10
+ markInstanceof(this, EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE);
11
+ }
12
+ };
13
+ //#endregion
14
+ export { EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE, EmailVerificationRequiredError };
15
+
16
+ //# sourceMappingURL=email-verification-required.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-verification-required.mjs","names":["BadRequestError","ErrorCode","markInstanceof","EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE","Symbol","for","EmailVerificationRequiredError","message","code","EMAIL_VERIFICATION_REQUIRED"],"sources":["../../../../src/core/identity/password-recovery/email-verification-required.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError, ErrorCode, markInstanceof } from '@authup/errors';\n\nexport const EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE = Symbol.for('@authup/server-core/EmailVerificationRequiredError');\n\nexport class EmailVerificationRequiredError extends BadRequestError {\n constructor(message: string = 'Email verification is required.') {\n super({\n code: ErrorCode.EMAIL_VERIFICATION_REQUIRED,\n message,\n });\n markInstanceof(this, EMAIL_VERIFICATION_REQUIRED_ERROR_INSTANCE);\n }\n}\n"],"mappings":";;AASA,MAAaG,6CAA6CC,OAAOC,IAAI,oDAAA;AAErE,IAAaC,iCAAb,cAAoDN,gBAAAA;CAChD,YAAYO,UAAkB,mCAAmC;EAC7D,MAAM;GACFC,MAAMP,UAAUQ;GAChBF;EACJ,CAAA;EACAL,eAAe,MAAMC,0CAAAA;CACzB;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/identity/password-recovery/service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACR,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,EAC9B,8BAA8B,EAC9B,mBAAmB,EACtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEjF,qBAAa,uBAAwB,YAAW,wBAAwB;IACpE,SAAS,CAAC,OAAO,EAAE,8BAA8B,CAAC;IAElD,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC;IAEtC,SAAS,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAE5C,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC;gBAEtB,GAAG,EAAE,8BAA8B;IAOzC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsDxE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;YA0C9D,0BAA0B;YA8C1B,yBAAyB;CA2E1C"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/identity/password-recovery/service.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACR,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,EAC9B,8BAA8B,EAC9B,mBAAmB,EACtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEjF,qBAAa,uBAAwB,YAAW,wBAAwB;IACpE,SAAS,CAAC,OAAO,EAAE,8BAA8B,CAAC;IAElD,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC;IAEtC,SAAS,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAE5C,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC;gBAEtB,GAAG,EAAE,8BAA8B;IAOzC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsDxE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;YA0C9D,0BAA0B;YA8C1B,yBAAyB;CA2E1C"}
@@ -1,5 +1,8 @@
1
1
  import { UserCredentialsService } from "../../authentication/credential/entities/user/module.mjs";
2
- import { BadRequestError, NotFoundError } from "@ebec/http";
2
+ import { PasswordRecoveryDisabledError } from "./disabled.mjs";
3
+ import { EmailVerificationRequiredError } from "./email-verification-required.mjs";
4
+ import { ResetTokenExpiredError } from "./token-expired.mjs";
5
+ import { BadRequestError, EntityNotFoundError } from "@authup/errors";
3
6
  import { Container } from "validup";
4
7
  import { createValidationChain, createValidator } from "@validup/adapter-validator";
5
8
  import { randomBytes } from "node:crypto";
@@ -16,8 +19,8 @@ var PasswordRecoveryService = class {
16
19
  this.mailClient = ctx.mailClient;
17
20
  }
18
21
  async forgotPassword(data) {
19
- if (!this.options.passwordRecoveryEnabled) throw new BadRequestError("Password recovery is not enabled.");
20
- if (!this.options.emailVerificationEnabled) throw new BadRequestError("Email verification is not enabled, but required to reset a password.");
22
+ if (!this.options.passwordRecoveryEnabled) throw new PasswordRecoveryDisabledError();
23
+ if (!this.options.emailVerificationEnabled) throw new EmailVerificationRequiredError("Email verification is not enabled, but required to reset a password.");
21
24
  const validated = await this.runForgotPasswordValidator(data);
22
25
  const realm = await this.realmRepository.resolve(validated.realm_id, true);
23
26
  const where = {
@@ -26,7 +29,7 @@ var PasswordRecoveryService = class {
26
29
  realm_id: realm.id
27
30
  };
28
31
  const entity = await this.repository.findOneByWithEmail(where);
29
- if (!entity) throw new NotFoundError();
32
+ if (!entity) throw new EntityNotFoundError();
30
33
  const merged = this.repository.merge(entity, {
31
34
  reset_expires: new Date(Date.now() + 1e3 * 60 * 30).toISOString(),
32
35
  reset_hash: randomBytes(32).toString("hex")
@@ -52,7 +55,7 @@ var PasswordRecoveryService = class {
52
55
  return { reset_expires: merged.reset_expires };
53
56
  }
54
57
  async resetPassword(data) {
55
- if (!this.options.passwordRecoveryEnabled) throw new BadRequestError("Password recovery is not enabled.");
58
+ if (!this.options.passwordRecoveryEnabled) throw new PasswordRecoveryDisabledError();
56
59
  const validated = await this.runResetPasswordValidator(data);
57
60
  await this.repository.validateJoinColumns(validated);
58
61
  const realm = await this.realmRepository.resolve(validated.realm_id, true);
@@ -63,8 +66,8 @@ var PasswordRecoveryService = class {
63
66
  realm_id: realm.id
64
67
  };
65
68
  const entity = await this.repository.findOneBy(where);
66
- if (!entity) throw new NotFoundError();
67
- if (!entity.reset_expires || new Date(entity.reset_expires) < /* @__PURE__ */ new Date()) throw new BadRequestError("Reset token has expired.");
69
+ if (!entity) throw new EntityNotFoundError();
70
+ if (!entity.reset_expires || new Date(entity.reset_expires) < /* @__PURE__ */ new Date()) throw new ResetTokenExpiredError();
68
71
  const hashedPassword = await new UserCredentialsService().protect(validated.password);
69
72
  const merged = this.repository.merge(entity, {
70
73
  reset_at: (/* @__PURE__ */ new Date()).toISOString(),
@@ -1 +1 @@
1
- {"version":3,"file":"service.mjs","names":["BadRequestError","NotFoundError","createValidationChain","createValidator","randomBytes","Container","UserCredentialsService","PasswordRecoveryService","options","repository","realmRepository","mailClient","ctx","forgotPassword","data","passwordRecoveryEnabled","emailVerificationEnabled","validated","runForgotPasswordValidator","realm","resolve","realm_id","where","name","email","id","entity","findOneByWithEmail","merged","merge","reset_expires","Date","now","toISOString","reset_hash","toString","save","send","to","subject","html","resetPassword","runResetPasswordValidator","validateJoinColumns","token","findOneBy","credentialsService","hashedPassword","protect","password","reset_at","validator","oneOfContainer","oneOf","mount","chain","exists","notEmpty","trim","toLowerCase","isEmail","matches","withMessage","isString","optional","isUUID","values","run","isLength","min","max"],"sources":["../../../../src/core/identity/password-recovery/service.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 { BadRequestError, NotFoundError } from '@ebec/http';\nimport { createValidationChain, createValidator } from '@validup/adapter-validator';\nimport { randomBytes } from 'node:crypto';\nimport { Container } from 'validup';\nimport { UserCredentialsService } from '../../authentication/credential/entities/user/module.ts';\nimport type {\n IPasswordRecoveryService,\n PasswordForgotResult,\n PasswordRecoveryServiceContext,\n PasswordRecoveryServiceOptions,\n PasswordResetResult,\n} from './types.ts';\nimport type { IMailClient } from '../../mail/types.ts';\nimport type { IRealmRepository, IUserRepository } from '../../entities/index.ts';\n\nexport class PasswordRecoveryService implements IPasswordRecoveryService {\n protected options: PasswordRecoveryServiceOptions;\n\n protected repository: IUserRepository;\n\n protected realmRepository: IRealmRepository;\n\n protected mailClient: IMailClient;\n\n constructor(ctx: PasswordRecoveryServiceContext) {\n this.options = ctx.options;\n this.repository = ctx.repository;\n this.realmRepository = ctx.realmRepository;\n this.mailClient = ctx.mailClient;\n }\n\n async forgotPassword(data: Record<string, any>): Promise<PasswordForgotResult> {\n if (!this.options.passwordRecoveryEnabled) {\n throw new BadRequestError('Password recovery is not enabled.');\n }\n\n if (!this.options.emailVerificationEnabled) {\n throw new BadRequestError('Email verification is not enabled, but required to reset a password.');\n }\n\n const validated = await this.runForgotPasswordValidator(data);\n\n const realm = await this.realmRepository.resolve(validated.realm_id, true);\n\n const where: Record<string, any> = {\n ...(validated.name ? { name: validated.name } : {}),\n ...(validated.email ? { email: validated.email } : {}),\n realm_id: realm.id,\n };\n\n const entity = await this.repository.findOneByWithEmail(where);\n\n if (!entity) {\n throw new NotFoundError();\n }\n\n const merged = this.repository.merge(entity, {\n reset_expires: new Date(Date.now() + (1000 * 60 * 30)).toISOString(),\n reset_hash: randomBytes(32).toString('hex'),\n });\n\n await this.repository.save(merged);\n\n try {\n await this.mailClient.send({\n to: entity.email,\n subject: 'Forgot Password - Reset code',\n html: `\n <p>Please use the code below to reset your account password.</p>\n <p>${merged.reset_hash}</p>\n `,\n });\n } catch {\n this.repository.merge(merged, {\n reset_hash: null,\n reset_expires: null,\n });\n await this.repository.save(merged);\n\n throw new BadRequestError('Password recovery failed. Could not send reset email.');\n }\n\n return { reset_expires: merged.reset_expires! };\n }\n\n async resetPassword(data: Record<string, any>): Promise<PasswordResetResult> {\n if (!this.options.passwordRecoveryEnabled) {\n throw new BadRequestError('Password recovery is not enabled.');\n }\n\n const validated = await this.runResetPasswordValidator(data);\n\n await this.repository.validateJoinColumns(validated);\n\n const realm = await this.realmRepository.resolve(validated.realm_id, true);\n\n const where: Record<string, any> = {\n ...(validated.name ? { name: validated.name } : {}),\n ...(validated.email ? { email: validated.email } : {}),\n reset_hash: validated.token,\n realm_id: realm.id,\n };\n\n const entity = await this.repository.findOneBy(where);\n if (!entity) {\n throw new NotFoundError();\n }\n\n if (!entity.reset_expires || new Date(entity.reset_expires) < new Date()) {\n throw new BadRequestError('Reset token has expired.');\n }\n\n const credentialsService = new UserCredentialsService();\n const hashedPassword = await credentialsService.protect(validated.password);\n\n const merged = this.repository.merge(entity, {\n reset_at: new Date().toISOString(),\n reset_hash: null,\n reset_expires: null,\n password: hashedPassword,\n });\n\n await this.repository.save(merged);\n\n return { reset_at: merged.reset_at! };\n }\n\n private async runForgotPasswordValidator(data: Record<string, any>) {\n const validator = new Container<any>({});\n\n const oneOfContainer = new Container({ oneOf: true });\n\n oneOfContainer.mount('email', createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .trim()\n .toLowerCase()\n .isEmail()\n .matches(/^[^A-Z]+$/)\n .withMessage('Email must be lowercase.');\n }));\n\n oneOfContainer.mount(\n 'name',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .isString()\n .trim()\n .toLowerCase();\n }),\n );\n\n validator.mount(oneOfContainer);\n\n validator.mount(\n 'realm_id',\n { optional: true },\n createValidator(() => {\n const chain = createValidationChain();\n return chain.exists()\n .isUUID()\n .optional({ values: 'null' });\n }),\n );\n\n return validator.run(data);\n }\n\n private async runResetPasswordValidator(data: Record<string, any>) {\n const validator = new Container<any>({});\n\n const oneOfContainer = new Container({ oneOf: true });\n oneOfContainer.mount(\n 'email',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .trim()\n .toLowerCase()\n .isEmail()\n .matches(/^[^A-Z]+$/)\n .withMessage('Email must be lowercase.');\n }),\n );\n oneOfContainer.mount(\n 'name',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .isString()\n .trim()\n .toLowerCase();\n }),\n );\n\n validator.mount(oneOfContainer);\n\n validator.mount(\n 'realm_id',\n { optional: true },\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .isUUID()\n .optional({ values: 'null' });\n }),\n );\n\n validator.mount(\n 'token',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .isLength({\n min: 3,\n max: 256, \n });\n }),\n );\n\n validator.mount(\n 'password',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .isLength({\n min: 5,\n max: 512, \n });\n }),\n );\n\n return validator.run(data);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"service.mjs","names":["BadRequestError","EntityNotFoundError","PasswordRecoveryDisabledError","EmailVerificationRequiredError","ResetTokenExpiredError","createValidationChain","createValidator","randomBytes","Container","UserCredentialsService","PasswordRecoveryService","options","repository","realmRepository","mailClient","ctx","forgotPassword","data","passwordRecoveryEnabled","emailVerificationEnabled","validated","runForgotPasswordValidator","realm","resolve","realm_id","where","name","email","id","entity","findOneByWithEmail","merged","merge","reset_expires","Date","now","toISOString","reset_hash","toString","save","send","to","subject","html","resetPassword","runResetPasswordValidator","validateJoinColumns","token","findOneBy","credentialsService","hashedPassword","protect","password","reset_at","validator","oneOfContainer","oneOf","mount","chain","exists","notEmpty","trim","toLowerCase","isEmail","matches","withMessage","isString","optional","isUUID","values","run","isLength","min","max"],"sources":["../../../../src/core/identity/password-recovery/service.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 { BadRequestError, EntityNotFoundError } from '@authup/errors';\nimport { PasswordRecoveryDisabledError } from './disabled.ts';\nimport { EmailVerificationRequiredError } from './email-verification-required.ts';\nimport { ResetTokenExpiredError } from './token-expired.ts';\nimport { createValidationChain, createValidator } from '@validup/adapter-validator';\nimport { randomBytes } from 'node:crypto';\nimport { Container } from 'validup';\nimport { UserCredentialsService } from '../../authentication/credential/entities/user/module.ts';\nimport type {\n IPasswordRecoveryService,\n PasswordForgotResult,\n PasswordRecoveryServiceContext,\n PasswordRecoveryServiceOptions,\n PasswordResetResult,\n} from './types.ts';\nimport type { IMailClient } from '../../mail/types.ts';\nimport type { IRealmRepository, IUserRepository } from '../../entities/index.ts';\n\nexport class PasswordRecoveryService implements IPasswordRecoveryService {\n protected options: PasswordRecoveryServiceOptions;\n\n protected repository: IUserRepository;\n\n protected realmRepository: IRealmRepository;\n\n protected mailClient: IMailClient;\n\n constructor(ctx: PasswordRecoveryServiceContext) {\n this.options = ctx.options;\n this.repository = ctx.repository;\n this.realmRepository = ctx.realmRepository;\n this.mailClient = ctx.mailClient;\n }\n\n async forgotPassword(data: Record<string, any>): Promise<PasswordForgotResult> {\n if (!this.options.passwordRecoveryEnabled) {\n throw new PasswordRecoveryDisabledError();\n }\n\n if (!this.options.emailVerificationEnabled) {\n throw new EmailVerificationRequiredError('Email verification is not enabled, but required to reset a password.');\n }\n\n const validated = await this.runForgotPasswordValidator(data);\n\n const realm = await this.realmRepository.resolve(validated.realm_id, true);\n\n const where: Record<string, any> = {\n ...(validated.name ? { name: validated.name } : {}),\n ...(validated.email ? { email: validated.email } : {}),\n realm_id: realm.id,\n };\n\n const entity = await this.repository.findOneByWithEmail(where);\n\n if (!entity) {\n throw new EntityNotFoundError();\n }\n\n const merged = this.repository.merge(entity, {\n reset_expires: new Date(Date.now() + (1000 * 60 * 30)).toISOString(),\n reset_hash: randomBytes(32).toString('hex'),\n });\n\n await this.repository.save(merged);\n\n try {\n await this.mailClient.send({\n to: entity.email,\n subject: 'Forgot Password - Reset code',\n html: `\n <p>Please use the code below to reset your account password.</p>\n <p>${merged.reset_hash}</p>\n `,\n });\n } catch {\n this.repository.merge(merged, {\n reset_hash: null,\n reset_expires: null,\n });\n await this.repository.save(merged);\n\n throw new BadRequestError('Password recovery failed. Could not send reset email.');\n }\n\n return { reset_expires: merged.reset_expires! };\n }\n\n async resetPassword(data: Record<string, any>): Promise<PasswordResetResult> {\n if (!this.options.passwordRecoveryEnabled) {\n throw new PasswordRecoveryDisabledError();\n }\n\n const validated = await this.runResetPasswordValidator(data);\n\n await this.repository.validateJoinColumns(validated);\n\n const realm = await this.realmRepository.resolve(validated.realm_id, true);\n\n const where: Record<string, any> = {\n ...(validated.name ? { name: validated.name } : {}),\n ...(validated.email ? { email: validated.email } : {}),\n reset_hash: validated.token,\n realm_id: realm.id,\n };\n\n const entity = await this.repository.findOneBy(where);\n if (!entity) {\n throw new EntityNotFoundError();\n }\n\n if (!entity.reset_expires || new Date(entity.reset_expires) < new Date()) {\n throw new ResetTokenExpiredError();\n }\n\n const credentialsService = new UserCredentialsService();\n const hashedPassword = await credentialsService.protect(validated.password);\n\n const merged = this.repository.merge(entity, {\n reset_at: new Date().toISOString(),\n reset_hash: null,\n reset_expires: null,\n password: hashedPassword,\n });\n\n await this.repository.save(merged);\n\n return { reset_at: merged.reset_at! };\n }\n\n private async runForgotPasswordValidator(data: Record<string, any>) {\n const validator = new Container<any>({});\n\n const oneOfContainer = new Container({ oneOf: true });\n\n oneOfContainer.mount('email', createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .trim()\n .toLowerCase()\n .isEmail()\n .matches(/^[^A-Z]+$/)\n .withMessage('Email must be lowercase.');\n }));\n\n oneOfContainer.mount(\n 'name',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .isString()\n .trim()\n .toLowerCase();\n }),\n );\n\n validator.mount(oneOfContainer);\n\n validator.mount(\n 'realm_id',\n { optional: true },\n createValidator(() => {\n const chain = createValidationChain();\n return chain.exists()\n .isUUID()\n .optional({ values: 'null' });\n }),\n );\n\n return validator.run(data);\n }\n\n private async runResetPasswordValidator(data: Record<string, any>) {\n const validator = new Container<any>({});\n\n const oneOfContainer = new Container({ oneOf: true });\n oneOfContainer.mount(\n 'email',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .trim()\n .toLowerCase()\n .isEmail()\n .matches(/^[^A-Z]+$/)\n .withMessage('Email must be lowercase.');\n }),\n );\n oneOfContainer.mount(\n 'name',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .isString()\n .trim()\n .toLowerCase();\n }),\n );\n\n validator.mount(oneOfContainer);\n\n validator.mount(\n 'realm_id',\n { optional: true },\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .isUUID()\n .optional({ values: 'null' });\n }),\n );\n\n validator.mount(\n 'token',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .isLength({\n min: 3,\n max: 256, \n });\n }),\n );\n\n validator.mount(\n 'password',\n createValidator(() => {\n const chain = createValidationChain();\n return chain\n .exists()\n .notEmpty()\n .isLength({\n min: 5,\n max: 512, \n });\n }),\n );\n\n return validator.run(data);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { BadRequestError } from '@authup/errors';
2
+ export declare const RESET_TOKEN_EXPIRED_ERROR_INSTANCE: unique symbol;
3
+ export declare class ResetTokenExpiredError extends BadRequestError {
4
+ constructor();
5
+ }
6
+ //# sourceMappingURL=token-expired.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-expired.d.ts","sourceRoot":"","sources":["../../../../src/core/identity/password-recovery/token-expired.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAA6B,MAAM,gBAAgB,CAAC;AAE5E,eAAO,MAAM,kCAAkC,eAA2D,CAAC;AAE3G,qBAAa,sBAAuB,SAAQ,eAAe;;CAQ1D"}
@@ -0,0 +1,16 @@
1
+ import { BadRequestError, ErrorCode, markInstanceof } from "@authup/errors";
2
+ //#region src/core/identity/password-recovery/token-expired.ts
3
+ const RESET_TOKEN_EXPIRED_ERROR_INSTANCE = Symbol.for("@authup/server-core/ResetTokenExpiredError");
4
+ var ResetTokenExpiredError = class extends BadRequestError {
5
+ constructor() {
6
+ super({
7
+ code: ErrorCode.RESET_TOKEN_EXPIRED,
8
+ message: "Reset token has expired."
9
+ });
10
+ markInstanceof(this, RESET_TOKEN_EXPIRED_ERROR_INSTANCE);
11
+ }
12
+ };
13
+ //#endregion
14
+ export { RESET_TOKEN_EXPIRED_ERROR_INSTANCE, ResetTokenExpiredError };
15
+
16
+ //# sourceMappingURL=token-expired.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-expired.mjs","names":["BadRequestError","ErrorCode","markInstanceof","RESET_TOKEN_EXPIRED_ERROR_INSTANCE","Symbol","for","ResetTokenExpiredError","code","RESET_TOKEN_EXPIRED","message"],"sources":["../../../../src/core/identity/password-recovery/token-expired.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError, ErrorCode, markInstanceof } from '@authup/errors';\n\nexport const RESET_TOKEN_EXPIRED_ERROR_INSTANCE = Symbol.for('@authup/server-core/ResetTokenExpiredError');\n\nexport class ResetTokenExpiredError extends BadRequestError {\n constructor() {\n super({\n code: ErrorCode.RESET_TOKEN_EXPIRED,\n message: 'Reset token has expired.',\n });\n markInstanceof(this, RESET_TOKEN_EXPIRED_ERROR_INSTANCE);\n }\n}\n"],"mappings":";;AASA,MAAaG,qCAAqCC,OAAOC,IAAI,4CAAA;AAE7D,IAAaC,yBAAb,cAA4CN,gBAAAA;CACxC,cAAc;EACV,MAAM;GACFO,MAAMN,UAAUO;GAChBC,SAAS;EACb,CAAA;EACAP,eAAe,MAAMC,kCAAAA;CACzB;AACJ"}
@@ -0,0 +1,3 @@
1
+ export * from './service.ts';
2
+ export * from './types.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/identity/permission/checker/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { PermissionCheckerService } from "./service.mjs";
2
+ export { PermissionCheckerService };