@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.
- 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 +438 -424
- 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/client.js +1 -1
- package/dist/lib/config/client.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 +9 -3
- 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/select.post.d.ts +6 -6
- 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/get.d.ts +3 -0
- package/dist/routes/api/consent/get.d.ts.map +1 -1
- package/dist/routes/api/consent/get.js +26 -4
- package/dist/routes/api/consent/get.js.map +1 -1
- package/dist/routes/api/consent/index.d.ts +3 -0
- package/dist/routes/api/consent/index.d.ts.map +1 -1
- package/dist/routes/api/consent/post.d.ts.map +1 -1
- package/dist/routes/api/consent/post.js +142 -114
- 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 +382 -379
- package/dist/routes/api/index.d.ts.map +1 -1
- 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.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 +9 -9
- 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/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 +243 -230
- 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 +9 -9
- 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 +19 -9
- 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 +7 -3
- 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 +6 -1
- package/dist/services/oauth-authorize.service.d.ts.map +1 -1
- package/dist/services/oauth-authorize.service.js +136 -77
- 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/terms.service.d.ts.map +1 -1
- package/dist/services/terms.service.js +3 -2
- package/dist/services/terms.service.js.map +1 -1
- 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-consent.service.d.ts +12 -0
- package/dist/services/user-consent.service.d.ts.map +1 -1
- package/dist/services/user-consent.service.js +19 -1
- package/dist/services/user-consent.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-B4h13HhN.js → auth-layout-sea6nww4.js} +1 -1
- package/frontend/client/assets/{auth-page-header-BVY4zRzF.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-Jso2cQNI.js +1 -0
- package/frontend/client/assets/manifest-90703545.js +1 -0
- package/frontend/client/assets/oauth-search-DebNssaC.js +1 -0
- package/frontend/client/assets/{passkey-CWcdr7Vy.js → passkey-CJhT-7yO.js} +1 -1
- package/frontend/client/assets/{promise-EbDcmV0j.js → promise-BP9iSIs-.js} +1 -1
- package/frontend/client/assets/{root-C2SlHCkE.js → root-BkavuloG.js} +1 -1
- package/frontend/client/assets/{route-3gQ9Nsqa.js → route-B0udr9eT.js} +1 -1
- package/frontend/client/assets/route-B3Uv9aTa.js +1 -0
- package/frontend/client/assets/{route-DSD60oyb.js → route-B6hIfgxz.js} +1 -1
- package/frontend/client/assets/{route-DO38I3ML.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-C7C3Z0vI.js +1 -0
- package/frontend/client/assets/{route-DQpLeFuG.js → route-CVyefM3x.js} +1 -1
- package/frontend/client/assets/{route-CkpB3-_U.js → route-CXth2Wqz.js} +1 -1
- package/frontend/client/assets/{route-9FLiqn21.js → route-Clxc1C2d.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-CrswLAAa.js → route-Dj8gVemC.js} +1 -1
- package/frontend/client/assets/{route-BUM2hTU8.js → route-DnhPlHOi.js} +1 -1
- package/frontend/client/assets/route-FY92YQhF.js +1 -0
- package/frontend/client/assets/{route-DH6kQz8L.js → route-PcLpZHbT.js} +1 -1
- package/frontend/client/assets/{route-bKG0wKRh.js → route-qpE7i22X.js} +1 -1
- package/frontend/client/assets/{route-3IIrVTOK.js → route-wK89gmoS.js} +1 -1
- package/frontend/client/assets/security-error-message-CMsTsiWf.js +1 -0
- package/frontend/client/assets/{shell-header-bar-Bg85QIAq.js → shell-header-bar-DRx10tE5.js} +1 -1
- package/frontend/client/assets/{terms-DV0oDTRf.js → terms-Bu9Itxxs.js} +1 -1
- package/frontend/client/assets/{use-totp-setup-D7XZ6Nos.js → use-totp-setup-CoOXWOcT.js} +1 -1
- package/frontend/server/assets/{hydration-Cvbp7-6s.js → hydration-DWMjpNav.js} +1 -1
- package/frontend/server/assets/{root-loader.server-DaTcVcNU.js → root-loader.server-B4OqoLGG.js} +3 -3
- package/frontend/server/assets/{route-runtime.server-CEa264cW.js → route-runtime.server-03_pjVDT.js} +1 -1
- package/frontend/server/assets/{session-QqvIIQ6R.js → session-sJkmzJie.js} +51 -57
- package/frontend/server/index.js +337 -403
- package/package.json +1 -1
- package/frontend/client/assets/authorization-context-banner-az4f8FCY.js +0 -1
- package/frontend/client/assets/document-navigation-Cnp3Alf0.js +0 -1
- package/frontend/client/assets/i18n-CMepi_uj.js +0 -1
- package/frontend/client/assets/language-selector-Chn-k7Pw.js +0 -1
- package/frontend/client/assets/manifest-8c4a603f.js +0 -1
- package/frontend/client/assets/oauth-search-DybZ6VWp.js +0 -1
- package/frontend/client/assets/route-BFU8OK2a.js +0 -1
- package/frontend/client/assets/route-BKI6LDOW.js +0 -1
- package/frontend/client/assets/route-CusK9Y2K.js +0 -1
- package/frontend/client/assets/route-DEVG2czp.js +0 -1
- package/frontend/client/assets/route-DjCJn53Y.js +0 -1
- package/frontend/client/assets/route-E-_SSP-x.js +0 -1
- package/frontend/client/assets/route-J9z_OG4L.js +0 -1
- package/frontend/client/assets/route-LjqDZz5f.js +0 -1
- package/frontend/client/assets/route-N586tYcn.js +0 -1
- package/frontend/client/assets/route-nHjY3_n0.js +0 -1
- package/frontend/client/assets/route-sHm4cfOd.js +0 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createMiddleware } from 'hono/factory';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { requestIp } from '../lib/request-ip.js';
|
|
4
|
+
import { e } from '../schemas/error.js';
|
|
5
|
+
import { clearAuthBudget, consumeAuthBudget, } from '../services/auth-budget.service.js';
|
|
6
|
+
const EMAIL_PATHS = new Set([
|
|
7
|
+
'/api/auth/login',
|
|
8
|
+
'/api/auth/register',
|
|
9
|
+
'/api/auth/password/forgot',
|
|
10
|
+
'/api/auth/email/resend',
|
|
11
|
+
]);
|
|
12
|
+
const OTP_PATHS = new Set([
|
|
13
|
+
'/api/auth/totp/verify',
|
|
14
|
+
'/api/auth/totp/recovery/verify',
|
|
15
|
+
'/api/user/totp/verify',
|
|
16
|
+
'/api/user/totp/recovery/regenerate',
|
|
17
|
+
'/api/user/totp',
|
|
18
|
+
]);
|
|
19
|
+
export const authBudget = createMiddleware(async (c, next) => {
|
|
20
|
+
const path = c.req.path;
|
|
21
|
+
const requestedAt = Date.now();
|
|
22
|
+
if (!['POST', 'PUT', 'DELETE'].includes(c.req.method))
|
|
23
|
+
return next();
|
|
24
|
+
const peer = requestIp(c.env, c.req.header('x-forwarded-for'), c.var.services.config.server.trust_proxy);
|
|
25
|
+
const sensitive = path.startsWith('/api/auth/') ||
|
|
26
|
+
path.startsWith('/api/user/') ||
|
|
27
|
+
path.startsWith('/oauth/');
|
|
28
|
+
if (peer && sensitive) {
|
|
29
|
+
const retryAfter = await consumeAuthBudget(c.var.services.mikro, c.var.services.securityService, `source:${peer}`, 600, 60);
|
|
30
|
+
if (retryAfter !== null) {
|
|
31
|
+
c.header('Retry-After', String(retryAfter));
|
|
32
|
+
throw new e.TooManyRequests.Error();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
let key;
|
|
36
|
+
let limit = 20;
|
|
37
|
+
let windowSeconds = 600;
|
|
38
|
+
if (EMAIL_PATHS.has(path)) {
|
|
39
|
+
let body;
|
|
40
|
+
try {
|
|
41
|
+
body = await c.req.json();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return next();
|
|
45
|
+
}
|
|
46
|
+
const input = z.object({ email: z.email().max(320) }).safeParse(body);
|
|
47
|
+
if (input.success) {
|
|
48
|
+
key = `${path}:${input.data.email.toLowerCase()}`;
|
|
49
|
+
if (path.endsWith('/resend') || path.endsWith('/forgot')) {
|
|
50
|
+
limit = 3;
|
|
51
|
+
windowSeconds = 60;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (OTP_PATHS.has(path)) {
|
|
56
|
+
const subject = path.startsWith('/api/auth/')
|
|
57
|
+
? c.var.session.get('pending2FAUser')?.sub
|
|
58
|
+
: path === '/api/user/totp/verify'
|
|
59
|
+
? (c.var.session.get('pending2FASetup')?.sub ??
|
|
60
|
+
c.var.session.get('user')?.sub)
|
|
61
|
+
: c.var.session.get('user')?.sub;
|
|
62
|
+
if (subject) {
|
|
63
|
+
key = `otp:${subject}`;
|
|
64
|
+
limit = 10;
|
|
65
|
+
windowSeconds = 300;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (key) {
|
|
69
|
+
const retryAfter = await consumeAuthBudget(c.var.services.mikro, c.var.services.securityService, key, limit, windowSeconds);
|
|
70
|
+
if (retryAfter !== null) {
|
|
71
|
+
c.header('Retry-After', String(retryAfter));
|
|
72
|
+
throw new e.TooManyRequests.Error();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
await next();
|
|
76
|
+
if (key && path === '/api/auth/login' && c.res.status === 200) {
|
|
77
|
+
await clearAuthBudget(c.var.services.mikro, c.var.services.securityService, key, windowSeconds, requestedAt);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=auth-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-budget.js","sourceRoot":"","sources":["../../src/middleware/auth-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SessionStore } from '../services/browser-session.service.js';
|
|
1
2
|
export type SessionEnv = {
|
|
2
3
|
Variables: {
|
|
3
4
|
session: SessionHelper;
|
|
@@ -27,6 +28,17 @@ export interface ReauthenticationSession {
|
|
|
27
28
|
request_fingerprint?: string;
|
|
28
29
|
}
|
|
29
30
|
export interface SessionData {
|
|
31
|
+
totpSetupVerification?: {
|
|
32
|
+
sub: string;
|
|
33
|
+
totpId: string;
|
|
34
|
+
step: number;
|
|
35
|
+
};
|
|
36
|
+
security?: {
|
|
37
|
+
grants: Record<string, string>;
|
|
38
|
+
pendingExpiresAt?: number;
|
|
39
|
+
challengeExpiresAt?: number;
|
|
40
|
+
oauthExpiresAt?: number;
|
|
41
|
+
};
|
|
30
42
|
/**
|
|
31
43
|
* Fully authenticated user session.
|
|
32
44
|
* Set after successful login (password, OAuth, passkey) and 2FA verification.
|
|
@@ -40,7 +52,7 @@ export interface SessionData {
|
|
|
40
52
|
};
|
|
41
53
|
/**
|
|
42
54
|
* Browser-local remembered authenticated accounts for OIDC account selection.
|
|
43
|
-
* This is stored only in the
|
|
55
|
+
* This is stored only in the server-side session and must never be
|
|
44
56
|
* treated as an authoritative user directory.
|
|
45
57
|
*/
|
|
46
58
|
accounts?: SessionAccount[];
|
|
@@ -83,6 +95,8 @@ export interface SessionData {
|
|
|
83
95
|
codeVerifier: string;
|
|
84
96
|
providerId: string;
|
|
85
97
|
mode: 'login' | 'register' | 'link';
|
|
98
|
+
linkSubject?: string;
|
|
99
|
+
linkEpoch?: string;
|
|
86
100
|
returnUrl?: string | undefined;
|
|
87
101
|
};
|
|
88
102
|
/**
|
|
@@ -93,15 +107,19 @@ export interface SessionData {
|
|
|
93
107
|
passkey_challenge?: string;
|
|
94
108
|
}
|
|
95
109
|
export interface SessionHelper {
|
|
110
|
+
readonly id: string;
|
|
111
|
+
readonly revision: number;
|
|
112
|
+
readonly authorization: Readonly<SessionData>;
|
|
113
|
+
atomic<T>(operation: () => Promise<T>): Promise<T>;
|
|
96
114
|
get<K extends keyof SessionData>(key: K): SessionData[K];
|
|
97
115
|
set<K extends keyof SessionData>(key: K, value: SessionData[K]): void;
|
|
98
116
|
delete(): void;
|
|
99
|
-
setUserSession(userSub: string, authenticatedAt?: number): void;
|
|
117
|
+
setUserSession(userSub: string, epoch: string, authenticatedAt?: number): void;
|
|
100
118
|
selectUserSession(userSub: string): boolean;
|
|
101
119
|
removeRememberedUserSession(userSub: string): boolean;
|
|
102
|
-
setPending2FASession(userSub: string, authenticatedAt?: number): void;
|
|
103
|
-
setPending2FASetupSession(userSub: string): void;
|
|
120
|
+
setPending2FASession(userSub: string, epoch: string, authenticatedAt?: number): void;
|
|
121
|
+
setPending2FASetupSession(userSub: string, epoch: string): void;
|
|
104
122
|
clearAuthSessions(): void;
|
|
105
123
|
}
|
|
106
|
-
export declare function sessionMiddleware(cookieSecret: string, isSecure: boolean, rememberedAccountsOptions
|
|
124
|
+
export declare function sessionMiddleware(cookieSecret: string, isSecure: boolean, rememberedAccountsOptions: RememberedAccountsOptions | undefined, store: SessionStore): import("hono").MiddlewareHandler<SessionEnv, string, {}, Response>;
|
|
107
125
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/middleware/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/middleware/session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG;IAAE,SAAS,EAAE;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,CAAA;CAAE,CAAC;AAInE,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAqCD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,qBAAqB,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF;;;;;;OAMG;IACH,IAAI,CAAC,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C;;;;OAIG;IACH,cAAc,CAAC,EAAE;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAChB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF;;;;;OAKG;IACH,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;QACpC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,CAAC;IACF;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACnD,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,MAAM,IAAI,IAAI,CAAC;IACf,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,MAAM,GACvB,IAAI,CAAC;IACR,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,MAAM,GACvB,IAAI,CAAC;IACR,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChE,iBAAiB,IAAI,IAAI,CAAC;CAC3B;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,OAAO,EACjB,yBAAyB,EAAE,yBAAyB,GAAG,SAAS,EAChE,KAAK,EAAE,YAAY,sEAsVpB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { deleteCookie, getCookie, setCookie } from 'hono/cookie';
|
|
2
2
|
import { createMiddleware } from 'hono/factory';
|
|
3
|
+
import { z } from 'zod';
|
|
3
4
|
import { decrypt, encrypt } from '../lib/crypto.js';
|
|
5
|
+
import { e } from '../schemas/error.js';
|
|
4
6
|
const DEFAULT_MAX_REMEMBERED_ACCOUNTS = 5;
|
|
5
7
|
function nowSeconds() {
|
|
6
8
|
return Math.floor(Date.now() / 1000);
|
|
@@ -19,25 +21,53 @@ function pruneRememberedAccounts(accounts, options) {
|
|
|
19
21
|
: accounts.filter((account) => nowSeconds() - account.last_used_at <= ttlSeconds);
|
|
20
22
|
return freshAccounts.slice(-options.maxAccounts);
|
|
21
23
|
}
|
|
22
|
-
export function sessionMiddleware(cookieSecret, isSecure, rememberedAccountsOptions) {
|
|
24
|
+
export function sessionMiddleware(cookieSecret, isSecure, rememberedAccountsOptions, store) {
|
|
23
25
|
const rememberedOptions = resolveRememberedAccountsOptions(rememberedAccountsOptions);
|
|
24
26
|
return createMiddleware(async (c, next) => {
|
|
25
|
-
const
|
|
27
|
+
const requestStartedAt = Date.now();
|
|
28
|
+
const mainCookie = getCookie(c, 'session');
|
|
29
|
+
const isFormPostCallback = c.req.method === 'POST' &&
|
|
30
|
+
/^\/api\/oauth\/[^/]+\/callback$/.test(c.req.path);
|
|
31
|
+
const cookieValue = mainCookie ??
|
|
32
|
+
(isFormPostCallback ? getCookie(c, 'oauth_state') : undefined);
|
|
33
|
+
let stored = null;
|
|
26
34
|
let sessionData = {};
|
|
35
|
+
let locatorId;
|
|
27
36
|
if (cookieValue) {
|
|
28
37
|
const decrypted = await decrypt(cookieValue, cookieSecret);
|
|
29
38
|
if (decrypted) {
|
|
30
39
|
try {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
const locator = z
|
|
41
|
+
.object({
|
|
42
|
+
sid: z.uuid(),
|
|
43
|
+
kind: z.literal(mainCookie ? 'session' : 'oauth'),
|
|
44
|
+
})
|
|
45
|
+
.parse(JSON.parse(decrypted));
|
|
46
|
+
locatorId = locator.sid;
|
|
34
47
|
}
|
|
35
48
|
catch {
|
|
36
49
|
sessionData = {};
|
|
37
50
|
}
|
|
38
51
|
}
|
|
39
52
|
}
|
|
53
|
+
if (store && locatorId) {
|
|
54
|
+
stored = await store.load(locatorId);
|
|
55
|
+
sessionData = stored?.data ?? {};
|
|
56
|
+
}
|
|
57
|
+
const sessionId = stored?.id ?? crypto.randomUUID();
|
|
40
58
|
let changed = false;
|
|
59
|
+
let elevated = false;
|
|
60
|
+
if (store && sessionData.security) {
|
|
61
|
+
const security = sessionData.security;
|
|
62
|
+
if ((security.pendingExpiresAt ?? 0) <= requestStartedAt) {
|
|
63
|
+
delete sessionData.pending2FAUser;
|
|
64
|
+
delete sessionData.pending2FASetup;
|
|
65
|
+
}
|
|
66
|
+
if ((security.challengeExpiresAt ?? 0) <= requestStartedAt)
|
|
67
|
+
delete sessionData.passkey_challenge;
|
|
68
|
+
if ((security.oauthExpiresAt ?? 0) <= requestStartedAt)
|
|
69
|
+
delete sessionData.oauth;
|
|
70
|
+
}
|
|
41
71
|
const data = new Proxy(sessionData, {
|
|
42
72
|
set(target, prop, value) {
|
|
43
73
|
changed = true;
|
|
@@ -59,25 +89,121 @@ export function sessionMiddleware(cookieSecret, isSecure, rememberedAccountsOpti
|
|
|
59
89
|
data.accounts = prunedAccounts;
|
|
60
90
|
}
|
|
61
91
|
}
|
|
92
|
+
// A primary-authentication proof cannot renew an older MFA-completed grant.
|
|
93
|
+
const replaceSubjectEpoch = (sub, epoch) => {
|
|
94
|
+
if (data.security?.grants[sub] !== epoch) {
|
|
95
|
+
if (data.user?.sub === sub)
|
|
96
|
+
delete data.user;
|
|
97
|
+
if (data.pending2FAUser?.sub === sub)
|
|
98
|
+
delete data.pending2FAUser;
|
|
99
|
+
if (data.pending2FASetup?.sub === sub)
|
|
100
|
+
delete data.pending2FASetup;
|
|
101
|
+
if (data.reauthentication?.sub === sub)
|
|
102
|
+
delete data.reauthentication;
|
|
103
|
+
if (data.totpSetupVerification?.sub === sub)
|
|
104
|
+
delete data.totpSetupVerification;
|
|
105
|
+
if (data.accounts)
|
|
106
|
+
data.accounts = data.accounts.filter((account) => account.sub !== sub);
|
|
107
|
+
if (data.accountSelection)
|
|
108
|
+
data.accountSelection = {
|
|
109
|
+
...data.accountSelection,
|
|
110
|
+
allowed_subs: data.accountSelection.allowed_subs.filter((value) => value !== sub),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
data.security ??= { grants: {} };
|
|
114
|
+
data.security.grants[sub] = epoch;
|
|
115
|
+
};
|
|
116
|
+
let committed = false;
|
|
117
|
+
let committedRecord = null;
|
|
118
|
+
const persistSession = async () => {
|
|
119
|
+
const hasData = Object.entries(sessionData).some(([key, value]) => key !== 'security' && value !== undefined);
|
|
120
|
+
if (!hasData) {
|
|
121
|
+
if (stored)
|
|
122
|
+
await store.remove(stored.id);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const record = stored
|
|
126
|
+
? { ...stored, data: sessionData }
|
|
127
|
+
: {
|
|
128
|
+
id: sessionId,
|
|
129
|
+
data: sessionData,
|
|
130
|
+
revision: 0,
|
|
131
|
+
expires_at: new Date(requestStartedAt + 86_400_000),
|
|
132
|
+
};
|
|
133
|
+
const previous = elevated && stored
|
|
134
|
+
? { id: stored.id, revision: stored.revision }
|
|
135
|
+
: undefined;
|
|
136
|
+
if (previous) {
|
|
137
|
+
record.id = crypto.randomUUID();
|
|
138
|
+
record.revision = 0;
|
|
139
|
+
}
|
|
140
|
+
if (!(await store.save(record, !stored, previous)))
|
|
141
|
+
throw new e.Unauthorized.Error();
|
|
142
|
+
return record;
|
|
143
|
+
};
|
|
62
144
|
c.set('session', {
|
|
145
|
+
id: sessionId,
|
|
146
|
+
revision: stored?.revision ?? 0,
|
|
147
|
+
authorization: structuredClone(sessionData),
|
|
148
|
+
async atomic(operation) {
|
|
149
|
+
const before = structuredClone(sessionData);
|
|
150
|
+
const wasChanged = changed;
|
|
151
|
+
const wasElevated = elevated;
|
|
152
|
+
try {
|
|
153
|
+
const outcome = await store.transaction(async () => {
|
|
154
|
+
const result = await operation();
|
|
155
|
+
const record = await persistSession();
|
|
156
|
+
return { result, record };
|
|
157
|
+
});
|
|
158
|
+
committed = true;
|
|
159
|
+
committedRecord = outcome.record;
|
|
160
|
+
changed = false;
|
|
161
|
+
return outcome.result;
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
for (const key of Object.keys(sessionData))
|
|
165
|
+
Reflect.deleteProperty(sessionData, key);
|
|
166
|
+
Object.assign(sessionData, before);
|
|
167
|
+
changed = wasChanged;
|
|
168
|
+
elevated = wasElevated;
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
},
|
|
63
172
|
get(key) {
|
|
64
173
|
return data[key];
|
|
65
174
|
},
|
|
66
175
|
set(key, value) {
|
|
67
176
|
data[key] = value;
|
|
177
|
+
if (store &&
|
|
178
|
+
value !== undefined &&
|
|
179
|
+
(key === 'oauth' || key === 'passkey_challenge')) {
|
|
180
|
+
data.security ??= { grants: {} };
|
|
181
|
+
if (key === 'oauth')
|
|
182
|
+
data.security.oauthExpiresAt = requestStartedAt + 600_000;
|
|
183
|
+
else
|
|
184
|
+
data.security.challengeExpiresAt = requestStartedAt + 600_000;
|
|
185
|
+
}
|
|
68
186
|
},
|
|
69
187
|
delete() {
|
|
188
|
+
changed = true;
|
|
70
189
|
for (const key of Object.keys(data)) {
|
|
71
190
|
Reflect.deleteProperty(data, key);
|
|
72
191
|
}
|
|
73
192
|
},
|
|
74
|
-
setUserSession(userSub, authenticatedAt) {
|
|
193
|
+
setUserSession(userSub, epoch, authenticatedAt) {
|
|
194
|
+
if ((data.pending2FAUser?.sub === userSub ||
|
|
195
|
+
data.pending2FASetup?.sub === userSub) &&
|
|
196
|
+
data.security?.grants[userSub] !== epoch)
|
|
197
|
+
throw new e.Unauthorized.Error();
|
|
198
|
+
replaceSubjectEpoch(userSub, epoch);
|
|
199
|
+
elevated = data.user?.sub !== userSub;
|
|
75
200
|
const authTime = authenticatedAt ?? nowSeconds();
|
|
76
201
|
const reauthenticationRequestFingerprint = data.reauthentication?.request_fingerprint;
|
|
77
202
|
delete data.pending2FAUser;
|
|
78
203
|
delete data.pending2FASetup;
|
|
79
204
|
delete data.oauth;
|
|
80
205
|
delete data.passkey_challenge;
|
|
206
|
+
delete data.totpSetupVerification;
|
|
81
207
|
data.user = {
|
|
82
208
|
sub: userSub,
|
|
83
209
|
authenticated_at: authTime,
|
|
@@ -117,6 +243,7 @@ export function sessionMiddleware(cookieSecret, isSecure, rememberedAccountsOpti
|
|
|
117
243
|
delete data.pending2FASetup;
|
|
118
244
|
delete data.oauth;
|
|
119
245
|
delete data.passkey_challenge;
|
|
246
|
+
delete data.totpSetupVerification;
|
|
120
247
|
data.user = {
|
|
121
248
|
sub: account.sub,
|
|
122
249
|
authenticated_at: account.authenticated_at,
|
|
@@ -142,22 +269,35 @@ export function sessionMiddleware(cookieSecret, isSecure, rememberedAccountsOpti
|
|
|
142
269
|
data.accounts = nextAccounts;
|
|
143
270
|
return true;
|
|
144
271
|
},
|
|
145
|
-
setPending2FASession(userSub, authenticatedAt) {
|
|
272
|
+
setPending2FASession(userSub, epoch, authenticatedAt) {
|
|
273
|
+
if (store) {
|
|
274
|
+
replaceSubjectEpoch(userSub, epoch);
|
|
275
|
+
data.security ??= { grants: {} };
|
|
276
|
+
data.security.pendingExpiresAt = requestStartedAt + 600_000;
|
|
277
|
+
}
|
|
146
278
|
delete data.pending2FASetup;
|
|
147
279
|
delete data.oauth;
|
|
148
280
|
delete data.passkey_challenge;
|
|
281
|
+
delete data.totpSetupVerification;
|
|
149
282
|
data.pending2FAUser = {
|
|
150
283
|
sub: userSub,
|
|
151
284
|
authenticated_at: authenticatedAt ?? nowSeconds(),
|
|
152
285
|
};
|
|
153
286
|
},
|
|
154
|
-
setPending2FASetupSession(userSub) {
|
|
287
|
+
setPending2FASetupSession(userSub, epoch) {
|
|
288
|
+
if (store) {
|
|
289
|
+
replaceSubjectEpoch(userSub, epoch);
|
|
290
|
+
data.security ??= { grants: {} };
|
|
291
|
+
data.security.pendingExpiresAt = requestStartedAt + 600_000;
|
|
292
|
+
}
|
|
155
293
|
delete data.pending2FAUser;
|
|
156
294
|
delete data.oauth;
|
|
157
295
|
delete data.passkey_challenge;
|
|
296
|
+
delete data.totpSetupVerification;
|
|
158
297
|
data.pending2FASetup = { sub: userSub };
|
|
159
298
|
},
|
|
160
299
|
clearAuthSessions() {
|
|
300
|
+
delete data.totpSetupVerification;
|
|
161
301
|
delete data.user;
|
|
162
302
|
delete data.reauthentication;
|
|
163
303
|
delete data.pending2FAUser;
|
|
@@ -165,10 +305,10 @@ export function sessionMiddleware(cookieSecret, isSecure, rememberedAccountsOpti
|
|
|
165
305
|
},
|
|
166
306
|
});
|
|
167
307
|
await next();
|
|
168
|
-
if (changed) {
|
|
169
|
-
const
|
|
170
|
-
if (
|
|
171
|
-
const encrypted = await encrypt(JSON.stringify(
|
|
308
|
+
if (changed || committed) {
|
|
309
|
+
const record = committed ? committedRecord : await persistSession();
|
|
310
|
+
if (record) {
|
|
311
|
+
const encrypted = await encrypt(JSON.stringify({ sid: record.id, kind: 'session' }), cookieSecret);
|
|
172
312
|
setCookie(c, 'session', encrypted, {
|
|
173
313
|
path: '/',
|
|
174
314
|
httpOnly: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/middleware/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/middleware/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** JSON.parse validates syntax; the second pass retains keys discarded by JSON.parse. */
|
|
2
|
+
export declare function rejectDuplicateJsonKeys(source: string): void;
|
|
3
|
+
export declare const strictInput: import("hono").MiddlewareHandler<any, string, {}, Response>;
|
|
4
|
+
//# sourceMappingURL=strict-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strict-input.d.ts","sourceRoot":"","sources":["../../src/middleware/strict-input.ts"],"names":[],"mappings":"AAOA,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAkE5D;AAaD,eAAO,MAAM,WAAW,6DAqDtB,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { createMiddleware } from 'hono/factory';
|
|
2
|
+
import { e } from '../schemas/error.js';
|
|
3
|
+
const MAX_BODY_BYTES = 1_048_576;
|
|
4
|
+
const invalid = () => new e.ValidationError.Error('Ambiguous or invalid request encoding');
|
|
5
|
+
/** JSON.parse validates syntax; the second pass retains keys discarded by JSON.parse. */
|
|
6
|
+
export function rejectDuplicateJsonKeys(source) {
|
|
7
|
+
try {
|
|
8
|
+
JSON.parse(source);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
throw invalid();
|
|
12
|
+
}
|
|
13
|
+
let index = 0;
|
|
14
|
+
const whitespace = () => {
|
|
15
|
+
while (/\s/.test(source[index] ?? '') && index < source.length)
|
|
16
|
+
index++;
|
|
17
|
+
};
|
|
18
|
+
const string = () => {
|
|
19
|
+
const start = index++;
|
|
20
|
+
while (index < source.length) {
|
|
21
|
+
if (source[index] === '\\') {
|
|
22
|
+
index += 2;
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (source[index++] === '"')
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
const value = JSON.parse(source.slice(start, index));
|
|
29
|
+
if (typeof value !== 'string')
|
|
30
|
+
throw invalid();
|
|
31
|
+
return value;
|
|
32
|
+
};
|
|
33
|
+
const value = (depth) => {
|
|
34
|
+
if (depth > 128)
|
|
35
|
+
throw invalid();
|
|
36
|
+
whitespace();
|
|
37
|
+
const character = source[index];
|
|
38
|
+
if (character === '"') {
|
|
39
|
+
string();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (character === '{') {
|
|
43
|
+
index++;
|
|
44
|
+
whitespace();
|
|
45
|
+
const keys = new Set();
|
|
46
|
+
while (source[index] !== '}') {
|
|
47
|
+
whitespace();
|
|
48
|
+
const key = string();
|
|
49
|
+
if (keys.has(key))
|
|
50
|
+
throw invalid();
|
|
51
|
+
keys.add(key);
|
|
52
|
+
whitespace();
|
|
53
|
+
index++;
|
|
54
|
+
value(depth + 1);
|
|
55
|
+
whitespace();
|
|
56
|
+
if (source[index] !== ',')
|
|
57
|
+
break;
|
|
58
|
+
index++;
|
|
59
|
+
}
|
|
60
|
+
index++;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (character === '[') {
|
|
64
|
+
index++;
|
|
65
|
+
whitespace();
|
|
66
|
+
while (source[index] !== ']') {
|
|
67
|
+
value(depth + 1);
|
|
68
|
+
whitespace();
|
|
69
|
+
if (source[index] !== ',')
|
|
70
|
+
break;
|
|
71
|
+
index++;
|
|
72
|
+
}
|
|
73
|
+
index++;
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
while (index < source.length && !/[\s,}\]]/.test(source[index] ?? ''))
|
|
77
|
+
index++;
|
|
78
|
+
};
|
|
79
|
+
value(0);
|
|
80
|
+
}
|
|
81
|
+
function rejectDuplicateParameters(parameters, previous = new Set()) {
|
|
82
|
+
for (const key of parameters.keys()) {
|
|
83
|
+
if (previous.has(key))
|
|
84
|
+
throw invalid();
|
|
85
|
+
previous.add(key);
|
|
86
|
+
}
|
|
87
|
+
return previous;
|
|
88
|
+
}
|
|
89
|
+
export const strictInput = createMiddleware(async (c, next) => {
|
|
90
|
+
const oauth = c.req.path.startsWith('/oauth/') || c.req.path.startsWith('/api/oauth/');
|
|
91
|
+
const queryKeys = oauth
|
|
92
|
+
? rejectDuplicateParameters(new URL(c.req.url).searchParams)
|
|
93
|
+
: new Set();
|
|
94
|
+
if (c.req.raw.body && !['GET', 'HEAD'].includes(c.req.method)) {
|
|
95
|
+
const reader = c.req.raw.body.getReader();
|
|
96
|
+
const chunks = [];
|
|
97
|
+
let size = 0;
|
|
98
|
+
try {
|
|
99
|
+
while (true) {
|
|
100
|
+
const result = await reader.read();
|
|
101
|
+
if (result.done)
|
|
102
|
+
break;
|
|
103
|
+
size += result.value.byteLength;
|
|
104
|
+
if (size > MAX_BODY_BYTES) {
|
|
105
|
+
void reader.cancel().catch(() => undefined);
|
|
106
|
+
throw new e.RequestBodyTooLarge.Error();
|
|
107
|
+
}
|
|
108
|
+
chunks.push(result.value);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
reader.releaseLock();
|
|
113
|
+
}
|
|
114
|
+
const bytes = new Uint8Array(size);
|
|
115
|
+
let offset = 0;
|
|
116
|
+
for (const chunk of chunks) {
|
|
117
|
+
bytes.set(chunk, offset);
|
|
118
|
+
offset += chunk.byteLength;
|
|
119
|
+
}
|
|
120
|
+
const contentType = c.req
|
|
121
|
+
.header('content-type')
|
|
122
|
+
?.split(';')[0]
|
|
123
|
+
?.trim()
|
|
124
|
+
.toLowerCase();
|
|
125
|
+
if (size &&
|
|
126
|
+
(contentType === 'application/json' ||
|
|
127
|
+
contentType === 'application/x-www-form-urlencoded')) {
|
|
128
|
+
let source;
|
|
129
|
+
try {
|
|
130
|
+
source = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
throw invalid();
|
|
134
|
+
}
|
|
135
|
+
if (contentType === 'application/json')
|
|
136
|
+
rejectDuplicateJsonKeys(source);
|
|
137
|
+
else if (oauth)
|
|
138
|
+
rejectDuplicateParameters(new URLSearchParams(source), queryKeys);
|
|
139
|
+
}
|
|
140
|
+
c.req.raw = new Request(c.req.raw, { body: bytes.buffer });
|
|
141
|
+
}
|
|
142
|
+
await next();
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=strict-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strict-input.js","sourceRoot":"","sources":["../../src/middleware/strict-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20260910120000_api_security.d.ts","sourceRoot":"","sources":["../../../src/migrations/postgres/Migration20260910120000_api_security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,oCAAqC,SAAQ,SAAS;IAClD,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBjC;IACc,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnC;CACF"}
|