@tinyrack/issuary-server 0.31.0 → 0.32.2
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.
- package/dist/entities/auth-budget.entity.d.ts +20 -0
- package/dist/entities/auth-budget.entity.d.ts.map +1 -0
- package/dist/entities/auth-budget.entity.js +11 -0
- package/dist/entities/auth-budget.entity.js.map +1 -0
- package/dist/entities/browser-session.entity.d.ts +32 -0
- package/dist/entities/browser-session.entity.d.ts.map +1 -0
- package/dist/entities/browser-session.entity.js +12 -0
- package/dist/entities/browser-session.entity.js.map +1 -0
- package/dist/entities/email-verification.entity.d.ts +18 -0
- package/dist/entities/email-verification.entity.d.ts.map +1 -1
- package/dist/entities/email-verification.entity.js +2 -0
- package/dist/entities/email-verification.entity.js.map +1 -1
- package/dist/entities/oauth-client.entity.d.ts +120 -0
- package/dist/entities/oauth-client.entity.d.ts.map +1 -1
- package/dist/entities/oauth-code.entity.d.ts +120 -0
- package/dist/entities/oauth-code.entity.d.ts.map +1 -1
- package/dist/entities/oauth-code.entity.js +3 -0
- package/dist/entities/oauth-code.entity.js.map +1 -1
- package/dist/entities/oauth-device-code.entity.d.ts +120 -0
- package/dist/entities/oauth-device-code.entity.d.ts.map +1 -1
- package/dist/entities/oauth-device-code.entity.js +3 -0
- package/dist/entities/oauth-device-code.entity.js.map +1 -1
- package/dist/entities/oauth-grant.entity.d.ts +52 -0
- package/dist/entities/oauth-grant.entity.d.ts.map +1 -0
- package/dist/entities/oauth-grant.entity.js +19 -0
- package/dist/entities/oauth-grant.entity.js.map +1 -0
- package/dist/entities/password-reset.entity.d.ts +18 -0
- package/dist/entities/password-reset.entity.d.ts.map +1 -1
- package/dist/entities/password-reset.entity.js +2 -0
- package/dist/entities/password-reset.entity.js.map +1 -1
- package/dist/entities/pending-oauth-registration.entity.d.ts +9 -0
- package/dist/entities/pending-oauth-registration.entity.d.ts.map +1 -1
- package/dist/entities/pending-oauth-registration.entity.js +1 -0
- package/dist/entities/pending-oauth-registration.entity.js.map +1 -1
- package/dist/entities/revoked-token.entity.d.ts +120 -0
- package/dist/entities/revoked-token.entity.d.ts.map +1 -1
- package/dist/entities/terms-content.entity.d.ts +36 -0
- package/dist/entities/terms-content.entity.d.ts.map +1 -1
- package/dist/entities/terms.entity.d.ts +36 -0
- package/dist/entities/terms.entity.d.ts.map +1 -1
- package/dist/entities/user-consent.entity.d.ts +120 -0
- package/dist/entities/user-consent.entity.d.ts.map +1 -1
- package/dist/entities/user-terms-consent.entity.d.ts +36 -0
- package/dist/entities/user-terms-consent.entity.d.ts.map +1 -1
- package/dist/entities/user-totp-recovery-code.entity.d.ts +36 -0
- package/dist/entities/user-totp-recovery-code.entity.d.ts.map +1 -1
- package/dist/entities/user-totp.entity.d.ts +36 -0
- package/dist/entities/user-totp.entity.d.ts.map +1 -1
- package/dist/entities/user-totp.entity.js +1 -0
- package/dist/entities/user-totp.entity.js.map +1 -1
- package/dist/entities/user.entity.d.ts +36 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +3 -0
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entrypoints/app.d.ts +448 -437
- package/dist/entrypoints/app.d.ts.map +1 -1
- package/dist/entrypoints/app.js +78 -6
- package/dist/entrypoints/app.js.map +1 -1
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts +326 -200
- package/dist/entrypoints/database/postgres/compiled-functions.js +1849 -518
- package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +326 -200
- package/dist/entrypoints/database/sqlite/compiled-functions.js +1849 -518
- package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
- package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -1
- package/dist/entrypoints/database/sqlite/sqlite.js +1 -0
- package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -1
- package/dist/entrypoints/scheduler/database.d.ts +3 -1
- package/dist/entrypoints/scheduler/database.d.ts.map +1 -1
- package/dist/entrypoints/scheduler/database.js +13 -2
- package/dist/entrypoints/scheduler/database.js.map +1 -1
- package/dist/entrypoints/scheduler/distributed-runner.d.ts +4 -0
- package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -1
- package/dist/entrypoints/scheduler/distributed-runner.js +26 -1
- package/dist/entrypoints/scheduler/distributed-runner.js.map +1 -1
- package/dist/lib/config/email.d.ts +1 -0
- package/dist/lib/config/email.d.ts.map +1 -1
- package/dist/lib/config/email.js.map +1 -1
- package/dist/lib/database/entities.d.ts.map +1 -1
- package/dist/lib/database/entities.js +6 -0
- package/dist/lib/database/entities.js.map +1 -1
- package/dist/lib/openapi.d.ts +2 -0
- package/dist/lib/openapi.d.ts.map +1 -1
- package/dist/lib/openapi.js +36 -1
- package/dist/lib/openapi.js.map +1 -1
- package/dist/lib/request-ip.d.ts +4 -0
- package/dist/lib/request-ip.d.ts.map +1 -0
- package/dist/lib/request-ip.js +39 -0
- package/dist/lib/request-ip.js.map +1 -0
- package/dist/middleware/auth-budget.d.ts +3 -0
- package/dist/middleware/auth-budget.d.ts.map +1 -0
- package/dist/middleware/auth-budget.js +80 -0
- package/dist/middleware/auth-budget.js.map +1 -0
- package/dist/middleware/session.d.ts +23 -5
- package/dist/middleware/session.d.ts.map +1 -1
- package/dist/middleware/session.js +152 -12
- package/dist/middleware/session.js.map +1 -1
- package/dist/middleware/strict-input.d.ts +4 -0
- package/dist/middleware/strict-input.d.ts.map +1 -0
- package/dist/middleware/strict-input.js +144 -0
- package/dist/middleware/strict-input.js.map +1 -0
- package/dist/migrations/postgres/Migration20260910120000_api_security.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260910120000_api_security.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260910120000_api_security.js +20 -0
- package/dist/migrations/postgres/Migration20260910120000_api_security.js.map +1 -0
- package/dist/migrations/postgres/Migration20260910160000_security_followup.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260910160000_security_followup.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260910160000_security_followup.js +23 -0
- package/dist/migrations/postgres/Migration20260910160000_security_followup.js.map +1 -0
- package/dist/migrations/postgres/Migration20260910200000_authentication_epoch.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260910200000_authentication_epoch.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260910200000_authentication_epoch.js +28 -0
- package/dist/migrations/postgres/Migration20260910200000_authentication_epoch.js.map +1 -0
- package/dist/migrations/postgres/Migration20260910220000_flow_revocation.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260910220000_flow_revocation.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260910220000_flow_revocation.js +19 -0
- package/dist/migrations/postgres/Migration20260910220000_flow_revocation.js.map +1 -0
- package/dist/migrations/postgres/index.d.ts.map +1 -1
- package/dist/migrations/postgres/index.js +8 -0
- package/dist/migrations/postgres/index.js.map +1 -1
- package/dist/migrations/sqlite/Migration20260910120000_api_security.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260910120000_api_security.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260910120000_api_security.js +20 -0
- package/dist/migrations/sqlite/Migration20260910120000_api_security.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260910160000_security_followup.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260910160000_security_followup.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260910160000_security_followup.js +23 -0
- package/dist/migrations/sqlite/Migration20260910160000_security_followup.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260910200000_authentication_epoch.d.ts +8 -0
- package/dist/migrations/sqlite/Migration20260910200000_authentication_epoch.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260910200000_authentication_epoch.js +72 -0
- package/dist/migrations/sqlite/Migration20260910200000_authentication_epoch.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260910220000_flow_revocation.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260910220000_flow_revocation.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260910220000_flow_revocation.js +19 -0
- package/dist/migrations/sqlite/Migration20260910220000_flow_revocation.js.map +1 -0
- package/dist/migrations/sqlite/index.d.ts.map +1 -1
- package/dist/migrations/sqlite/index.js +8 -0
- package/dist/migrations/sqlite/index.js.map +1 -1
- package/dist/repositories/email-verification.repository.d.ts +1 -0
- package/dist/repositories/email-verification.repository.d.ts.map +1 -1
- package/dist/repositories/email-verification.repository.js +8 -17
- package/dist/repositories/email-verification.repository.js.map +1 -1
- package/dist/repositories/oauth-code.repository.d.ts +2 -0
- package/dist/repositories/oauth-code.repository.d.ts.map +1 -1
- package/dist/repositories/oauth-code.repository.js +8 -0
- package/dist/repositories/oauth-code.repository.js.map +1 -1
- package/dist/repositories/oauth-device-code.repository.d.ts +3 -0
- package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -1
- package/dist/repositories/oauth-device-code.repository.js +64 -29
- package/dist/repositories/oauth-device-code.repository.js.map +1 -1
- package/dist/repositories/password-reset.repository.d.ts +1 -0
- package/dist/repositories/password-reset.repository.d.ts.map +1 -1
- package/dist/repositories/password-reset.repository.js +6 -19
- package/dist/repositories/password-reset.repository.js.map +1 -1
- package/dist/repositories/pending-oauth-registration.repository.d.ts +2 -0
- package/dist/repositories/pending-oauth-registration.repository.d.ts.map +1 -1
- package/dist/repositories/pending-oauth-registration.repository.js +16 -2
- package/dist/repositories/pending-oauth-registration.repository.js.map +1 -1
- package/dist/repositories/terms.repository.d.ts.map +1 -1
- package/dist/repositories/terms.repository.js +1 -0
- package/dist/repositories/terms.repository.js.map +1 -1
- package/dist/repositories/user-consent.repository.d.ts.map +1 -1
- package/dist/repositories/user-consent.repository.js +1 -1
- package/dist/repositories/user-consent.repository.js.map +1 -1
- package/dist/repositories/user-terms-consent.repository.d.ts.map +1 -1
- package/dist/repositories/user-terms-consent.repository.js +2 -0
- package/dist/repositories/user-terms-consent.repository.js.map +1 -1
- package/dist/repositories/user-totp-recovery-code.repository.d.ts +24 -0
- package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -1
- package/dist/repositories/user-totp.repository.d.ts +36 -0
- package/dist/repositories/user-totp.repository.d.ts.map +1 -1
- package/dist/routes/.well-known/openid-configuration/get.d.ts.map +1 -1
- package/dist/routes/.well-known/openid-configuration/get.js +5 -1
- package/dist/routes/.well-known/openid-configuration/get.js.map +1 -1
- package/dist/routes/api/admin/console/index.d.ts.map +1 -1
- package/dist/routes/api/admin/console/index.js +29 -14
- package/dist/routes/api/admin/console/index.js.map +1 -1
- package/dist/routes/api/admin/me/get.js +2 -3
- package/dist/routes/api/admin/me/get.js.map +1 -1
- package/dist/routes/api/admin/users/index.d.ts.map +1 -1
- package/dist/routes/api/admin/users/index.js +59 -52
- package/dist/routes/api/admin/users/index.js.map +1 -1
- package/dist/routes/api/auth/accounts/remove.post.d.ts +5 -5
- package/dist/routes/api/auth/email/resend/post.d.ts.map +1 -1
- package/dist/routes/api/auth/email/resend/post.js +3 -24
- package/dist/routes/api/auth/email/resend/post.js.map +1 -1
- package/dist/routes/api/auth/email/verify/post.d.ts.map +1 -1
- package/dist/routes/api/auth/email/verify/post.js +29 -12
- package/dist/routes/api/auth/email/verify/post.js.map +1 -1
- package/dist/routes/api/auth/login/post.d.ts.map +1 -1
- package/dist/routes/api/auth/login/post.js +4 -3
- package/dist/routes/api/auth/login/post.js.map +1 -1
- package/dist/routes/api/auth/passkey/verify/post.d.ts.map +1 -1
- package/dist/routes/api/auth/passkey/verify/post.js +25 -11
- package/dist/routes/api/auth/passkey/verify/post.js.map +1 -1
- package/dist/routes/api/auth/password/forgot/post.d.ts.map +1 -1
- package/dist/routes/api/auth/password/forgot/post.js +2 -19
- package/dist/routes/api/auth/password/forgot/post.js.map +1 -1
- package/dist/routes/api/auth/register/post.d.ts.map +1 -1
- package/dist/routes/api/auth/register/post.js +4 -3
- package/dist/routes/api/auth/register/post.js.map +1 -1
- package/dist/routes/api/auth/totp/recovery/verify/post.d.ts.map +1 -1
- package/dist/routes/api/auth/totp/recovery/verify/post.js +7 -5
- package/dist/routes/api/auth/totp/recovery/verify/post.js.map +1 -1
- package/dist/routes/api/auth/totp/verify/post.d.ts.map +1 -1
- package/dist/routes/api/auth/totp/verify/post.js +7 -5
- package/dist/routes/api/auth/totp/verify/post.js.map +1 -1
- package/dist/routes/api/consent/post.d.ts.map +1 -1
- package/dist/routes/api/consent/post.js +141 -120
- package/dist/routes/api/consent/post.js.map +1 -1
- package/dist/routes/api/docs/get.d.ts.map +1 -1
- package/dist/routes/api/docs/get.js +8 -1
- package/dist/routes/api/docs/get.js.map +1 -1
- package/dist/routes/api/index.d.ts +379 -379
- package/dist/routes/api/oauth/_provider/authorize/get.d.ts.map +1 -1
- package/dist/routes/api/oauth/_provider/authorize/get.js +5 -1
- package/dist/routes/api/oauth/_provider/authorize/get.js.map +1 -1
- package/dist/routes/api/oauth/_provider/callback/get.d.ts +9 -9
- package/dist/routes/api/oauth/_provider/callback/get.d.ts.map +1 -1
- package/dist/routes/api/oauth/_provider/callback/get.js +30 -6
- package/dist/routes/api/oauth/_provider/callback/get.js.map +1 -1
- package/dist/routes/api/oauth/_provider/callback/post.d.ts.map +1 -1
- package/dist/routes/api/oauth/_provider/callback/post.js +31 -31
- package/dist/routes/api/oauth/_provider/callback/post.js.map +1 -1
- package/dist/routes/api/oauth/_provider/delete.d.ts.map +1 -1
- package/dist/routes/api/oauth/_provider/delete.js +14 -11
- package/dist/routes/api/oauth/_provider/delete.js.map +1 -1
- package/dist/routes/api/oauth/index.d.ts +18 -18
- package/dist/routes/api/terms/consent/post.d.ts.map +1 -1
- package/dist/routes/api/terms/consent/post.js +59 -43
- package/dist/routes/api/terms/consent/post.js.map +1 -1
- package/dist/routes/api/user/delete.d.ts.map +1 -1
- package/dist/routes/api/user/delete.js +8 -8
- package/dist/routes/api/user/delete.js.map +1 -1
- package/dist/routes/api/user/passkeys/_id/delete.d.ts.map +1 -1
- package/dist/routes/api/user/passkeys/_id/delete.js +17 -29
- package/dist/routes/api/user/passkeys/_id/delete.js.map +1 -1
- package/dist/routes/api/user/passkeys/_id/patch.d.ts.map +1 -1
- package/dist/routes/api/user/passkeys/_id/patch.js +16 -13
- package/dist/routes/api/user/passkeys/_id/patch.js.map +1 -1
- package/dist/routes/api/user/passkeys/register/verify/post.d.ts.map +1 -1
- package/dist/routes/api/user/passkeys/register/verify/post.js +27 -19
- package/dist/routes/api/user/passkeys/register/verify/post.js.map +1 -1
- package/dist/routes/api/user/password/delete.d.ts.map +1 -1
- package/dist/routes/api/user/password/delete.js +13 -10
- package/dist/routes/api/user/password/delete.js.map +1 -1
- package/dist/routes/api/user/password/post.d.ts.map +1 -1
- package/dist/routes/api/user/password/post.js +13 -10
- package/dist/routes/api/user/password/post.js.map +1 -1
- package/dist/routes/api/user/password/put.d.ts.map +1 -1
- package/dist/routes/api/user/password/put.js +13 -10
- package/dist/routes/api/user/password/put.js.map +1 -1
- package/dist/routes/api/user/totp/confirm/post.d.ts.map +1 -1
- package/dist/routes/api/user/totp/confirm/post.js +33 -18
- package/dist/routes/api/user/totp/confirm/post.js.map +1 -1
- package/dist/routes/api/user/totp/delete.d.ts.map +1 -1
- package/dist/routes/api/user/totp/delete.js +13 -18
- package/dist/routes/api/user/totp/delete.js.map +1 -1
- package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts.map +1 -1
- package/dist/routes/api/user/totp/recovery/regenerate/post.js +13 -10
- package/dist/routes/api/user/totp/recovery/regenerate/post.js.map +1 -1
- package/dist/routes/api/user/totp/setup/post.d.ts.map +1 -1
- package/dist/routes/api/user/totp/setup/post.js +13 -8
- package/dist/routes/api/user/totp/setup/post.js.map +1 -1
- package/dist/routes/api/user/totp/verify/post.d.ts.map +1 -1
- package/dist/routes/api/user/totp/verify/post.js +23 -12
- package/dist/routes/api/user/totp/verify/post.js.map +1 -1
- package/dist/routes/index.d.ts +252 -242
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/oauth/authorize/get.d.ts.map +1 -1
- package/dist/routes/oauth/authorize/get.js +12 -4
- package/dist/routes/oauth/authorize/get.js.map +1 -1
- package/dist/routes/oauth/device/get-post.d.ts +10 -0
- package/dist/routes/oauth/device/get-post.d.ts.map +1 -1
- package/dist/routes/oauth/device/get-post.js +32 -3
- package/dist/routes/oauth/device/get-post.js.map +1 -1
- package/dist/routes/oauth/device-authorization/post.d.ts.map +1 -1
- package/dist/routes/oauth/device-authorization/post.js +13 -7
- package/dist/routes/oauth/device-authorization/post.js.map +1 -1
- package/dist/routes/oauth/end-session/get.d.ts.map +1 -1
- package/dist/routes/oauth/end-session/get.js +2 -3
- package/dist/routes/oauth/end-session/get.js.map +1 -1
- package/dist/routes/oauth/index.d.ts +10 -0
- package/dist/routes/oauth/index.d.ts.map +1 -1
- package/dist/routes/oauth/revoke/post.d.ts.map +1 -1
- package/dist/routes/oauth/revoke/post.js +10 -2
- package/dist/routes/oauth/revoke/post.js.map +1 -1
- package/dist/routes/oauth/token/post.d.ts.map +1 -1
- package/dist/routes/oauth/token/post.js +69 -57
- package/dist/routes/oauth/token/post.js.map +1 -1
- package/dist/schemas/error.d.ts +75 -0
- package/dist/schemas/error.d.ts.map +1 -1
- package/dist/schemas/error.js +3 -0
- package/dist/schemas/error.js.map +1 -1
- package/dist/schemas/field.d.ts.map +1 -1
- package/dist/schemas/field.js +3 -0
- package/dist/schemas/field.js.map +1 -1
- package/dist/seeders/config.seeder.d.ts +1 -1
- package/dist/seeders/config.seeder.d.ts.map +1 -1
- package/dist/seeders/config.seeder.js +100 -36
- package/dist/seeders/config.seeder.js.map +1 -1
- package/dist/services/admin-console.service.d.ts.map +1 -1
- package/dist/services/admin-console.service.js +137 -100
- package/dist/services/admin-console.service.js.map +1 -1
- package/dist/services/auth-budget.service.d.ts +6 -0
- package/dist/services/auth-budget.service.d.ts.map +1 -0
- package/dist/services/auth-budget.service.js +30 -0
- package/dist/services/auth-budget.service.js.map +1 -0
- package/dist/services/authentication-epoch.d.ts +5 -0
- package/dist/services/authentication-epoch.d.ts.map +1 -0
- package/dist/services/authentication-epoch.js +22 -0
- package/dist/services/authentication-epoch.js.map +1 -0
- package/dist/services/authorization-browser.service.d.ts +18 -0
- package/dist/services/authorization-browser.service.d.ts.map +1 -0
- package/dist/services/authorization-browser.service.js +28 -0
- package/dist/services/authorization-browser.service.js.map +1 -0
- package/dist/services/browser-security.service.d.ts +14 -0
- package/dist/services/browser-security.service.d.ts.map +1 -0
- package/dist/services/browser-security.service.js +85 -0
- package/dist/services/browser-security.service.js.map +1 -0
- package/dist/services/browser-session.service.d.ts +25 -0
- package/dist/services/browser-session.service.d.ts.map +1 -0
- package/dist/services/browser-session.service.js +102 -0
- package/dist/services/browser-session.service.js.map +1 -0
- package/dist/services/cleanup.service.d.ts +1 -0
- package/dist/services/cleanup.service.d.ts.map +1 -1
- package/dist/services/cleanup.service.js +31 -0
- package/dist/services/cleanup.service.js.map +1 -1
- package/dist/services/client-security.d.ts +641 -0
- package/dist/services/client-security.d.ts.map +1 -0
- package/dist/services/client-security.js +10 -0
- package/dist/services/client-security.js.map +1 -0
- package/dist/services/container.d.ts +2 -0
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +6 -2
- package/dist/services/container.js.map +1 -1
- package/dist/services/email.service.d.ts +2 -14
- package/dist/services/email.service.d.ts.map +1 -1
- package/dist/services/email.service.js +35 -29
- package/dist/services/email.service.js.map +1 -1
- package/dist/services/jwt.service.d.ts +1 -0
- package/dist/services/jwt.service.d.ts.map +1 -1
- package/dist/services/jwt.service.js +13 -1
- package/dist/services/jwt.service.js.map +1 -1
- package/dist/services/mail-queue.service.d.ts +24 -0
- package/dist/services/mail-queue.service.d.ts.map +1 -0
- package/dist/services/mail-queue.service.js +223 -0
- package/dist/services/mail-queue.service.js.map +1 -0
- package/dist/services/mikro.service.d.ts.map +1 -1
- package/dist/services/mikro.service.js +2 -0
- package/dist/services/mikro.service.js.map +1 -1
- package/dist/services/oauth-authorize.service.d.ts +3 -0
- package/dist/services/oauth-authorize.service.d.ts.map +1 -1
- package/dist/services/oauth-authorize.service.js +131 -101
- package/dist/services/oauth-authorize.service.js.map +1 -1
- package/dist/services/oauth-browser-security.service.d.ts +7 -0
- package/dist/services/oauth-browser-security.service.d.ts.map +1 -0
- package/dist/services/oauth-browser-security.service.js +67 -0
- package/dist/services/oauth-browser-security.service.js.map +1 -0
- package/dist/services/oauth-client.service.d.ts +24 -1
- package/dist/services/oauth-client.service.d.ts.map +1 -1
- package/dist/services/oauth-client.service.js +52 -13
- package/dist/services/oauth-client.service.js.map +1 -1
- package/dist/services/oauth-connect.service.d.ts +37 -3
- package/dist/services/oauth-connect.service.d.ts.map +1 -1
- package/dist/services/oauth-connect.service.js +236 -212
- package/dist/services/oauth-connect.service.js.map +1 -1
- package/dist/services/oauth-token.service.d.ts +6 -4
- package/dist/services/oauth-token.service.d.ts.map +1 -1
- package/dist/services/oauth-token.service.js +295 -209
- package/dist/services/oauth-token.service.js.map +1 -1
- package/dist/services/passkey.service.d.ts +26 -7
- package/dist/services/passkey.service.d.ts.map +1 -1
- package/dist/services/passkey.service.js +71 -42
- package/dist/services/passkey.service.js.map +1 -1
- package/dist/services/password-auth.service.d.ts +5 -1
- package/dist/services/password-auth.service.d.ts.map +1 -1
- package/dist/services/password-auth.service.js +79 -52
- package/dist/services/password-auth.service.js.map +1 -1
- package/dist/services/password-reset.service.d.ts.map +1 -1
- package/dist/services/password-reset.service.js +34 -15
- package/dist/services/password-reset.service.js.map +1 -1
- package/dist/services/security.service.d.ts +3 -1
- package/dist/services/security.service.d.ts.map +1 -1
- package/dist/services/security.service.js +11 -2
- package/dist/services/security.service.js.map +1 -1
- package/dist/services/terms-policy.service.d.ts +7 -0
- package/dist/services/terms-policy.service.d.ts.map +1 -0
- package/dist/services/terms-policy.service.js +26 -0
- package/dist/services/terms-policy.service.js.map +1 -0
- package/dist/services/totp.service.d.ts +4 -5
- package/dist/services/totp.service.d.ts.map +1 -1
- package/dist/services/totp.service.js +116 -86
- package/dist/services/totp.service.js.map +1 -1
- package/dist/services/user-security.service.d.ts +15 -0
- package/dist/services/user-security.service.d.ts.map +1 -0
- package/dist/services/user-security.service.js +57 -0
- package/dist/services/user-security.service.js.map +1 -0
- package/dist/services/user.service.d.ts +6 -4
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +143 -121
- package/dist/services/user.service.js.map +1 -1
- package/frontend/client/assets/{auth-layout-BedWIZ7L.js → auth-layout-sea6nww4.js} +1 -1
- package/frontend/client/assets/{auth-page-header-C6Z6Air-.js → auth-page-header-CV85AJLW.js} +1 -1
- package/frontend/client/assets/document-navigation-FZbb5ldf.js +1 -0
- package/frontend/client/assets/i18n-vfKY-byx.js +1 -0
- package/frontend/client/assets/{language-selector-CeLHnp1n.js → language-selector-Jso2cQNI.js} +1 -1
- package/frontend/client/assets/manifest-90703545.js +1 -0
- package/frontend/client/assets/{passkey-Bkqvhjwb.js → passkey-CJhT-7yO.js} +1 -1
- package/frontend/client/assets/{promise-CepnkPDw.js → promise-BP9iSIs-.js} +1 -1
- package/frontend/client/assets/{root-CM8lJbh5.js → root-BkavuloG.js} +1 -1
- package/frontend/client/assets/{route-Y1_yJKhW.js → route-B0udr9eT.js} +1 -1
- package/frontend/client/assets/{route-CdPHVY9W.js → route-B3Uv9aTa.js} +1 -1
- package/frontend/client/assets/{route-CF1S7UUy.js → route-B6hIfgxz.js} +1 -1
- package/frontend/client/assets/{route-BcXtt6V2.js → route-BEWds2g-.js} +1 -1
- package/frontend/client/assets/route-Bm9LsorH.js +1 -0
- package/frontend/client/assets/route-Btv5Y69z.js +1 -0
- package/frontend/client/assets/route-BvyDzziE.js +1 -0
- package/frontend/client/assets/route-C6kG9u7j.js +1 -0
- package/frontend/client/assets/{route-1rid8j-3.js → route-C7C3Z0vI.js} +1 -1
- package/frontend/client/assets/{route-DphbGk_G.js → route-CVyefM3x.js} +1 -1
- package/frontend/client/assets/{route-DZvCkU11.js → route-CXth2Wqz.js} +1 -1
- package/frontend/client/assets/route-D0IqOurp.js +1 -0
- package/frontend/client/assets/route-DHmYUnJR.js +1 -0
- package/frontend/client/assets/route-DTjZQ_Fl.js +1 -0
- package/frontend/client/assets/route-D_dTeu1b.js +1 -0
- package/frontend/client/assets/{route-DkoXJmYM.js → route-Dj8gVemC.js} +1 -1
- package/frontend/client/assets/{route-DrtpzI6u.js → route-DnhPlHOi.js} +1 -1
- package/frontend/client/assets/route-FY92YQhF.js +1 -0
- package/frontend/client/assets/{route-CKiun7AR.js → route-PcLpZHbT.js} +1 -1
- package/frontend/client/assets/{route-BwhQptmx.js → route-qpE7i22X.js} +1 -1
- package/frontend/client/assets/{route-HA9dma-h.js → route-wK89gmoS.js} +1 -1
- package/frontend/client/assets/security-error-message-CMsTsiWf.js +1 -0
- package/frontend/client/assets/{shell-header-bar-CjPlfRKT.js → shell-header-bar-DRx10tE5.js} +1 -1
- package/frontend/client/assets/{terms-BGJD_l_i.js → terms-Bu9Itxxs.js} +1 -1
- package/frontend/client/assets/{use-totp-setup-Cwuds2tR.js → use-totp-setup-CoOXWOcT.js} +1 -1
- package/frontend/server/assets/{hydration-B63_G0fd.js → hydration-DWMjpNav.js} +1 -1
- package/frontend/server/assets/{root-loader.server-DUIBlg_3.js → root-loader.server-B4OqoLGG.js} +3 -3
- package/frontend/server/assets/{route-runtime.server-DiqwWb8W.js → route-runtime.server-03_pjVDT.js} +1 -1
- package/frontend/server/assets/{session-BaAt7WMI.js → session-sJkmzJie.js} +36 -24
- package/frontend/server/index.js +239 -193
- package/package.json +1 -1
- package/frontend/client/assets/document-navigation-Cnp3Alf0.js +0 -1
- package/frontend/client/assets/i18n-Dzv9HKFm.js +0 -1
- package/frontend/client/assets/manifest-71025d92.js +0 -1
- package/frontend/client/assets/route-B4jDMFTW.js +0 -1
- package/frontend/client/assets/route-C-DecXPL.js +0 -1
- package/frontend/client/assets/route-CGTMMDiX.js +0 -1
- package/frontend/client/assets/route-CMJbXiDe.js +0 -1
- package/frontend/client/assets/route-DBpAiakW.js +0 -1
- package/frontend/client/assets/route-DS92RKs5.js +0 -1
- package/frontend/client/assets/route-Dc6G2aDX.js +0 -1
- package/frontend/client/assets/route-DqAmRSJE.js +0 -1
- package/frontend/client/assets/route-Ezzcj26w.js +0 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { RequestContext } from '@mikro-orm/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BackgroundJobEntitySchema } from '../entities/background-job.entity.js';
|
|
4
|
+
import { DatabaseBackgroundJobStore } from '../entrypoints/scheduler/database.js';
|
|
5
|
+
import { DistributedBackgroundJobRunner, PermanentBackgroundJobError, } from '../entrypoints/scheduler/distributed-runner.js';
|
|
6
|
+
import { e } from '../schemas/error.js';
|
|
7
|
+
import { withUserSecurity } from './user-security.service.js';
|
|
8
|
+
const JOB_ID = 'security.mail';
|
|
9
|
+
const Envelope = z.object({ id: z.uuid(), sealed: z.string() });
|
|
10
|
+
const MailRequest = z.object({
|
|
11
|
+
kind: z.enum(['verification', 'password-reset']),
|
|
12
|
+
email: z.email(),
|
|
13
|
+
requestedAt: z.number(),
|
|
14
|
+
locale: z.enum(['ko', 'en', 'ja']).optional(),
|
|
15
|
+
userSub: z.string().optional(),
|
|
16
|
+
token: z.string().optional(),
|
|
17
|
+
userEpoch: z.string().optional(),
|
|
18
|
+
});
|
|
19
|
+
export class MailQueueService {
|
|
20
|
+
instanceId = `mail:${crypto.randomUUID()}`;
|
|
21
|
+
runner;
|
|
22
|
+
handle;
|
|
23
|
+
config;
|
|
24
|
+
mikro;
|
|
25
|
+
emailService;
|
|
26
|
+
security;
|
|
27
|
+
logger;
|
|
28
|
+
constructor(config, mikro, emailService, security, logger) {
|
|
29
|
+
this.config = config;
|
|
30
|
+
this.mikro = mikro;
|
|
31
|
+
this.emailService = emailService;
|
|
32
|
+
this.security = security;
|
|
33
|
+
this.logger = logger;
|
|
34
|
+
}
|
|
35
|
+
start() {
|
|
36
|
+
if (!this.config.email || this.handle)
|
|
37
|
+
return;
|
|
38
|
+
this.runner = new DistributedBackgroundJobRunner({
|
|
39
|
+
name: 'Security mail',
|
|
40
|
+
pollIntervalMs: 5000,
|
|
41
|
+
lockTtlMs: 60000,
|
|
42
|
+
retryDelayMs: 1000,
|
|
43
|
+
maxAttempts: 3,
|
|
44
|
+
retentionMs: 604800000,
|
|
45
|
+
instanceId: this.instanceId,
|
|
46
|
+
logger: this.logger,
|
|
47
|
+
store: new DatabaseBackgroundJobStore(this.mikro, [JOB_ID], true),
|
|
48
|
+
jobs: [
|
|
49
|
+
{
|
|
50
|
+
id: JOB_ID,
|
|
51
|
+
name: 'Authentication email',
|
|
52
|
+
handler: (payload, context) => RequestContext.create(this.mikro.orm.em, () => this.process(payload, context.signal)),
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
});
|
|
56
|
+
this.handle = this.runner.start();
|
|
57
|
+
}
|
|
58
|
+
async stop() {
|
|
59
|
+
await this.handle?.stop();
|
|
60
|
+
this.handle = undefined;
|
|
61
|
+
}
|
|
62
|
+
/** Explicit drain for embedded workers and deterministic tests; no polling sleeps. */
|
|
63
|
+
async runPending() {
|
|
64
|
+
await this.runner?.runPending();
|
|
65
|
+
}
|
|
66
|
+
async enqueue(kind, email, locale, userSub) {
|
|
67
|
+
if (!this.config.email)
|
|
68
|
+
throw new e.EmailNotActivated.Error();
|
|
69
|
+
const now = new Date();
|
|
70
|
+
const id = crypto.randomUUID();
|
|
71
|
+
const sealed = await this.security.sealMailPayload(JSON.stringify({
|
|
72
|
+
kind,
|
|
73
|
+
email,
|
|
74
|
+
locale,
|
|
75
|
+
userSub,
|
|
76
|
+
requestedAt: now.getTime(),
|
|
77
|
+
}));
|
|
78
|
+
// Use the request's transaction, unlike a detached scheduler enqueue.
|
|
79
|
+
await this.mikro.em.insert(BackgroundJobEntitySchema, {
|
|
80
|
+
id,
|
|
81
|
+
jobId: JOB_ID,
|
|
82
|
+
payload: JSON.stringify({ id, sealed }),
|
|
83
|
+
status: 'pending',
|
|
84
|
+
availableAt: now,
|
|
85
|
+
lockedBy: null,
|
|
86
|
+
lockedUntil: null,
|
|
87
|
+
attemptCount: 0,
|
|
88
|
+
maxAttempts: 3,
|
|
89
|
+
lastError: null,
|
|
90
|
+
completedAt: null,
|
|
91
|
+
created_at: now,
|
|
92
|
+
updated_at: now,
|
|
93
|
+
});
|
|
94
|
+
return id;
|
|
95
|
+
}
|
|
96
|
+
async process(payload, signal) {
|
|
97
|
+
const envelope = Envelope.safeParse(payload);
|
|
98
|
+
if (!envelope.success)
|
|
99
|
+
throw new Error('MAIL_PAYLOAD_INVALID');
|
|
100
|
+
const jobId = envelope.data.id;
|
|
101
|
+
try {
|
|
102
|
+
const clear = await this.security.openMailPayload(envelope.data.sealed);
|
|
103
|
+
if (!clear)
|
|
104
|
+
throw new Error('MAIL_PAYLOAD_INVALID');
|
|
105
|
+
const request = MailRequest.parse(JSON.parse(clear));
|
|
106
|
+
const candidate = await this.mikro.user.findOne({
|
|
107
|
+
email: request.email,
|
|
108
|
+
deleted_at: null,
|
|
109
|
+
});
|
|
110
|
+
if (!candidate ||
|
|
111
|
+
candidate.created_at.getTime() > request.requestedAt ||
|
|
112
|
+
(!request.userSub &&
|
|
113
|
+
candidate.created_at.getTime() === request.requestedAt) ||
|
|
114
|
+
(!request.token &&
|
|
115
|
+
candidate.updated_at.getTime() > request.requestedAt) ||
|
|
116
|
+
(!request.userSub &&
|
|
117
|
+
candidate.updated_at.getTime() === request.requestedAt) ||
|
|
118
|
+
(request.userSub && request.userSub !== candidate.sub))
|
|
119
|
+
return;
|
|
120
|
+
const prepared = await withUserSecurity(this.mikro, candidate.sub, async (user) => {
|
|
121
|
+
if (user.email !== request.email ||
|
|
122
|
+
(!request.token &&
|
|
123
|
+
user.updated_at.getTime() > request.requestedAt) ||
|
|
124
|
+
(request.token && request.userEpoch !== user.token_epoch) ||
|
|
125
|
+
(!request.userSub &&
|
|
126
|
+
user.updated_at.getTime() === request.requestedAt))
|
|
127
|
+
return null;
|
|
128
|
+
if (request.kind === 'verification'
|
|
129
|
+
? user.email_verified
|
|
130
|
+
: user.managed_by !== 'database')
|
|
131
|
+
return null;
|
|
132
|
+
if (!request.token && Date.now() - request.requestedAt > 3600000)
|
|
133
|
+
return null;
|
|
134
|
+
let token = request.token;
|
|
135
|
+
if (!token) {
|
|
136
|
+
const generated = request.kind === 'verification'
|
|
137
|
+
? await this.mikro.emailVerification.generateToken({
|
|
138
|
+
userSub: user.sub,
|
|
139
|
+
userEpoch: user.token_epoch,
|
|
140
|
+
})
|
|
141
|
+
: await this.mikro.passwordReset.generateToken({
|
|
142
|
+
userSub: user.sub,
|
|
143
|
+
userEpoch: user.token_epoch,
|
|
144
|
+
});
|
|
145
|
+
token = generated.token;
|
|
146
|
+
await this.mikro.em.flush();
|
|
147
|
+
const sealed = await this.security.sealMailPayload(JSON.stringify({
|
|
148
|
+
...request,
|
|
149
|
+
userSub: user.sub,
|
|
150
|
+
userEpoch: user.token_epoch,
|
|
151
|
+
token,
|
|
152
|
+
}));
|
|
153
|
+
const updated = await this.mikro.em.nativeUpdate(BackgroundJobEntitySchema, {
|
|
154
|
+
id: jobId,
|
|
155
|
+
lockedBy: this.instanceId,
|
|
156
|
+
status: 'running',
|
|
157
|
+
lockedUntil: { $gt: new Date() },
|
|
158
|
+
}, { payload: JSON.stringify({ id: jobId, sealed }) });
|
|
159
|
+
if (updated !== 1)
|
|
160
|
+
throw new Error('MAIL_LEASE_LOST');
|
|
161
|
+
}
|
|
162
|
+
const active = request.kind === 'verification'
|
|
163
|
+
? await this.mikro.emailVerification.count({
|
|
164
|
+
user: user.sub,
|
|
165
|
+
user_epoch: user.token_epoch,
|
|
166
|
+
token,
|
|
167
|
+
verified: false,
|
|
168
|
+
revoked_at: null,
|
|
169
|
+
expiresAt: { $gt: new Date() },
|
|
170
|
+
})
|
|
171
|
+
: await this.mikro.passwordReset.count({
|
|
172
|
+
user: user.sub,
|
|
173
|
+
user_epoch: user.token_epoch,
|
|
174
|
+
token,
|
|
175
|
+
used: false,
|
|
176
|
+
revoked_at: null,
|
|
177
|
+
expiresAt: { $gt: new Date() },
|
|
178
|
+
});
|
|
179
|
+
return active === 1
|
|
180
|
+
? {
|
|
181
|
+
token,
|
|
182
|
+
email: user.email,
|
|
183
|
+
locale: request.locale,
|
|
184
|
+
messageId: `<${jobId}@${new URL(this.config.server.public_origin).hostname}>`,
|
|
185
|
+
}
|
|
186
|
+
: null;
|
|
187
|
+
});
|
|
188
|
+
if (!prepared || signal?.aborted)
|
|
189
|
+
return;
|
|
190
|
+
const lease = await this.mikro.backgroundJob.count({
|
|
191
|
+
id: jobId,
|
|
192
|
+
lockedBy: this.instanceId,
|
|
193
|
+
status: 'running',
|
|
194
|
+
lockedUntil: { $gt: new Date() },
|
|
195
|
+
});
|
|
196
|
+
if (lease !== 1)
|
|
197
|
+
return;
|
|
198
|
+
this.logger.info({
|
|
199
|
+
jobId,
|
|
200
|
+
state: 'sending',
|
|
201
|
+
queueAgeMs: Date.now() - request.requestedAt,
|
|
202
|
+
}, 'Authentication mail');
|
|
203
|
+
if (request.kind === 'verification')
|
|
204
|
+
await this.emailService.sendVerificationEmail(prepared);
|
|
205
|
+
else
|
|
206
|
+
await this.emailService.sendPasswordResetEmail(prepared);
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
const responseCode = error instanceof Error ? Reflect.get(error, 'responseCode') : undefined;
|
|
210
|
+
const permanent = typeof responseCode === 'number' &&
|
|
211
|
+
responseCode >= 500 &&
|
|
212
|
+
responseCode < 600;
|
|
213
|
+
const code = permanent
|
|
214
|
+
? 'MAIL_PERMANENT_FAILURE'
|
|
215
|
+
: 'MAIL_DELIVERY_FAILED';
|
|
216
|
+
this.logger.warn({ jobId, code }, 'Authentication mail failed');
|
|
217
|
+
if (permanent)
|
|
218
|
+
throw new PermanentBackgroundJobError(code);
|
|
219
|
+
throw new Error(code);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=mail-queue.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail-queue.service.js","sourceRoot":"","sources":["../../src/services/mail-queue.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro.service.d.ts","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAoB3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,0DAA0D,CAAC;AACnH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AACnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro.service.d.ts","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAoB3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,0DAA0D,CAAC;AACnH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AACnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;AAG5G,qBAAa,YAAY;IACvB,SAAgB,GAAG,EAAE,QAAQ,CAAC;IAC9B,SAAgB,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,SAAgB,IAAI,EAAE,cAAc,CAAC;IACrC,SAAgB,SAAS,EAAE,mBAAmB,CAAC;IAC/C,SAAgB,SAAS,EAAE,mBAAmB,CAAC;IAC/C,SAAgB,eAAe,EAAE,yBAAyB,CAAC;IAC3D,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,iBAAiB,EAAE,2BAA2B,CAAC;IAC/D,SAAgB,aAAa,EAAE,uBAAuB,CAAC;IACvD,SAAgB,wBAAwB,EAAE,kCAAkC,CAAC;IAC7E,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IACrD,SAAgB,aAAa,EAAE,uBAAuB,CAAC;IACvD,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IACrD,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,gBAAgB,EAAE,0BAA0B,CAAC;IAC7D,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAC7C,SAAgB,oBAAoB,EAAE,8BAA8B,CAAC;IACrE,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,KAAK,EAAE,eAAe,CAAC;IACvC,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IAErD,OAAO,eA4BN;IAED,OAAoB,UAAU,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CASvB;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAElC;CACF"}
|
|
@@ -18,6 +18,7 @@ import { UserPasskeyEntitySchema } from '../entities/user-passkey.entity.js';
|
|
|
18
18
|
import { UserTermsConsentEntity } from '../entities/user-terms-consent.entity.js';
|
|
19
19
|
import { UserTotpEntitySchema } from '../entities/user-totp.entity.js';
|
|
20
20
|
import { UserTotpRecoveryCodeEntitySchema } from '../entities/user-totp-recovery-code.entity.js';
|
|
21
|
+
import { initializeTermsPolicy } from './terms-policy.service.js';
|
|
21
22
|
export class MikroService {
|
|
22
23
|
orm;
|
|
23
24
|
em;
|
|
@@ -67,6 +68,7 @@ export class MikroService {
|
|
|
67
68
|
logger.info('Initializing MikroORM...');
|
|
68
69
|
const orm = await MikroORM.init(await config.database.getMikroOrmOptions());
|
|
69
70
|
await config.database.initialize(orm);
|
|
71
|
+
await initializeTermsPolicy(orm.em.fork());
|
|
70
72
|
logger.info('MikroORM initialized');
|
|
71
73
|
return new MikroService(orm);
|
|
72
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro.service.js","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,oCAAoC,EAAE,MAAM,kDAAkD,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro.service.js","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,oCAAoC,EAAE,MAAM,kDAAkD,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AAsBjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,OAAO,YAAY;IACP,GAAG,CAAW;IACd,EAAE,CAAiB;IACnB,IAAI,CAAiB;IACrB,SAAS,CAAsB;IAC/B,SAAS,CAAsB;IAC/B,eAAe,CAA4B;IAC3C,WAAW,CAAwB;IACnC,iBAAiB,CAA8B;IAC/C,aAAa,CAA0B;IACvC,wBAAwB,CAAqC;IAC7D,MAAM,CAAmB;IACzB,YAAY,CAAyB;IACrC,aAAa,CAA0B;IACvC,YAAY,CAAyB;IACrC,WAAW,CAAwB;IACnC,gBAAgB,CAA6B;IAC7C,QAAQ,CAAqB;IAC7B,oBAAoB,CAAiC;IACrD,WAAW,CAAwB;IACnC,KAAK,CAAkB;IACvB,YAAY,CAAyB;IAErD,YAAoB,GAAa;QAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAC3C,6BAA6B,CAC9B,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACrE,IAAI,CAAC,wBAAwB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAClD,oCAAoC,CACrC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAC9C,gCAAgC,CACjC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACrE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAU,CAC5B,MAA4B,EAC5B,MAAc;QAEd,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC5E,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEpC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -2,6 +2,7 @@ import type z from 'zod';
|
|
|
2
2
|
import type { IssuaryRuntimeConfig } from '../lib/config/index.ts';
|
|
3
3
|
import type { AccountSelectionSession, ReauthenticationSession } from '../middleware/session.ts';
|
|
4
4
|
import type { f } from '../schemas/field.ts';
|
|
5
|
+
import type { AuthorizationProof } from './authorization-browser.service.js';
|
|
5
6
|
import type { JwtService } from './jwt.service.ts';
|
|
6
7
|
import type { MikroService } from './mikro.service.ts';
|
|
7
8
|
import type { OAuthClientService } from './oauth-client.service.ts';
|
|
@@ -74,6 +75,8 @@ export declare class OAuthAuthorizeService {
|
|
|
74
75
|
*/
|
|
75
76
|
authorize(params: {
|
|
76
77
|
query: AuthorizeParams;
|
|
78
|
+
completeAuthorization?: (proof: AuthorizationProof, operation: () => Promise<AuthorizeResult>) => Promise<AuthorizeResult>;
|
|
79
|
+
authenticationEpochs?: Record<string, string>;
|
|
77
80
|
userSession?: {
|
|
78
81
|
sub: string;
|
|
79
82
|
/** OIDC: Time when End-User authentication occurred (Unix timestamp) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-authorize.service.d.ts","sourceRoot":"","sources":["../../src/services/oauth-authorize.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"oauth-authorize.service.d.ts","sourceRoot":"","sources":["../../src/services/oauth-authorize.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -179,122 +179,148 @@ export class OAuthAuthorizeService {
|
|
|
179
179
|
throw new e.InvalidAuthorizationRequest.Error();
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
-
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
182
|
+
let grantedScopes = [];
|
|
183
|
+
const checkPolicy = async (current) => {
|
|
184
|
+
// Complete required terms for the selected account before any grant.
|
|
185
|
+
const pendingTerms = await this.termsService.getPendingRequiredTerms(selectedSession.sub);
|
|
186
|
+
if (pendingTerms.length > 0) {
|
|
187
|
+
if (prompts.includes('none')) {
|
|
188
|
+
return this.buildErrorAuthorizationResult({
|
|
189
|
+
redirectUri: query.redirect_uri,
|
|
190
|
+
error: 'interaction_required',
|
|
191
|
+
errorDescription: 'The End-User must accept the required terms.',
|
|
192
|
+
state: query.state,
|
|
193
|
+
responseType: query.response_type,
|
|
194
|
+
responseMode: query.response_mode,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
const continuation = new URL('/oauth/authorize', this.config.server.public_origin);
|
|
198
|
+
this.copyAuthorizeParams(continuation, query);
|
|
199
|
+
const termsUrl = new URL('/terms', this.config.server.public_origin);
|
|
200
|
+
termsUrl.searchParams.set('redirect', `${continuation.pathname}${continuation.search}`);
|
|
201
|
+
return { type: 'redirect', url: termsUrl.toString() };
|
|
194
202
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
203
|
+
grantedScopes = await this.userConsentService.resolveScopes({
|
|
204
|
+
userSub: selectedSession.sub,
|
|
205
|
+
clientId: current.id,
|
|
206
|
+
requestedScopes,
|
|
207
|
+
responseType: query.response_type,
|
|
208
|
+
prompt: query.prompt,
|
|
209
|
+
skipConsent: current.skipConsent,
|
|
210
|
+
});
|
|
211
|
+
// 9. Check if consent is required (using IDs, not entities)
|
|
212
|
+
const requiresConsent = await this.userConsentService.requiresConsent({
|
|
213
|
+
userSub: selectedSession.sub,
|
|
214
|
+
clientId: current.id,
|
|
215
|
+
requestedScopes: grantedScopes,
|
|
216
|
+
prompt: prompts.includes('consent') ? 'consent' : undefined,
|
|
217
|
+
skipConsent: current.skipConsent,
|
|
218
|
+
});
|
|
219
|
+
if (requiresConsent) {
|
|
220
|
+
// Handle prompt=none - must return error if consent is required
|
|
221
|
+
if (prompts.includes('none')) {
|
|
222
|
+
return this.buildErrorAuthorizationResult({
|
|
223
|
+
redirectUri: query.redirect_uri,
|
|
224
|
+
error: 'consent_required',
|
|
225
|
+
errorDescription: 'The Authorization Server requires End-User consent.',
|
|
226
|
+
state: query.state,
|
|
227
|
+
responseType: query.response_type,
|
|
228
|
+
responseMode: query.response_mode,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
// Redirect to consent page
|
|
232
|
+
if (hasFreshReauthentication) {
|
|
233
|
+
const consentReauthentication = this.createReauthenticationSession(this.buildConsentReauthenticationQuery(query));
|
|
234
|
+
params.setReauthenticationSession?.({
|
|
235
|
+
...consentReauthentication,
|
|
236
|
+
sub: userSession.sub,
|
|
237
|
+
authenticated_at: userSession.authenticated_at,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
const consentUrl = this.buildConsentRedirectUrl(query);
|
|
241
|
+
return {
|
|
242
|
+
type: 'redirect',
|
|
243
|
+
url: consentUrl,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
return undefined;
|
|
247
|
+
};
|
|
248
|
+
const preflight = await checkPolicy(client);
|
|
249
|
+
if (preflight)
|
|
250
|
+
return preflight;
|
|
251
|
+
if (!params.completeAuthorization)
|
|
252
|
+
throw new e.Unauthorized.Error();
|
|
253
|
+
return params.completeAuthorization({
|
|
202
254
|
userSub: selectedSession.sub,
|
|
255
|
+
userEpoch: params.authenticationEpochs?.[selectedSession.sub] ?? '',
|
|
203
256
|
clientId: client.id,
|
|
204
|
-
|
|
257
|
+
clientEpoch: client.tokenEpoch ?? '',
|
|
258
|
+
redirectUri: query.redirect_uri,
|
|
205
259
|
responseType: query.response_type,
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
260
|
+
scopes: grantedScopes,
|
|
261
|
+
}, async () => {
|
|
262
|
+
const current = await this.oauthClientService.findByClientId(client.clientId);
|
|
263
|
+
const pendingPolicy = await checkPolicy(current);
|
|
264
|
+
if (pendingPolicy)
|
|
265
|
+
return pendingPolicy;
|
|
266
|
+
if (isImplicitIdToken) {
|
|
267
|
+
if (!query.nonce) {
|
|
268
|
+
throw new e.InvalidAuthorizationRequest.Error();
|
|
269
|
+
}
|
|
270
|
+
params.clearAccountSelectionSession?.();
|
|
271
|
+
return this.buildImplicitIdTokenRedirect({
|
|
272
|
+
clientId: client.clientId,
|
|
273
|
+
userSub: selectedSession.sub,
|
|
274
|
+
userEpoch: params.authenticationEpochs?.[selectedSession.sub] ?? '',
|
|
221
275
|
redirectUri: query.redirect_uri,
|
|
222
|
-
|
|
223
|
-
|
|
276
|
+
scope: grantedScopes,
|
|
277
|
+
nonce: query.nonce,
|
|
224
278
|
state: query.state,
|
|
225
|
-
|
|
279
|
+
authTime: selectedSession.authenticated_at,
|
|
226
280
|
responseMode: query.response_mode,
|
|
227
281
|
});
|
|
228
282
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
params.setReauthenticationSession?.({
|
|
233
|
-
...consentReauthentication,
|
|
234
|
-
sub: userSession.sub,
|
|
235
|
-
authenticated_at: userSession.authenticated_at,
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
const consentUrl = this.buildConsentRedirectUrl(query);
|
|
239
|
-
return {
|
|
240
|
-
type: 'redirect',
|
|
241
|
-
url: consentUrl,
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
if (isImplicitIdToken) {
|
|
245
|
-
if (!query.nonce) {
|
|
246
|
-
throw new e.InvalidAuthorizationRequest.Error();
|
|
247
|
-
}
|
|
248
|
-
params.clearAccountSelectionSession?.();
|
|
249
|
-
return this.buildImplicitIdTokenRedirect({
|
|
250
|
-
clientId: client.clientId,
|
|
283
|
+
const codeParams = {
|
|
284
|
+
clientId: client.id,
|
|
285
|
+
clientEpoch: client.tokenEpoch ?? '',
|
|
251
286
|
userSub: selectedSession.sub,
|
|
287
|
+
userEpoch: params.authenticationEpochs?.[selectedSession.sub] ?? '',
|
|
252
288
|
redirectUri: query.redirect_uri,
|
|
253
289
|
scope: grantedScopes,
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
const callbackUrl = this.buildCallbackUrl(code, query.state, query.redirect_uri, query.response_mode);
|
|
283
|
-
if (query.response_mode === 'form_post') {
|
|
284
|
-
const params = { code };
|
|
285
|
-
if (query.state) {
|
|
286
|
-
params['state'] = query.state;
|
|
290
|
+
};
|
|
291
|
+
if (query.nonce) {
|
|
292
|
+
codeParams.nonce = query.nonce;
|
|
293
|
+
}
|
|
294
|
+
if (query.code_challenge) {
|
|
295
|
+
codeParams.codeChallenge = query.code_challenge;
|
|
296
|
+
}
|
|
297
|
+
if (query.code_challenge_method) {
|
|
298
|
+
codeParams.codeChallengeMethod = query.code_challenge_method;
|
|
299
|
+
}
|
|
300
|
+
// Include OIDC authentication metadata from session
|
|
301
|
+
if (userSession) {
|
|
302
|
+
codeParams.authTime = selectedSession.authenticated_at;
|
|
303
|
+
}
|
|
304
|
+
const code = await this.generateAuthorizationCode(codeParams);
|
|
305
|
+
params.clearAccountSelectionSession?.();
|
|
306
|
+
// 10. Redirect back to client with authorization code
|
|
307
|
+
const callbackUrl = this.buildCallbackUrl(code, query.state, query.redirect_uri, query.response_mode);
|
|
308
|
+
if (query.response_mode === 'form_post') {
|
|
309
|
+
const params = { code };
|
|
310
|
+
if (query.state) {
|
|
311
|
+
params['state'] = query.state;
|
|
312
|
+
}
|
|
313
|
+
return {
|
|
314
|
+
type: 'form_post',
|
|
315
|
+
url: query.redirect_uri,
|
|
316
|
+
params,
|
|
317
|
+
};
|
|
287
318
|
}
|
|
288
319
|
return {
|
|
289
|
-
type: '
|
|
290
|
-
url:
|
|
291
|
-
params,
|
|
320
|
+
type: 'redirect',
|
|
321
|
+
url: callbackUrl,
|
|
292
322
|
};
|
|
293
|
-
}
|
|
294
|
-
return {
|
|
295
|
-
type: 'redirect',
|
|
296
|
-
url: callbackUrl,
|
|
297
|
-
};
|
|
323
|
+
});
|
|
298
324
|
}
|
|
299
325
|
parseResponseMode(responseMode) {
|
|
300
326
|
if (responseMode === undefined) {
|
|
@@ -736,6 +762,8 @@ export class OAuthAuthorizeService {
|
|
|
736
762
|
const user = await this.mikro.user.findOneOrFail({ sub: params.userSub }, {
|
|
737
763
|
failHandler: () => new e.UserNotFound.Error(),
|
|
738
764
|
});
|
|
765
|
+
if (user.deleted_at || user.token_epoch !== params.userEpoch)
|
|
766
|
+
throw new e.Unauthorized.Error();
|
|
739
767
|
const idTokenPayload = {
|
|
740
768
|
sub: user.sub,
|
|
741
769
|
aud: params.clientId,
|
|
@@ -808,7 +836,9 @@ export class OAuthAuthorizeService {
|
|
|
808
836
|
async generateAuthorizationCode(params) {
|
|
809
837
|
const codeParams = {
|
|
810
838
|
clientId: params.clientId,
|
|
839
|
+
clientEpoch: params.clientEpoch,
|
|
811
840
|
userSub: params.userSub,
|
|
841
|
+
userEpoch: params.userEpoch,
|
|
812
842
|
redirectUri: params.redirectUri,
|
|
813
843
|
scope: params.scope,
|
|
814
844
|
};
|