@tinyrack/issuary-server 0.30.0 → 0.32.1

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 (478) hide show
  1. package/dist/entities/auth-budget.entity.d.ts +20 -0
  2. package/dist/entities/auth-budget.entity.d.ts.map +1 -0
  3. package/dist/entities/auth-budget.entity.js +11 -0
  4. package/dist/entities/auth-budget.entity.js.map +1 -0
  5. package/dist/entities/browser-session.entity.d.ts +32 -0
  6. package/dist/entities/browser-session.entity.d.ts.map +1 -0
  7. package/dist/entities/browser-session.entity.js +12 -0
  8. package/dist/entities/browser-session.entity.js.map +1 -0
  9. package/dist/entities/email-verification.entity.d.ts +18 -0
  10. package/dist/entities/email-verification.entity.d.ts.map +1 -1
  11. package/dist/entities/email-verification.entity.js +2 -0
  12. package/dist/entities/email-verification.entity.js.map +1 -1
  13. package/dist/entities/oauth-client.entity.d.ts +120 -0
  14. package/dist/entities/oauth-client.entity.d.ts.map +1 -1
  15. package/dist/entities/oauth-code.entity.d.ts +120 -0
  16. package/dist/entities/oauth-code.entity.d.ts.map +1 -1
  17. package/dist/entities/oauth-code.entity.js +3 -0
  18. package/dist/entities/oauth-code.entity.js.map +1 -1
  19. package/dist/entities/oauth-device-code.entity.d.ts +120 -0
  20. package/dist/entities/oauth-device-code.entity.d.ts.map +1 -1
  21. package/dist/entities/oauth-device-code.entity.js +3 -0
  22. package/dist/entities/oauth-device-code.entity.js.map +1 -1
  23. package/dist/entities/oauth-grant.entity.d.ts +52 -0
  24. package/dist/entities/oauth-grant.entity.d.ts.map +1 -0
  25. package/dist/entities/oauth-grant.entity.js +19 -0
  26. package/dist/entities/oauth-grant.entity.js.map +1 -0
  27. package/dist/entities/password-reset.entity.d.ts +18 -0
  28. package/dist/entities/password-reset.entity.d.ts.map +1 -1
  29. package/dist/entities/password-reset.entity.js +2 -0
  30. package/dist/entities/password-reset.entity.js.map +1 -1
  31. package/dist/entities/pending-oauth-registration.entity.d.ts +9 -0
  32. package/dist/entities/pending-oauth-registration.entity.d.ts.map +1 -1
  33. package/dist/entities/pending-oauth-registration.entity.js +1 -0
  34. package/dist/entities/pending-oauth-registration.entity.js.map +1 -1
  35. package/dist/entities/revoked-token.entity.d.ts +120 -0
  36. package/dist/entities/revoked-token.entity.d.ts.map +1 -1
  37. package/dist/entities/terms-content.entity.d.ts +36 -0
  38. package/dist/entities/terms-content.entity.d.ts.map +1 -1
  39. package/dist/entities/terms.entity.d.ts +36 -0
  40. package/dist/entities/terms.entity.d.ts.map +1 -1
  41. package/dist/entities/user-consent.entity.d.ts +120 -0
  42. package/dist/entities/user-consent.entity.d.ts.map +1 -1
  43. package/dist/entities/user-terms-consent.entity.d.ts +36 -0
  44. package/dist/entities/user-terms-consent.entity.d.ts.map +1 -1
  45. package/dist/entities/user-totp-recovery-code.entity.d.ts +36 -0
  46. package/dist/entities/user-totp-recovery-code.entity.d.ts.map +1 -1
  47. package/dist/entities/user-totp.entity.d.ts +36 -0
  48. package/dist/entities/user-totp.entity.d.ts.map +1 -1
  49. package/dist/entities/user-totp.entity.js +1 -0
  50. package/dist/entities/user-totp.entity.js.map +1 -1
  51. package/dist/entities/user.entity.d.ts +36 -0
  52. package/dist/entities/user.entity.d.ts.map +1 -1
  53. package/dist/entities/user.entity.js +3 -0
  54. package/dist/entities/user.entity.js.map +1 -1
  55. package/dist/entrypoints/app.d.ts +438 -424
  56. package/dist/entrypoints/app.d.ts.map +1 -1
  57. package/dist/entrypoints/app.js +78 -6
  58. package/dist/entrypoints/app.js.map +1 -1
  59. package/dist/entrypoints/database/postgres/compiled-functions.d.ts +326 -200
  60. package/dist/entrypoints/database/postgres/compiled-functions.js +1849 -518
  61. package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
  62. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +326 -200
  63. package/dist/entrypoints/database/sqlite/compiled-functions.js +1849 -518
  64. package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
  65. package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -1
  66. package/dist/entrypoints/database/sqlite/sqlite.js +1 -0
  67. package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -1
  68. package/dist/entrypoints/scheduler/database.d.ts +3 -1
  69. package/dist/entrypoints/scheduler/database.d.ts.map +1 -1
  70. package/dist/entrypoints/scheduler/database.js +13 -2
  71. package/dist/entrypoints/scheduler/database.js.map +1 -1
  72. package/dist/entrypoints/scheduler/distributed-runner.d.ts +4 -0
  73. package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -1
  74. package/dist/entrypoints/scheduler/distributed-runner.js +26 -1
  75. package/dist/entrypoints/scheduler/distributed-runner.js.map +1 -1
  76. package/dist/lib/config/client.js +1 -1
  77. package/dist/lib/config/client.js.map +1 -1
  78. package/dist/lib/config/email.d.ts +1 -0
  79. package/dist/lib/config/email.d.ts.map +1 -1
  80. package/dist/lib/config/email.js.map +1 -1
  81. package/dist/lib/database/entities.d.ts.map +1 -1
  82. package/dist/lib/database/entities.js +6 -0
  83. package/dist/lib/database/entities.js.map +1 -1
  84. package/dist/lib/openapi.d.ts +2 -0
  85. package/dist/lib/openapi.d.ts.map +1 -1
  86. package/dist/lib/openapi.js +36 -1
  87. package/dist/lib/openapi.js.map +1 -1
  88. package/dist/lib/request-ip.d.ts +4 -0
  89. package/dist/lib/request-ip.d.ts.map +1 -0
  90. package/dist/lib/request-ip.js +39 -0
  91. package/dist/lib/request-ip.js.map +1 -0
  92. package/dist/middleware/auth-budget.d.ts +3 -0
  93. package/dist/middleware/auth-budget.d.ts.map +1 -0
  94. package/dist/middleware/auth-budget.js +80 -0
  95. package/dist/middleware/auth-budget.js.map +1 -0
  96. package/dist/middleware/session.d.ts +23 -5
  97. package/dist/middleware/session.d.ts.map +1 -1
  98. package/dist/middleware/session.js +152 -12
  99. package/dist/middleware/session.js.map +1 -1
  100. package/dist/middleware/strict-input.d.ts +4 -0
  101. package/dist/middleware/strict-input.d.ts.map +1 -0
  102. package/dist/middleware/strict-input.js +144 -0
  103. package/dist/middleware/strict-input.js.map +1 -0
  104. package/dist/migrations/postgres/Migration20260910120000_api_security.d.ts +6 -0
  105. package/dist/migrations/postgres/Migration20260910120000_api_security.d.ts.map +1 -0
  106. package/dist/migrations/postgres/Migration20260910120000_api_security.js +20 -0
  107. package/dist/migrations/postgres/Migration20260910120000_api_security.js.map +1 -0
  108. package/dist/migrations/postgres/Migration20260910160000_security_followup.d.ts +6 -0
  109. package/dist/migrations/postgres/Migration20260910160000_security_followup.d.ts.map +1 -0
  110. package/dist/migrations/postgres/Migration20260910160000_security_followup.js +23 -0
  111. package/dist/migrations/postgres/Migration20260910160000_security_followup.js.map +1 -0
  112. package/dist/migrations/postgres/Migration20260910200000_authentication_epoch.d.ts +6 -0
  113. package/dist/migrations/postgres/Migration20260910200000_authentication_epoch.d.ts.map +1 -0
  114. package/dist/migrations/postgres/Migration20260910200000_authentication_epoch.js +28 -0
  115. package/dist/migrations/postgres/Migration20260910200000_authentication_epoch.js.map +1 -0
  116. package/dist/migrations/postgres/Migration20260910220000_flow_revocation.d.ts +6 -0
  117. package/dist/migrations/postgres/Migration20260910220000_flow_revocation.d.ts.map +1 -0
  118. package/dist/migrations/postgres/Migration20260910220000_flow_revocation.js +19 -0
  119. package/dist/migrations/postgres/Migration20260910220000_flow_revocation.js.map +1 -0
  120. package/dist/migrations/postgres/index.d.ts.map +1 -1
  121. package/dist/migrations/postgres/index.js +8 -0
  122. package/dist/migrations/postgres/index.js.map +1 -1
  123. package/dist/migrations/sqlite/Migration20260910120000_api_security.d.ts +6 -0
  124. package/dist/migrations/sqlite/Migration20260910120000_api_security.d.ts.map +1 -0
  125. package/dist/migrations/sqlite/Migration20260910120000_api_security.js +20 -0
  126. package/dist/migrations/sqlite/Migration20260910120000_api_security.js.map +1 -0
  127. package/dist/migrations/sqlite/Migration20260910160000_security_followup.d.ts +6 -0
  128. package/dist/migrations/sqlite/Migration20260910160000_security_followup.d.ts.map +1 -0
  129. package/dist/migrations/sqlite/Migration20260910160000_security_followup.js +23 -0
  130. package/dist/migrations/sqlite/Migration20260910160000_security_followup.js.map +1 -0
  131. package/dist/migrations/sqlite/Migration20260910200000_authentication_epoch.d.ts +8 -0
  132. package/dist/migrations/sqlite/Migration20260910200000_authentication_epoch.d.ts.map +1 -0
  133. package/dist/migrations/sqlite/Migration20260910200000_authentication_epoch.js +72 -0
  134. package/dist/migrations/sqlite/Migration20260910200000_authentication_epoch.js.map +1 -0
  135. package/dist/migrations/sqlite/Migration20260910220000_flow_revocation.d.ts +6 -0
  136. package/dist/migrations/sqlite/Migration20260910220000_flow_revocation.d.ts.map +1 -0
  137. package/dist/migrations/sqlite/Migration20260910220000_flow_revocation.js +19 -0
  138. package/dist/migrations/sqlite/Migration20260910220000_flow_revocation.js.map +1 -0
  139. package/dist/migrations/sqlite/index.d.ts.map +1 -1
  140. package/dist/migrations/sqlite/index.js +8 -0
  141. package/dist/migrations/sqlite/index.js.map +1 -1
  142. package/dist/repositories/email-verification.repository.d.ts +1 -0
  143. package/dist/repositories/email-verification.repository.d.ts.map +1 -1
  144. package/dist/repositories/email-verification.repository.js +8 -17
  145. package/dist/repositories/email-verification.repository.js.map +1 -1
  146. package/dist/repositories/oauth-code.repository.d.ts +2 -0
  147. package/dist/repositories/oauth-code.repository.d.ts.map +1 -1
  148. package/dist/repositories/oauth-code.repository.js +8 -0
  149. package/dist/repositories/oauth-code.repository.js.map +1 -1
  150. package/dist/repositories/oauth-device-code.repository.d.ts +3 -0
  151. package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -1
  152. package/dist/repositories/oauth-device-code.repository.js +64 -29
  153. package/dist/repositories/oauth-device-code.repository.js.map +1 -1
  154. package/dist/repositories/password-reset.repository.d.ts +1 -0
  155. package/dist/repositories/password-reset.repository.d.ts.map +1 -1
  156. package/dist/repositories/password-reset.repository.js +6 -19
  157. package/dist/repositories/password-reset.repository.js.map +1 -1
  158. package/dist/repositories/pending-oauth-registration.repository.d.ts +2 -0
  159. package/dist/repositories/pending-oauth-registration.repository.d.ts.map +1 -1
  160. package/dist/repositories/pending-oauth-registration.repository.js +16 -2
  161. package/dist/repositories/pending-oauth-registration.repository.js.map +1 -1
  162. package/dist/repositories/terms.repository.d.ts.map +1 -1
  163. package/dist/repositories/terms.repository.js +1 -0
  164. package/dist/repositories/terms.repository.js.map +1 -1
  165. package/dist/repositories/user-consent.repository.d.ts.map +1 -1
  166. package/dist/repositories/user-consent.repository.js +9 -3
  167. package/dist/repositories/user-consent.repository.js.map +1 -1
  168. package/dist/repositories/user-terms-consent.repository.d.ts.map +1 -1
  169. package/dist/repositories/user-terms-consent.repository.js +2 -0
  170. package/dist/repositories/user-terms-consent.repository.js.map +1 -1
  171. package/dist/repositories/user-totp-recovery-code.repository.d.ts +24 -0
  172. package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -1
  173. package/dist/repositories/user-totp.repository.d.ts +36 -0
  174. package/dist/repositories/user-totp.repository.d.ts.map +1 -1
  175. package/dist/routes/.well-known/openid-configuration/get.d.ts.map +1 -1
  176. package/dist/routes/.well-known/openid-configuration/get.js +5 -1
  177. package/dist/routes/.well-known/openid-configuration/get.js.map +1 -1
  178. package/dist/routes/api/admin/console/index.d.ts.map +1 -1
  179. package/dist/routes/api/admin/console/index.js +29 -14
  180. package/dist/routes/api/admin/console/index.js.map +1 -1
  181. package/dist/routes/api/admin/me/get.js +2 -3
  182. package/dist/routes/api/admin/me/get.js.map +1 -1
  183. package/dist/routes/api/admin/users/index.d.ts.map +1 -1
  184. package/dist/routes/api/admin/users/index.js +59 -52
  185. package/dist/routes/api/admin/users/index.js.map +1 -1
  186. package/dist/routes/api/auth/accounts/select.post.d.ts +6 -6
  187. package/dist/routes/api/auth/email/resend/post.d.ts.map +1 -1
  188. package/dist/routes/api/auth/email/resend/post.js +3 -24
  189. package/dist/routes/api/auth/email/resend/post.js.map +1 -1
  190. package/dist/routes/api/auth/email/verify/post.d.ts.map +1 -1
  191. package/dist/routes/api/auth/email/verify/post.js +29 -12
  192. package/dist/routes/api/auth/email/verify/post.js.map +1 -1
  193. package/dist/routes/api/auth/login/post.d.ts.map +1 -1
  194. package/dist/routes/api/auth/login/post.js +4 -3
  195. package/dist/routes/api/auth/login/post.js.map +1 -1
  196. package/dist/routes/api/auth/passkey/verify/post.d.ts.map +1 -1
  197. package/dist/routes/api/auth/passkey/verify/post.js +25 -11
  198. package/dist/routes/api/auth/passkey/verify/post.js.map +1 -1
  199. package/dist/routes/api/auth/password/forgot/post.d.ts.map +1 -1
  200. package/dist/routes/api/auth/password/forgot/post.js +2 -19
  201. package/dist/routes/api/auth/password/forgot/post.js.map +1 -1
  202. package/dist/routes/api/auth/register/post.d.ts.map +1 -1
  203. package/dist/routes/api/auth/register/post.js +4 -3
  204. package/dist/routes/api/auth/register/post.js.map +1 -1
  205. package/dist/routes/api/auth/totp/recovery/verify/post.d.ts.map +1 -1
  206. package/dist/routes/api/auth/totp/recovery/verify/post.js +7 -5
  207. package/dist/routes/api/auth/totp/recovery/verify/post.js.map +1 -1
  208. package/dist/routes/api/auth/totp/verify/post.d.ts.map +1 -1
  209. package/dist/routes/api/auth/totp/verify/post.js +7 -5
  210. package/dist/routes/api/auth/totp/verify/post.js.map +1 -1
  211. package/dist/routes/api/consent/get.d.ts +3 -0
  212. package/dist/routes/api/consent/get.d.ts.map +1 -1
  213. package/dist/routes/api/consent/get.js +26 -4
  214. package/dist/routes/api/consent/get.js.map +1 -1
  215. package/dist/routes/api/consent/index.d.ts +3 -0
  216. package/dist/routes/api/consent/index.d.ts.map +1 -1
  217. package/dist/routes/api/consent/post.d.ts.map +1 -1
  218. package/dist/routes/api/consent/post.js +142 -114
  219. package/dist/routes/api/consent/post.js.map +1 -1
  220. package/dist/routes/api/docs/get.d.ts.map +1 -1
  221. package/dist/routes/api/docs/get.js +8 -1
  222. package/dist/routes/api/docs/get.js.map +1 -1
  223. package/dist/routes/api/index.d.ts +382 -379
  224. package/dist/routes/api/index.d.ts.map +1 -1
  225. package/dist/routes/api/oauth/_provider/authorize/get.d.ts.map +1 -1
  226. package/dist/routes/api/oauth/_provider/authorize/get.js +5 -1
  227. package/dist/routes/api/oauth/_provider/authorize/get.js.map +1 -1
  228. package/dist/routes/api/oauth/_provider/callback/get.d.ts.map +1 -1
  229. package/dist/routes/api/oauth/_provider/callback/get.js +30 -6
  230. package/dist/routes/api/oauth/_provider/callback/get.js.map +1 -1
  231. package/dist/routes/api/oauth/_provider/callback/post.d.ts +9 -9
  232. package/dist/routes/api/oauth/_provider/callback/post.d.ts.map +1 -1
  233. package/dist/routes/api/oauth/_provider/callback/post.js +31 -31
  234. package/dist/routes/api/oauth/_provider/callback/post.js.map +1 -1
  235. package/dist/routes/api/oauth/_provider/delete.d.ts.map +1 -1
  236. package/dist/routes/api/oauth/_provider/delete.js +14 -11
  237. package/dist/routes/api/oauth/_provider/delete.js.map +1 -1
  238. package/dist/routes/api/terms/consent/post.d.ts.map +1 -1
  239. package/dist/routes/api/terms/consent/post.js +59 -43
  240. package/dist/routes/api/terms/consent/post.js.map +1 -1
  241. package/dist/routes/api/user/delete.d.ts.map +1 -1
  242. package/dist/routes/api/user/delete.js +8 -8
  243. package/dist/routes/api/user/delete.js.map +1 -1
  244. package/dist/routes/api/user/passkeys/_id/delete.d.ts.map +1 -1
  245. package/dist/routes/api/user/passkeys/_id/delete.js +17 -29
  246. package/dist/routes/api/user/passkeys/_id/delete.js.map +1 -1
  247. package/dist/routes/api/user/passkeys/_id/patch.d.ts.map +1 -1
  248. package/dist/routes/api/user/passkeys/_id/patch.js +16 -13
  249. package/dist/routes/api/user/passkeys/_id/patch.js.map +1 -1
  250. package/dist/routes/api/user/passkeys/register/verify/post.d.ts.map +1 -1
  251. package/dist/routes/api/user/passkeys/register/verify/post.js +27 -19
  252. package/dist/routes/api/user/passkeys/register/verify/post.js.map +1 -1
  253. package/dist/routes/api/user/password/delete.d.ts.map +1 -1
  254. package/dist/routes/api/user/password/delete.js +13 -10
  255. package/dist/routes/api/user/password/delete.js.map +1 -1
  256. package/dist/routes/api/user/password/post.d.ts.map +1 -1
  257. package/dist/routes/api/user/password/post.js +13 -10
  258. package/dist/routes/api/user/password/post.js.map +1 -1
  259. package/dist/routes/api/user/password/put.d.ts.map +1 -1
  260. package/dist/routes/api/user/password/put.js +13 -10
  261. package/dist/routes/api/user/password/put.js.map +1 -1
  262. package/dist/routes/api/user/totp/confirm/post.d.ts.map +1 -1
  263. package/dist/routes/api/user/totp/confirm/post.js +33 -18
  264. package/dist/routes/api/user/totp/confirm/post.js.map +1 -1
  265. package/dist/routes/api/user/totp/delete.d.ts.map +1 -1
  266. package/dist/routes/api/user/totp/delete.js +13 -18
  267. package/dist/routes/api/user/totp/delete.js.map +1 -1
  268. package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts.map +1 -1
  269. package/dist/routes/api/user/totp/recovery/regenerate/post.js +13 -10
  270. package/dist/routes/api/user/totp/recovery/regenerate/post.js.map +1 -1
  271. package/dist/routes/api/user/totp/setup/post.d.ts.map +1 -1
  272. package/dist/routes/api/user/totp/setup/post.js +13 -8
  273. package/dist/routes/api/user/totp/setup/post.js.map +1 -1
  274. package/dist/routes/api/user/totp/verify/post.d.ts.map +1 -1
  275. package/dist/routes/api/user/totp/verify/post.js +23 -12
  276. package/dist/routes/api/user/totp/verify/post.js.map +1 -1
  277. package/dist/routes/index.d.ts +243 -230
  278. package/dist/routes/index.d.ts.map +1 -1
  279. package/dist/routes/oauth/authorize/get.d.ts.map +1 -1
  280. package/dist/routes/oauth/authorize/get.js +12 -4
  281. package/dist/routes/oauth/authorize/get.js.map +1 -1
  282. package/dist/routes/oauth/device/get-post.d.ts +10 -0
  283. package/dist/routes/oauth/device/get-post.d.ts.map +1 -1
  284. package/dist/routes/oauth/device/get-post.js +32 -3
  285. package/dist/routes/oauth/device/get-post.js.map +1 -1
  286. package/dist/routes/oauth/device-authorization/post.d.ts.map +1 -1
  287. package/dist/routes/oauth/device-authorization/post.js +13 -7
  288. package/dist/routes/oauth/device-authorization/post.js.map +1 -1
  289. package/dist/routes/oauth/end-session/get.d.ts +9 -9
  290. package/dist/routes/oauth/end-session/get.d.ts.map +1 -1
  291. package/dist/routes/oauth/end-session/get.js +2 -3
  292. package/dist/routes/oauth/end-session/get.js.map +1 -1
  293. package/dist/routes/oauth/index.d.ts +19 -9
  294. package/dist/routes/oauth/index.d.ts.map +1 -1
  295. package/dist/routes/oauth/revoke/post.d.ts.map +1 -1
  296. package/dist/routes/oauth/revoke/post.js +10 -2
  297. package/dist/routes/oauth/revoke/post.js.map +1 -1
  298. package/dist/routes/oauth/token/post.d.ts.map +1 -1
  299. package/dist/routes/oauth/token/post.js +69 -57
  300. package/dist/routes/oauth/token/post.js.map +1 -1
  301. package/dist/schemas/error.d.ts +75 -0
  302. package/dist/schemas/error.d.ts.map +1 -1
  303. package/dist/schemas/error.js +3 -0
  304. package/dist/schemas/error.js.map +1 -1
  305. package/dist/schemas/field.d.ts.map +1 -1
  306. package/dist/schemas/field.js +3 -0
  307. package/dist/schemas/field.js.map +1 -1
  308. package/dist/seeders/config.seeder.d.ts +1 -1
  309. package/dist/seeders/config.seeder.d.ts.map +1 -1
  310. package/dist/seeders/config.seeder.js +100 -36
  311. package/dist/seeders/config.seeder.js.map +1 -1
  312. package/dist/services/admin-console.service.d.ts.map +1 -1
  313. package/dist/services/admin-console.service.js +137 -100
  314. package/dist/services/admin-console.service.js.map +1 -1
  315. package/dist/services/auth-budget.service.d.ts +6 -0
  316. package/dist/services/auth-budget.service.d.ts.map +1 -0
  317. package/dist/services/auth-budget.service.js +30 -0
  318. package/dist/services/auth-budget.service.js.map +1 -0
  319. package/dist/services/authentication-epoch.d.ts +5 -0
  320. package/dist/services/authentication-epoch.d.ts.map +1 -0
  321. package/dist/services/authentication-epoch.js +22 -0
  322. package/dist/services/authentication-epoch.js.map +1 -0
  323. package/dist/services/authorization-browser.service.d.ts +18 -0
  324. package/dist/services/authorization-browser.service.d.ts.map +1 -0
  325. package/dist/services/authorization-browser.service.js +28 -0
  326. package/dist/services/authorization-browser.service.js.map +1 -0
  327. package/dist/services/browser-security.service.d.ts +14 -0
  328. package/dist/services/browser-security.service.d.ts.map +1 -0
  329. package/dist/services/browser-security.service.js +85 -0
  330. package/dist/services/browser-security.service.js.map +1 -0
  331. package/dist/services/browser-session.service.d.ts +25 -0
  332. package/dist/services/browser-session.service.d.ts.map +1 -0
  333. package/dist/services/browser-session.service.js +102 -0
  334. package/dist/services/browser-session.service.js.map +1 -0
  335. package/dist/services/cleanup.service.d.ts +1 -0
  336. package/dist/services/cleanup.service.d.ts.map +1 -1
  337. package/dist/services/cleanup.service.js +31 -0
  338. package/dist/services/cleanup.service.js.map +1 -1
  339. package/dist/services/client-security.d.ts +641 -0
  340. package/dist/services/client-security.d.ts.map +1 -0
  341. package/dist/services/client-security.js +10 -0
  342. package/dist/services/client-security.js.map +1 -0
  343. package/dist/services/container.d.ts +2 -0
  344. package/dist/services/container.d.ts.map +1 -1
  345. package/dist/services/container.js +7 -3
  346. package/dist/services/container.js.map +1 -1
  347. package/dist/services/email.service.d.ts +2 -14
  348. package/dist/services/email.service.d.ts.map +1 -1
  349. package/dist/services/email.service.js +35 -29
  350. package/dist/services/email.service.js.map +1 -1
  351. package/dist/services/jwt.service.d.ts +1 -0
  352. package/dist/services/jwt.service.d.ts.map +1 -1
  353. package/dist/services/jwt.service.js +13 -1
  354. package/dist/services/jwt.service.js.map +1 -1
  355. package/dist/services/mail-queue.service.d.ts +24 -0
  356. package/dist/services/mail-queue.service.d.ts.map +1 -0
  357. package/dist/services/mail-queue.service.js +223 -0
  358. package/dist/services/mail-queue.service.js.map +1 -0
  359. package/dist/services/mikro.service.d.ts.map +1 -1
  360. package/dist/services/mikro.service.js +2 -0
  361. package/dist/services/mikro.service.js.map +1 -1
  362. package/dist/services/oauth-authorize.service.d.ts +6 -1
  363. package/dist/services/oauth-authorize.service.d.ts.map +1 -1
  364. package/dist/services/oauth-authorize.service.js +136 -77
  365. package/dist/services/oauth-authorize.service.js.map +1 -1
  366. package/dist/services/oauth-browser-security.service.d.ts +7 -0
  367. package/dist/services/oauth-browser-security.service.d.ts.map +1 -0
  368. package/dist/services/oauth-browser-security.service.js +67 -0
  369. package/dist/services/oauth-browser-security.service.js.map +1 -0
  370. package/dist/services/oauth-client.service.d.ts +24 -1
  371. package/dist/services/oauth-client.service.d.ts.map +1 -1
  372. package/dist/services/oauth-client.service.js +52 -13
  373. package/dist/services/oauth-client.service.js.map +1 -1
  374. package/dist/services/oauth-connect.service.d.ts +37 -3
  375. package/dist/services/oauth-connect.service.d.ts.map +1 -1
  376. package/dist/services/oauth-connect.service.js +236 -212
  377. package/dist/services/oauth-connect.service.js.map +1 -1
  378. package/dist/services/oauth-token.service.d.ts +6 -4
  379. package/dist/services/oauth-token.service.d.ts.map +1 -1
  380. package/dist/services/oauth-token.service.js +295 -209
  381. package/dist/services/oauth-token.service.js.map +1 -1
  382. package/dist/services/passkey.service.d.ts +26 -7
  383. package/dist/services/passkey.service.d.ts.map +1 -1
  384. package/dist/services/passkey.service.js +71 -42
  385. package/dist/services/passkey.service.js.map +1 -1
  386. package/dist/services/password-auth.service.d.ts +5 -1
  387. package/dist/services/password-auth.service.d.ts.map +1 -1
  388. package/dist/services/password-auth.service.js +79 -52
  389. package/dist/services/password-auth.service.js.map +1 -1
  390. package/dist/services/password-reset.service.d.ts.map +1 -1
  391. package/dist/services/password-reset.service.js +34 -15
  392. package/dist/services/password-reset.service.js.map +1 -1
  393. package/dist/services/security.service.d.ts +3 -1
  394. package/dist/services/security.service.d.ts.map +1 -1
  395. package/dist/services/security.service.js +11 -2
  396. package/dist/services/security.service.js.map +1 -1
  397. package/dist/services/terms-policy.service.d.ts +7 -0
  398. package/dist/services/terms-policy.service.d.ts.map +1 -0
  399. package/dist/services/terms-policy.service.js +26 -0
  400. package/dist/services/terms-policy.service.js.map +1 -0
  401. package/dist/services/terms.service.d.ts.map +1 -1
  402. package/dist/services/terms.service.js +3 -2
  403. package/dist/services/terms.service.js.map +1 -1
  404. package/dist/services/totp.service.d.ts +4 -5
  405. package/dist/services/totp.service.d.ts.map +1 -1
  406. package/dist/services/totp.service.js +116 -86
  407. package/dist/services/totp.service.js.map +1 -1
  408. package/dist/services/user-consent.service.d.ts +12 -0
  409. package/dist/services/user-consent.service.d.ts.map +1 -1
  410. package/dist/services/user-consent.service.js +19 -1
  411. package/dist/services/user-consent.service.js.map +1 -1
  412. package/dist/services/user-security.service.d.ts +15 -0
  413. package/dist/services/user-security.service.d.ts.map +1 -0
  414. package/dist/services/user-security.service.js +57 -0
  415. package/dist/services/user-security.service.js.map +1 -0
  416. package/dist/services/user.service.d.ts +6 -4
  417. package/dist/services/user.service.d.ts.map +1 -1
  418. package/dist/services/user.service.js +143 -121
  419. package/dist/services/user.service.js.map +1 -1
  420. package/frontend/client/assets/{auth-layout-B4h13HhN.js → auth-layout-sea6nww4.js} +1 -1
  421. package/frontend/client/assets/{auth-page-header-BVY4zRzF.js → auth-page-header-CV85AJLW.js} +1 -1
  422. package/frontend/client/assets/document-navigation-FZbb5ldf.js +1 -0
  423. package/frontend/client/assets/i18n-vfKY-byx.js +1 -0
  424. package/frontend/client/assets/language-selector-Jso2cQNI.js +1 -0
  425. package/frontend/client/assets/manifest-90703545.js +1 -0
  426. package/frontend/client/assets/oauth-search-DebNssaC.js +1 -0
  427. package/frontend/client/assets/{passkey-CWcdr7Vy.js → passkey-CJhT-7yO.js} +1 -1
  428. package/frontend/client/assets/{promise-EbDcmV0j.js → promise-BP9iSIs-.js} +1 -1
  429. package/frontend/client/assets/{root-C2SlHCkE.js → root-BkavuloG.js} +1 -1
  430. package/frontend/client/assets/{route-3gQ9Nsqa.js → route-B0udr9eT.js} +1 -1
  431. package/frontend/client/assets/route-B3Uv9aTa.js +1 -0
  432. package/frontend/client/assets/{route-DSD60oyb.js → route-B6hIfgxz.js} +1 -1
  433. package/frontend/client/assets/{route-DO38I3ML.js → route-BEWds2g-.js} +1 -1
  434. package/frontend/client/assets/route-Bm9LsorH.js +1 -0
  435. package/frontend/client/assets/route-Btv5Y69z.js +1 -0
  436. package/frontend/client/assets/route-BvyDzziE.js +1 -0
  437. package/frontend/client/assets/route-C6kG9u7j.js +1 -0
  438. package/frontend/client/assets/route-C7C3Z0vI.js +1 -0
  439. package/frontend/client/assets/{route-DQpLeFuG.js → route-CVyefM3x.js} +1 -1
  440. package/frontend/client/assets/{route-CkpB3-_U.js → route-CXth2Wqz.js} +1 -1
  441. package/frontend/client/assets/{route-9FLiqn21.js → route-Clxc1C2d.js} +1 -1
  442. package/frontend/client/assets/route-D0IqOurp.js +1 -0
  443. package/frontend/client/assets/route-DHmYUnJR.js +1 -0
  444. package/frontend/client/assets/route-DTjZQ_Fl.js +1 -0
  445. package/frontend/client/assets/route-D_dTeu1b.js +1 -0
  446. package/frontend/client/assets/{route-CrswLAAa.js → route-Dj8gVemC.js} +1 -1
  447. package/frontend/client/assets/{route-BUM2hTU8.js → route-DnhPlHOi.js} +1 -1
  448. package/frontend/client/assets/route-FY92YQhF.js +1 -0
  449. package/frontend/client/assets/{route-DH6kQz8L.js → route-PcLpZHbT.js} +1 -1
  450. package/frontend/client/assets/{route-bKG0wKRh.js → route-qpE7i22X.js} +1 -1
  451. package/frontend/client/assets/{route-3IIrVTOK.js → route-wK89gmoS.js} +1 -1
  452. package/frontend/client/assets/security-error-message-CMsTsiWf.js +1 -0
  453. package/frontend/client/assets/{shell-header-bar-Bg85QIAq.js → shell-header-bar-DRx10tE5.js} +1 -1
  454. package/frontend/client/assets/{terms-DV0oDTRf.js → terms-Bu9Itxxs.js} +1 -1
  455. package/frontend/client/assets/{use-totp-setup-D7XZ6Nos.js → use-totp-setup-CoOXWOcT.js} +1 -1
  456. package/frontend/server/assets/{hydration-Cvbp7-6s.js → hydration-DWMjpNav.js} +1 -1
  457. package/frontend/server/assets/{root-loader.server-DaTcVcNU.js → root-loader.server-B4OqoLGG.js} +3 -3
  458. package/frontend/server/assets/{route-runtime.server-CEa264cW.js → route-runtime.server-03_pjVDT.js} +1 -1
  459. package/frontend/server/assets/{session-QqvIIQ6R.js → session-sJkmzJie.js} +51 -57
  460. package/frontend/server/index.js +337 -403
  461. package/package.json +1 -1
  462. package/frontend/client/assets/authorization-context-banner-az4f8FCY.js +0 -1
  463. package/frontend/client/assets/document-navigation-Cnp3Alf0.js +0 -1
  464. package/frontend/client/assets/i18n-CMepi_uj.js +0 -1
  465. package/frontend/client/assets/language-selector-Chn-k7Pw.js +0 -1
  466. package/frontend/client/assets/manifest-8c4a603f.js +0 -1
  467. package/frontend/client/assets/oauth-search-DybZ6VWp.js +0 -1
  468. package/frontend/client/assets/route-BFU8OK2a.js +0 -1
  469. package/frontend/client/assets/route-BKI6LDOW.js +0 -1
  470. package/frontend/client/assets/route-CusK9Y2K.js +0 -1
  471. package/frontend/client/assets/route-DEVG2czp.js +0 -1
  472. package/frontend/client/assets/route-DjCJn53Y.js +0 -1
  473. package/frontend/client/assets/route-E-_SSP-x.js +0 -1
  474. package/frontend/client/assets/route-J9z_OG4L.js +0 -1
  475. package/frontend/client/assets/route-LjqDZz5f.js +0 -1
  476. package/frontend/client/assets/route-N586tYcn.js +0 -1
  477. package/frontend/client/assets/route-nHjY3_n0.js +0 -1
  478. package/frontend/client/assets/route-sHm4cfOd.js +0 -1
@@ -2,11 +2,12 @@ import { Hono } from 'hono';
2
2
  import { describeRoute, resolver } from 'hono-openapi';
3
3
  import { z } from 'zod';
4
4
  import { calculatePermanentDeletionDate } from '../../../lib/duration.js';
5
- import { OPENAPI_SECURITY } from '../../../lib/openapi.js';
5
+ import { OPENAPI_SECURITY, securityMutationDocumentation, } from '../../../lib/openapi.js';
6
6
  import { TAGS } from '../../../lib/swagger-tags.js';
7
7
  import { verifyAuth } from '../../../middleware/auth.js';
8
8
  import { e } from '../../../schemas/error.js';
9
9
  import { r } from '../../../schemas/response.js';
10
+ import { withBrowserSecurity } from '../../../services/browser-security.service.js';
10
11
  /**
11
12
  * DELETE /api/user
12
13
  *
@@ -63,8 +64,8 @@ export const userDelete = new Hono().delete('/user', describeRoute({
63
64
  description: 'User not found',
64
65
  },
65
66
  },
66
- }), verifyAuth(), async (c) => {
67
- const { config, mikro } = c.var.services;
67
+ }), verifyAuth(), securityMutationDocumentation, async (c) => withBrowserSecurity(c, async () => {
68
+ const { config, userService } = c.var.services;
68
69
  const session = c.var.session;
69
70
  if (!config.account_deletion.enabled) {
70
71
  throw new e.AccountDeletionDisabled.Error();
@@ -76,14 +77,13 @@ export const userDelete = new Hono().delete('/user', describeRoute({
76
77
  if (userEntity.deleted_at !== null) {
77
78
  throw new e.AccountAlreadyDeleted.Error();
78
79
  }
79
- userEntity.deleted_at = new Date();
80
- await mikro.em.flush();
80
+ const { deleted_at } = await userService.requestDeletion(userEntity.sub);
81
81
  session.delete();
82
- const permanentDeletionDate = calculatePermanentDeletionDate(userEntity.deleted_at, config.account_deletion.retention);
82
+ const permanentDeletionDate = calculatePermanentDeletionDate(deleted_at, config.account_deletion.retention);
83
83
  return c.json({
84
84
  ok: true,
85
- deleted_at: userEntity.deleted_at.toISOString(),
85
+ deleted_at: deleted_at.toISOString(),
86
86
  permanent_deletion_at: permanentDeletionDate.toISOString(),
87
87
  }, 200);
88
- });
88
+ }));
89
89
  //# sourceMappingURL=delete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/routes/api/user/delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/routes/api/user/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,2BAA2B,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,8BAA8B,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,IAAI,EAAU,CAAC,MAAM,CACjD,OAAO,EACP,aAAa,CAAC;IACZ,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC,aAAa;IACxC,OAAO,EAAE,gBAAgB;IACzB,WAAW,EACT,iEAAiE;QACjE,4DAA4D;IAC9D,SAAS,EAAE;QACT,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC;iBAC5C;aACF;YACD,WAAW,EAAE,SAAS;SACvB;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC;iBACjD;aACF;YACD,WAAW,EAAE,yBAAyB;SACvC;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;iBACxC;aACF;YACD,WAAW,EAAE,cAAc;SAC5B;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CACd,CAAC,CAAC,KAAK,CAAC;wBACN,CAAC,CAAC,uBAAuB,CAAC,MAAM;wBAChC,CAAC,CAAC,eAAe,CAAC,MAAM;qBACzB,CAAC,CACH;iBACF;aACF;YACD,WAAW,EAAE,gDAAgD;SAC9D;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;iBACxC;aACF;YACD,WAAW,EAAE,gBAAgB;SAC9B;KACF;CACF,CAAC,EACF,UAAU,EAAE,EACZ,6BAA6B,EAC7B,KAAK,EAAE,CAAC,EAAE,EAAE,CACV,mBAAmB,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;IAChC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IAE9B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;IAEhD,IAAI,UAAU,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEzE,OAAO,CAAC,MAAM,EAAE,CAAC;IAEjB,MAAM,qBAAqB,GAAG,8BAA8B,CAC1D,UAAU,EACV,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAClC,CAAC;IAEF,OAAO,CAAC,CAAC,IAAI,CACX;QACE,EAAE,EAAE,IAAI;QACR,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;QACpC,qBAAqB,EAAE,qBAAqB,CAAC,WAAW,EAAE;KAC3D,EACD,GAAG,CACJ,CAAC;AACJ,CAAC,CAAC,CACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/user/passkeys/_id/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAQ5D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;6BA+F/B,CAAC"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/user/passkeys/_id/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAY5D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;6BA8E/B,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { Hono } from 'hono';
2
2
  import { describeRoute, resolver, validator } from 'hono-openapi';
3
3
  import { z } from 'zod';
4
- import { OPENAPI_SECURITY } from '../../../../../lib/openapi.js';
4
+ import { OPENAPI_SECURITY, securityMutationDocumentation, } from '../../../../../lib/openapi.js';
5
5
  import { TAGS } from '../../../../../lib/swagger-tags.js';
6
6
  import { verifyAuth } from '../../../../../middleware/auth.js';
7
7
  import { e } from '../../../../../schemas/error.js';
8
8
  import { f } from '../../../../../schemas/field.js';
9
9
  import { r } from '../../../../../schemas/response.js';
10
+ import { withBrowserSecurity } from '../../../../../services/browser-security.service.js';
10
11
  export const userPasskeyIdDelete = new Hono().delete('/user/passkeys/:id', describeRoute({
11
12
  tags: [TAGS.USER],
12
13
  security: OPENAPI_SECURITY.cookieSession,
@@ -54,34 +55,21 @@ export const userPasskeyIdDelete = new Hono().delete('/user/passkeys/:id', descr
54
55
  },
55
56
  }), validator('param', z.object({
56
57
  id: f.uuid,
57
- })), verifyAuth(), async (c) => {
58
- const config = c.var.services.config;
59
- if (!config.auth.passkey.enabled) {
60
- throw new e.PasskeyNotEnabled.Error();
61
- }
62
- const params = c.req.valid('param');
63
- const { user: userEntity } = c.var.verifiedUser;
64
- const { mikro, passkeyService } = c.var.services;
65
- // Config users cannot manage 2FA
66
- if (userEntity.managed_by === 'config') {
67
- throw new e.SecondFactorNotAllowedForConfigUser.Error();
68
- }
69
- // Load password_hash to check auth methods
70
- await mikro.em.populate(userEntity, ['password_hash']);
71
- const hasLinkedOAuth = (await mikro.userOAuth.count({
72
- user: { sub: userEntity.sub },
73
- })) > 0;
74
- const hasOtherAuthMethods = userEntity.hasPassword() || hasLinkedOAuth;
75
- // Check if 2FA is required
76
- const secondFactorRequired = config.auth.password.two_factor.enrollment_required;
77
- // Check if user has other 2FA method (TOTP)
78
- const totpEnabled = await mikro.userTotp.isRegistered(userEntity.sub);
79
- // Delete passkey
80
- await passkeyService.deletePasskey(userEntity.sub, params.id, {
81
- hasOtherAuthMethods,
82
- secondFactorRequired,
83
- hasOtherSecondFactor: totpEnabled,
58
+ })), verifyAuth(), securityMutationDocumentation, async (c) => {
59
+ return withBrowserSecurity(c, async () => {
60
+ const config = c.var.services.config;
61
+ if (!config.auth.passkey.enabled) {
62
+ throw new e.PasskeyNotEnabled.Error();
63
+ }
64
+ const params = c.req.valid('param');
65
+ const { user: userEntity } = c.var.verifiedUser;
66
+ const { passkeyService } = c.var.services;
67
+ // Config users cannot manage 2FA
68
+ if (userEntity.managed_by === 'config') {
69
+ throw new e.SecondFactorNotAllowedForConfigUser.Error();
70
+ }
71
+ await passkeyService.deletePasskey(userEntity.sub, params.id);
72
+ return c.json({ ok: true }, 200);
84
73
  });
85
- return c.json({ ok: true }, 200);
86
74
  });
87
75
  //# sourceMappingURL=delete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../../src/routes/api/user/passkeys/_id/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,iCAAiC,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,iCAAiC,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,oCAAoC,CAAC;AAEvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,IAAI,EAAU,CAAC,MAAM,CAC1D,oBAAoB,EACpB,aAAa,CAAC;IACZ,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC,aAAa;IACxC,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,wBAAwB;IACrC,SAAS,EAAE;QACT,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;aACvD;YACD,WAAW,EAAE,SAAS;SACvB;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;iBAC7C;aACF;YACD,WAAW,EACT,sFAAsF;SACzF;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;iBACxC;aACF;YACD,WAAW,EAAE,cAAc;SAC5B;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,mCAAmC,CAAC,MAAM,CAAC;iBAC/D;aACF;YACD,WAAW,EAAE,2CAA2C;SACzD;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC;iBAC3C;aACF;YACD,WAAW,EAAE,mBAAmB;SACjC;KACF;CACF,CAAC,EACF,SAAS,CACP,OAAO,EACP,CAAC,CAAC,MAAM,CAAC;IACP,EAAE,EAAE,CAAC,CAAC,IAAI;CACX,CAAC,CACH,EACD,UAAU,EAAE,EACZ,KAAK,EAAE,CAAC,EAAE,EAAE;IACV,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IAEjD,iCAAiC;IACjC,IAAI,UAAU,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC,mCAAmC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,2CAA2C;IAC3C,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACvD,MAAM,cAAc,GAClB,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE;KAC9B,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,mBAAmB,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,cAAc,CAAC;IAEvE,2BAA2B;IAC3B,MAAM,oBAAoB,GACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC;IAEtD,4CAA4C;IAC5C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEtE,iBAAiB;IACjB,MAAM,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE;QAC5D,mBAAmB;QACnB,oBAAoB;QACpB,oBAAoB,EAAE,WAAW;KAClC,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../../src/routes/api/user/passkeys/_id/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,iCAAiC,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,iCAAiC,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,oCAAoC,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAE1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,IAAI,EAAU,CAAC,MAAM,CAC1D,oBAAoB,EACpB,aAAa,CAAC;IACZ,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC,aAAa;IACxC,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,wBAAwB;IACrC,SAAS,EAAE;QACT,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;aACvD;YACD,WAAW,EAAE,SAAS;SACvB;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;iBAC7C;aACF;YACD,WAAW,EACT,sFAAsF;SACzF;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;iBACxC;aACF;YACD,WAAW,EAAE,cAAc;SAC5B;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,mCAAmC,CAAC,MAAM,CAAC;iBAC/D;aACF;YACD,WAAW,EAAE,2CAA2C;SACzD;QACD,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC;iBAC3C;aACF;YACD,WAAW,EAAE,mBAAmB;SACjC;KACF;CACF,CAAC,EACF,SAAS,CACP,OAAO,EACP,CAAC,CAAC,MAAM,CAAC;IACP,EAAE,EAAE,CAAC,CAAC,IAAI;CACX,CAAC,CACH,EACD,UAAU,EAAE,EACZ,6BAA6B,EAC7B,KAAK,EAAE,CAAC,EAAE,EAAE;IACV,OAAO,mBAAmB,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAChD,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QAE1C,iCAAiC;QACjC,IAAI,UAAU,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,CAAC,mCAAmC,CAAC,KAAK,EAAE,CAAC;QAC1D,CAAC;QAED,MAAM,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAE9D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/user/passkeys/_id/patch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAQ5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;6BAqE9B,CAAC"}
1
+ {"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/user/passkeys/_id/patch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAY5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;6BAwE9B,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { Hono } from 'hono';
2
2
  import { describeRoute, resolver, validator } from 'hono-openapi';
3
3
  import { z } from 'zod';
4
- import { OPENAPI_SECURITY } from '../../../../../lib/openapi.js';
4
+ import { OPENAPI_SECURITY, securityMutationDocumentation, } from '../../../../../lib/openapi.js';
5
5
  import { TAGS } from '../../../../../lib/swagger-tags.js';
6
6
  import { verifyAuth } from '../../../../../middleware/auth.js';
7
7
  import { e } from '../../../../../schemas/error.js';
8
8
  import { f } from '../../../../../schemas/field.js';
9
9
  import { r } from '../../../../../schemas/response.js';
10
+ import { withBrowserSecurity } from '../../../../../services/browser-security.service.js';
10
11
  export const userPasskeyIdPatch = new Hono().patch('/user/passkeys/:id', describeRoute({
11
12
  tags: [TAGS.USER],
12
13
  security: OPENAPI_SECURITY.cookieSession,
@@ -48,17 +49,19 @@ export const userPasskeyIdPatch = new Hono().patch('/user/passkeys/:id', describ
48
49
  id: f.uuid,
49
50
  })), validator('json', z.object({
50
51
  name: f.passkeyName,
51
- })), verifyAuth(), async (c) => {
52
- const config = c.var.services.config;
53
- if (!config.auth.passkey.enabled) {
54
- throw new e.PasskeyNotEnabled.Error();
55
- }
56
- const params = c.req.valid('param');
57
- const body = c.req.valid('json');
58
- const { user: userEntity } = c.var.verifiedUser;
59
- const { passkeyService } = c.var.services;
60
- // Rename passkey
61
- await passkeyService.renamePasskey(userEntity.sub, params.id, body.name);
62
- return c.json({ ok: true }, 200);
52
+ })), verifyAuth(), securityMutationDocumentation, async (c) => {
53
+ return withBrowserSecurity(c, async () => {
54
+ const config = c.var.services.config;
55
+ if (!config.auth.passkey.enabled) {
56
+ throw new e.PasskeyNotEnabled.Error();
57
+ }
58
+ const params = c.req.valid('param');
59
+ const body = c.req.valid('json');
60
+ const { user: userEntity } = c.var.verifiedUser;
61
+ const { passkeyService } = c.var.services;
62
+ // Rename passkey
63
+ await passkeyService.renamePasskey(userEntity.sub, params.id, body.name);
64
+ return c.json({ ok: true }, 200);
65
+ });
63
66
  });
64
67
  //# sourceMappingURL=patch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../../../../src/routes/api/user/passkeys/_id/patch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../../../../src/routes/api/user/passkeys/_id/patch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../../../src/routes/api/user/passkeys/register/verify/post.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAW/D;;;;GAIG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAoHzC,CAAC"}
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../../../src/routes/api/user/passkeys/register/verify/post.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAe/D;;;;GAIG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCA0IzC,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { Hono } from 'hono';
2
2
  import { describeRoute, resolver, validator } from 'hono-openapi';
3
- import { OPENAPI_SECURITY } from '../../../../../../lib/openapi.js';
3
+ import { OPENAPI_SECURITY, securityMutationDocumentation, } from '../../../../../../lib/openapi.js';
4
4
  import { TAGS } from '../../../../../../lib/swagger-tags.js';
5
5
  import { verifyAuth, verifyPasskeyChallenge, verifyPending2FASetupUser, } from '../../../../../../middleware/auth.js';
6
6
  import { e } from '../../../../../../schemas/error.js';
7
7
  import { r } from '../../../../../../schemas/response.js';
8
+ import { withBrowserSecurity } from '../../../../../../services/browser-security.service.js';
8
9
  /**
9
10
  * POST /api/user/passkeys/register/verify
10
11
  *
@@ -50,7 +51,11 @@ export const userPasskeyRegisterVerifyPost = new Hono().post('/user/passkeys/reg
50
51
  description: 'Passkey already exists',
51
52
  },
52
53
  },
53
- }), validator('json', r.PasskeyRegistrationBody), verifyAuth({ optional: true }), verifyPending2FASetupUser({ optional: true }), verifyPasskeyChallenge(), async (c) => {
54
+ }), validator('json', r.PasskeyRegistrationBody), verifyAuth({ optional: true }), verifyPending2FASetupUser({ optional: true }), async (c, next) => {
55
+ if (!c.var.services.config.auth.passkey.enabled)
56
+ throw new e.PasskeyNotEnabled.Error();
57
+ await next();
58
+ }, verifyPasskeyChallenge(), securityMutationDocumentation, async (c) => {
54
59
  const config = c.var.services.config;
55
60
  if (!config.auth.passkey.enabled) {
56
61
  throw new e.PasskeyNotEnabled.Error();
@@ -71,25 +76,28 @@ export const userPasskeyRegisterVerifyPost = new Hono().post('/user/passkeys/reg
71
76
  // @simplewebauthn's RegistrationResponseJSON due to index signature
72
77
  // differences. The refine() above validates the structure at runtime.
73
78
  const registrationResponse = body.response;
74
- // Verify registration
75
- await passkeyService.verifyRegistration(user, registrationResponse, challenge, body.name);
76
- // Check if this was from pending 2FA setup session
77
- const wasPendingSetup = !!c.var.verifiedPending2FASetupUser;
78
- if (wasPendingSetup) {
79
- // Clear pending setup sessions and create full user session
80
- session.setUserSession(userSub);
81
- // Get user data for response
82
- const userEntity = await mikro.user.verifyBySub(userSub);
83
- const userSessionData = await userService.userEntityToSessionUser(userEntity);
79
+ const prepared = await passkeyService.prepareRegistration(user, registrationResponse, challenge, body.name);
80
+ return withBrowserSecurity(c, async () => {
81
+ // Verify registration
82
+ await passkeyService.verifyRegistration(user, registrationResponse, challenge, body.name, prepared);
83
+ // Check if this was from pending 2FA setup session
84
+ const wasPendingSetup = !!c.var.verifiedPending2FASetupUser;
85
+ if (wasPendingSetup) {
86
+ // Clear pending setup sessions and create full user session
87
+ session.setUserSession(userSub, session.get('security')?.grants[userSub] ?? '');
88
+ // Get user data for response
89
+ const userEntity = await mikro.user.verifyBySub(userSub);
90
+ const userSessionData = await userService.userEntityToSessionUser(userEntity);
91
+ return c.json({
92
+ ok: true,
93
+ user: userSessionData,
94
+ second_factor_setup_completed: true,
95
+ }, 200);
96
+ }
84
97
  return c.json({
85
98
  ok: true,
86
- user: userSessionData,
87
- second_factor_setup_completed: true,
99
+ second_factor_setup_completed: false,
88
100
  }, 200);
89
- }
90
- return c.json({
91
- ok: true,
92
- second_factor_setup_completed: false,
93
- }, 200);
101
+ }, { stage: 'setup' });
94
102
  });
95
103
  //# sourceMappingURL=post.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../../../../../src/routes/api/user/passkeys/register/verify/post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../../../../../src/routes/api/user/passkeys/register/verify/post.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQzD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;yBAgF9B,CAAC"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAYzD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;yBAqF9B,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { Hono } from 'hono';
2
2
  import { describeRoute, resolver, validator } from 'hono-openapi';
3
3
  import { z } from 'zod';
4
- import { OPENAPI_SECURITY } from '../../../../lib/openapi.js';
4
+ import { OPENAPI_SECURITY, securityMutationDocumentation, } from '../../../../lib/openapi.js';
5
5
  import { TAGS } from '../../../../lib/swagger-tags.js';
6
6
  import { verifyAuth } from '../../../../middleware/auth.js';
7
7
  import { e } from '../../../../schemas/error.js';
8
8
  import { f } from '../../../../schemas/field.js';
9
9
  import { r } from '../../../../schemas/response.js';
10
+ import { withBrowserSecurity } from '../../../../services/browser-security.service.js';
10
11
  /**
11
12
  * DELETE /api/user/password
12
13
  *
@@ -65,14 +66,16 @@ export const userPasswordDelete = new Hono().delete('/user/password', describeRo
65
66
  },
66
67
  }), validator('json', z.object({
67
68
  current_password: f.userPassword,
68
- })), verifyAuth(), async (c) => {
69
- const body = c.req.valid('json');
70
- const { config, passwordAuthService } = c.var.services;
71
- const { user } = c.var.verifiedUser;
72
- if (!config.auth.password.enabled) {
73
- throw new e.ValidationError.Error('Password authentication is disabled');
74
- }
75
- await passwordAuthService.removePassword(user, body.current_password);
76
- return c.json({ ok: true }, 200);
69
+ })), verifyAuth(), securityMutationDocumentation, async (c) => {
70
+ return withBrowserSecurity(c, async () => {
71
+ const body = c.req.valid('json');
72
+ const { config, passwordAuthService } = c.var.services;
73
+ const { user } = c.var.verifiedUser;
74
+ if (!config.auth.password.enabled) {
75
+ throw new e.ValidationError.Error('Password authentication is disabled');
76
+ }
77
+ await passwordAuthService.removePassword(user, body.current_password);
78
+ return c.json({ ok: true }, 200);
79
+ });
77
80
  });
78
81
  //# sourceMappingURL=delete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/delete.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/post.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQzD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;yBA8E5B,CAAC"}
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/post.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAYzD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;yBAmF5B,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { Hono } from 'hono';
2
2
  import { describeRoute, resolver, validator } from 'hono-openapi';
3
3
  import { z } from 'zod';
4
- import { OPENAPI_SECURITY } from '../../../../lib/openapi.js';
4
+ import { OPENAPI_SECURITY, securityMutationDocumentation, } from '../../../../lib/openapi.js';
5
5
  import { TAGS } from '../../../../lib/swagger-tags.js';
6
6
  import { verifyAuth } from '../../../../middleware/auth.js';
7
7
  import { e } from '../../../../schemas/error.js';
8
8
  import { f } from '../../../../schemas/field.js';
9
9
  import { r } from '../../../../schemas/response.js';
10
+ import { withBrowserSecurity } from '../../../../services/browser-security.service.js';
10
11
  /**
11
12
  * POST /api/user/password
12
13
  *
@@ -68,14 +69,16 @@ export const userPasswordPost = new Hono().post('/user/password', describeRoute(
68
69
  },
69
70
  }), validator('json', z.object({
70
71
  password: f.newUserPassword,
71
- })), verifyAuth(), async (c) => {
72
- const body = c.req.valid('json');
73
- const { config, passwordAuthService } = c.var.services;
74
- const { user } = c.var.verifiedUser;
75
- if (!config.auth.password.enabled) {
76
- throw new e.ValidationError.Error('Password authentication is disabled');
77
- }
78
- await passwordAuthService.setPasswordForUser(user, body.password);
79
- return c.json({ ok: true }, 200);
72
+ })), verifyAuth(), securityMutationDocumentation, async (c) => {
73
+ return withBrowserSecurity(c, async () => {
74
+ const body = c.req.valid('json');
75
+ const { config, passwordAuthService } = c.var.services;
76
+ const { user } = c.var.verifiedUser;
77
+ if (!config.auth.password.enabled) {
78
+ throw new e.ValidationError.Error('Password authentication is disabled');
79
+ }
80
+ await passwordAuthService.setPasswordForUser(user, body.password);
81
+ return c.json({ ok: true }, 200);
82
+ });
80
83
  });
81
84
  //# sourceMappingURL=post.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/post.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/put.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQzD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;yBA+E3B,CAAC"}
1
+ {"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/put.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAYzD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;yBAoF3B,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { Hono } from 'hono';
2
2
  import { describeRoute, resolver, validator } from 'hono-openapi';
3
3
  import { z } from 'zod';
4
- import { OPENAPI_SECURITY } from '../../../../lib/openapi.js';
4
+ import { OPENAPI_SECURITY, securityMutationDocumentation, } from '../../../../lib/openapi.js';
5
5
  import { TAGS } from '../../../../lib/swagger-tags.js';
6
6
  import { verifyAuth } from '../../../../middleware/auth.js';
7
7
  import { e } from '../../../../schemas/error.js';
8
8
  import { f } from '../../../../schemas/field.js';
9
9
  import { r } from '../../../../schemas/response.js';
10
+ import { withBrowserSecurity } from '../../../../services/browser-security.service.js';
10
11
  /**
11
12
  * PUT /api/user/password
12
13
  *
@@ -61,14 +62,16 @@ export const userPasswordPut = new Hono().put('/user/password', describeRoute({
61
62
  }), validator('json', z.object({
62
63
  current_password: f.userPassword,
63
64
  new_password: f.newUserPassword,
64
- })), verifyAuth(), async (c) => {
65
- const body = c.req.valid('json');
66
- const { config, passwordAuthService } = c.var.services;
67
- const { user } = c.var.verifiedUser;
68
- if (!config.auth.password.enabled) {
69
- throw new e.ValidationError.Error('Password authentication is disabled');
70
- }
71
- await passwordAuthService.changePassword(user, body.current_password, body.new_password);
72
- return c.json({ ok: true }, 200);
65
+ })), verifyAuth(), securityMutationDocumentation, async (c) => {
66
+ return withBrowserSecurity(c, async () => {
67
+ const body = c.req.valid('json');
68
+ const { config, passwordAuthService } = c.var.services;
69
+ const { user } = c.var.verifiedUser;
70
+ if (!config.auth.password.enabled) {
71
+ throw new e.ValidationError.Error('Password authentication is disabled');
72
+ }
73
+ await passwordAuthService.changePassword(user, body.current_password, body.new_password);
74
+ return c.json({ ok: true }, 200);
75
+ });
73
76
  });
74
77
  //# sourceMappingURL=put.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"put.js","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/put.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"put.js","sourceRoot":"","sources":["../../../../../src/routes/api/user/password/put.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/user/totp/confirm/post.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAU5D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;6BAyE/B,CAAC"}
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/user/totp/confirm/post.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAc5D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;6BA+F/B,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { Hono } from 'hono';
2
2
  import { describeRoute, resolver, validator } from 'hono-openapi';
3
3
  import { z } from 'zod';
4
- import { OPENAPI_SECURITY } from '../../../../../lib/openapi.js';
4
+ import { OPENAPI_SECURITY, securityMutationDocumentation, } from '../../../../../lib/openapi.js';
5
5
  import { TAGS } from '../../../../../lib/swagger-tags.js';
6
6
  import { verifyAuth, verifyPending2FASetupUser, } from '../../../../../middleware/auth.js';
7
7
  import { e } from '../../../../../schemas/error.js';
8
8
  import { r } from '../../../../../schemas/response.js';
9
+ import { withBrowserSecurity } from '../../../../../services/browser-security.service.js';
9
10
  /**
10
11
  * POST /api/user/totp/confirm
11
12
  *
@@ -52,22 +53,36 @@ export const userTotpConfirmPost = new Hono().post('/user/totp/confirm', describ
52
53
  description: 'TOTP already enabled',
53
54
  },
54
55
  },
55
- }), validator('json', z.object({}).optional().nullable()), verifyAuth({ optional: true }), verifyPending2FASetupUser({ optional: true }), async (c) => {
56
- const session = c.var.session;
57
- const { mikro, totpService, userService } = c.var.services;
58
- // Allow both full user session and pending 2FA setup session
59
- const userSub = c.var.verifiedPending2FASetupUser?.user.sub ??
60
- c.var.verifiedUser?.user.sub;
61
- if (!userSub) {
62
- throw new e.Unauthorized.Error();
63
- }
64
- await totpService.confirmSetup(userSub);
65
- // Convert pending 2FA setup session to full user session
66
- if (c.var.verifiedPending2FASetupUser) {
67
- session.setUserSession(userSub);
68
- }
69
- const userEntity = await mikro.user.verifyBySub(userSub);
70
- const user = await userService.userEntityToSessionUser(userEntity);
71
- return c.json({ user }, 200);
56
+ }), validator('json', z.object({}).optional().nullable()), verifyAuth({ optional: true }), verifyPending2FASetupUser({ optional: true }), securityMutationDocumentation, async (c) => {
57
+ return withBrowserSecurity(c, async () => {
58
+ const session = c.var.session;
59
+ const { mikro, totpService, userService } = c.var.services;
60
+ // Allow both full user session and pending 2FA setup session
61
+ const userSub = c.var.verifiedPending2FASetupUser?.user.sub ??
62
+ c.var.verifiedUser?.user.sub;
63
+ if (!userSub) {
64
+ throw new e.Unauthorized.Error();
65
+ }
66
+ const totp = await mikro.userTotp.findVerifiedByUserSub(userSub);
67
+ if (!totp)
68
+ throw new e.TotpNotSetup.Error();
69
+ if (totp.recovery_confirmed)
70
+ throw new e.TotpAlreadyEnabled.Error();
71
+ const proof = session.get('totpSetupVerification');
72
+ if (!proof ||
73
+ proof.sub !== userSub ||
74
+ proof.totpId !== totp.id ||
75
+ proof.step !== totp.last_used_step)
76
+ throw new e.Unauthorized.Error();
77
+ await totpService.confirmSetup(userSub);
78
+ session.set('totpSetupVerification', undefined);
79
+ // Convert pending 2FA setup session to full user session
80
+ if (c.var.verifiedPending2FASetupUser) {
81
+ session.setUserSession(userSub, session.get('security')?.grants[userSub] ?? '');
82
+ }
83
+ const userEntity = await mikro.user.verifyBySub(userSub);
84
+ const user = await userService.userEntityToSessionUser(userEntity);
85
+ return c.json({ user }, 200);
86
+ }, { stage: 'setup' });
72
87
  });
73
88
  //# sourceMappingURL=post.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../../../../src/routes/api/user/totp/confirm/post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../../../../src/routes/api/user/totp/confirm/post.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/user/totp/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQzD;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;qBA2E1B,CAAC"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/user/totp/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAYzD;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;qBAmE1B,CAAC"}