@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
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { TermsContentEntitySchema } from '../entities/terms-content.entity.js';
|
|
2
2
|
import { e } from '../schemas/error.js';
|
|
3
|
+
import { lockOAuthClient } from './client-security.js';
|
|
4
|
+
import { lockTermsPolicy } from './terms-policy.service.js';
|
|
3
5
|
function clientResponse(client) {
|
|
4
6
|
const type = client.clientSecretHash
|
|
5
7
|
? 'confidential'
|
|
@@ -157,88 +159,114 @@ export class AdminConsoleService {
|
|
|
157
159
|
return { client: clientResponse(client), client_secret: secret };
|
|
158
160
|
}
|
|
159
161
|
async updateClient(id, input) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
162
|
+
return this.mikro.em.transactional(async () => {
|
|
163
|
+
const client = await lockOAuthClient(this.mikro.em, id);
|
|
164
|
+
if (client)
|
|
165
|
+
await this.mikro.em.populate(client, ['clientSecretHash']);
|
|
166
|
+
if (!client)
|
|
167
|
+
return null;
|
|
168
|
+
this.ensureClientEditable(client);
|
|
169
|
+
client.name = input.name;
|
|
170
|
+
client.redirectUris = input.redirectUris;
|
|
171
|
+
client.postLogoutRedirectUris = input.postLogoutRedirectUris;
|
|
172
|
+
client.webOrigins = input.webOrigins;
|
|
173
|
+
client.grantTypes = input.grantTypes;
|
|
174
|
+
client.responseTypes = input.responseTypes;
|
|
175
|
+
client.scopes = input.scopes;
|
|
176
|
+
client.skipConsent = input.skipConsent;
|
|
177
|
+
await this.mikro.em.flush();
|
|
178
|
+
return { client: clientResponse(client) };
|
|
179
|
+
});
|
|
174
180
|
}
|
|
175
181
|
async rotateClientSecret(id) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
return this.mikro.em.transactional(async () => {
|
|
183
|
+
const client = await lockOAuthClient(this.mikro.em, id);
|
|
184
|
+
if (client)
|
|
185
|
+
await this.mikro.em.populate(client, ['clientSecretHash']);
|
|
186
|
+
if (!client)
|
|
187
|
+
return null;
|
|
188
|
+
this.ensureClientEditable(client);
|
|
189
|
+
if (!client.clientSecretHash)
|
|
190
|
+
return null;
|
|
191
|
+
const secret = `${crypto.randomUUID()}${crypto.randomUUID()}`;
|
|
192
|
+
client.clientSecretHash =
|
|
193
|
+
await this.securityService.hashClientSecret(secret);
|
|
194
|
+
await this.mikro.em.flush();
|
|
195
|
+
return { client: clientResponse(client), client_secret: secret };
|
|
196
|
+
});
|
|
187
197
|
}
|
|
188
198
|
async setClientsEnabled(ids, filter, enabled) {
|
|
189
|
-
|
|
190
|
-
|
|
199
|
+
return this.mikro.em.transactional(async () => {
|
|
200
|
+
if (ids) {
|
|
201
|
+
const clients = await this.mikro.oauthClient.find({ id: { $in: ids } });
|
|
202
|
+
for (const client of clients.sort((a, b) => a.id.localeCompare(b.id))) {
|
|
203
|
+
const fresh = await lockOAuthClient(this.mikro.em, client.id);
|
|
204
|
+
if (!fresh)
|
|
205
|
+
throw new e.OAuthClientNotFound.Error();
|
|
206
|
+
this.ensureClientEditable(fresh);
|
|
207
|
+
}
|
|
208
|
+
return this.applyStatus(clients, enabled, (client) => client.enabled, (client) => {
|
|
209
|
+
client.enabled = enabled;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
const where = {
|
|
213
|
+
deletedAt: null,
|
|
214
|
+
managed_by: 'database',
|
|
215
|
+
};
|
|
216
|
+
if (filter?.managedBy)
|
|
217
|
+
where['managed_by'] = filter.managedBy;
|
|
218
|
+
if (filter?.enabled !== undefined)
|
|
219
|
+
where['enabled'] = filter.enabled;
|
|
220
|
+
const query = filter?.query?.trim();
|
|
221
|
+
if (query)
|
|
222
|
+
where['$or'] = [
|
|
223
|
+
{ name: { $like: `%${query}%` } },
|
|
224
|
+
{ clientId: { $like: `%${query}%` } },
|
|
225
|
+
];
|
|
226
|
+
const clients = await this.mikro.oauthClient.find(where, {
|
|
227
|
+
orderBy: { id: 'ASC' },
|
|
228
|
+
});
|
|
191
229
|
for (const client of clients)
|
|
192
|
-
this.
|
|
230
|
+
await lockOAuthClient(this.mikro.em, client.id);
|
|
193
231
|
return this.applyStatus(clients, enabled, (client) => client.enabled, (client) => {
|
|
194
232
|
client.enabled = enabled;
|
|
195
233
|
});
|
|
196
|
-
}
|
|
197
|
-
const where = {
|
|
198
|
-
deletedAt: null,
|
|
199
|
-
managed_by: 'database',
|
|
200
|
-
};
|
|
201
|
-
if (filter?.managedBy)
|
|
202
|
-
where['managed_by'] = filter.managedBy;
|
|
203
|
-
if (filter?.enabled !== undefined)
|
|
204
|
-
where['enabled'] = filter.enabled;
|
|
205
|
-
const query = filter?.query?.trim();
|
|
206
|
-
if (query)
|
|
207
|
-
where['$or'] = [
|
|
208
|
-
{ name: { $like: `%${query}%` } },
|
|
209
|
-
{ clientId: { $like: `%${query}%` } },
|
|
210
|
-
];
|
|
211
|
-
const clients = await this.mikro.oauthClient.find(where);
|
|
212
|
-
return this.applyStatus(clients, enabled, (client) => client.enabled, (client) => {
|
|
213
|
-
client.enabled = enabled;
|
|
214
234
|
});
|
|
215
235
|
}
|
|
216
236
|
async deleteClient(id) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
237
|
+
return this.mikro.em.transactional(async () => {
|
|
238
|
+
const client = await lockOAuthClient(this.mikro.em, id);
|
|
239
|
+
if (client)
|
|
240
|
+
await this.mikro.em.populate(client, ['clientSecretHash']);
|
|
241
|
+
if (!client)
|
|
242
|
+
return null;
|
|
243
|
+
if (client.managed_by === 'config') {
|
|
244
|
+
throw new e.OAuthClientNotEditable.Error();
|
|
245
|
+
}
|
|
246
|
+
if (!client.deletedAt) {
|
|
247
|
+
client.deletedAt = new Date();
|
|
248
|
+
client.tokenEpoch = crypto.randomUUID();
|
|
249
|
+
await this.mikro.em.flush();
|
|
250
|
+
}
|
|
251
|
+
return { client: clientResponse(client) };
|
|
252
|
+
});
|
|
229
253
|
}
|
|
230
254
|
async restoreClient(id) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
255
|
+
return this.mikro.em.transactional(async () => {
|
|
256
|
+
const client = await lockOAuthClient(this.mikro.em, id);
|
|
257
|
+
if (client)
|
|
258
|
+
await this.mikro.em.populate(client, ['clientSecretHash']);
|
|
259
|
+
if (!client)
|
|
260
|
+
return null;
|
|
261
|
+
if (client.managed_by === 'config') {
|
|
262
|
+
throw new e.OAuthClientNotEditable.Error();
|
|
263
|
+
}
|
|
264
|
+
if (client.deletedAt) {
|
|
265
|
+
client.deletedAt = null;
|
|
266
|
+
await this.mikro.em.flush();
|
|
267
|
+
}
|
|
268
|
+
return { client: clientResponse(client) };
|
|
269
|
+
});
|
|
242
270
|
}
|
|
243
271
|
async listTerms(params) {
|
|
244
272
|
const where = {};
|
|
@@ -268,42 +296,51 @@ export class AdminConsoleService {
|
|
|
268
296
|
};
|
|
269
297
|
}
|
|
270
298
|
async createTerm(input) {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
299
|
+
return this.mikro.em.transactional(async () => {
|
|
300
|
+
await lockTermsPolicy(this.mikro.em, 'write');
|
|
301
|
+
const term = this.mikro.terms.create({
|
|
302
|
+
id: input.id,
|
|
303
|
+
required: input.required,
|
|
304
|
+
consentMode: input.consentMode,
|
|
305
|
+
version: input.version,
|
|
306
|
+
managed_by: 'database',
|
|
307
|
+
archivedAt: null,
|
|
308
|
+
});
|
|
309
|
+
this.replaceTermContents(this.mikro.em, term, input.contents);
|
|
310
|
+
await this.mikro.em.persist(term).flush();
|
|
311
|
+
return { term: termResponse(term) };
|
|
278
312
|
});
|
|
279
|
-
this.replaceTermContents(this.mikro.em, term, input.contents);
|
|
280
|
-
await this.mikro.em.persist(term).flush();
|
|
281
|
-
return { term: termResponse(term) };
|
|
282
313
|
}
|
|
283
314
|
async updateTerm(id, input) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
315
|
+
return this.mikro.em.transactional(async () => {
|
|
316
|
+
await lockTermsPolicy(this.mikro.em, 'write');
|
|
317
|
+
const term = await this.mikro.terms.findOne({ id }, { populate: ['contents'] });
|
|
318
|
+
if (!term || term.managed_by === 'config')
|
|
319
|
+
return null;
|
|
320
|
+
term.required = input.required;
|
|
321
|
+
term.consentMode = input.consentMode;
|
|
322
|
+
term.version = input.version;
|
|
323
|
+
for (const content of term.contents.getItems())
|
|
324
|
+
this.mikro.em.remove(content);
|
|
325
|
+
term.contents.removeAll();
|
|
326
|
+
this.replaceTermContents(this.mikro.em, term, input.contents);
|
|
327
|
+
await this.mikro.em.flush();
|
|
328
|
+
return { term: termResponse(term) };
|
|
329
|
+
});
|
|
296
330
|
}
|
|
297
331
|
async setTermsArchived(ids, filter, archived) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
where
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
332
|
+
return this.mikro.em.transactional(async () => {
|
|
333
|
+
await lockTermsPolicy(this.mikro.em, 'write');
|
|
334
|
+
const where = ids ? { id: { $in: ids } } : {};
|
|
335
|
+
if (filter?.managedBy)
|
|
336
|
+
where['managed_by'] = filter.managedBy;
|
|
337
|
+
const query = filter?.query?.trim();
|
|
338
|
+
if (query)
|
|
339
|
+
where['id'] = { $like: `%${query}%` };
|
|
340
|
+
const terms = await this.mikro.terms.find(where);
|
|
341
|
+
return this.applyStatus(terms, archived, (term) => Boolean(term.archivedAt), (term) => {
|
|
342
|
+
term.archivedAt = archived ? new Date() : null;
|
|
343
|
+
});
|
|
307
344
|
});
|
|
308
345
|
}
|
|
309
346
|
async search(query) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-console.service.js","sourceRoot":"","sources":["../../src/services/admin-console.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AA2CxC,SAAS,cAAc,CAAC,MAiBvB;IACC,MAAM,IAAI,GAA8B,MAAM,CAAC,gBAAgB;QAC7D,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,QAAQ,CAAC;IACb,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI;QACJ,WAAW,EAAE,MAAM,CAAC,UAAU;QAC9B,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,yBAAyB,EAAE,MAAM,CAAC,sBAAsB;QACxD,WAAW,EAAE,MAAM,CAAC,UAAU;QAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI;QACnD,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;QAC3C,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAiBrB;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAI,CAAC,WAAW;QAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI;QACnD,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QACzC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,mBAAmB;IACb,KAAK,CAAe;IACpB,eAAe,CAAkB;IACjC,MAAM,CAAuB;IAE9C,YACE,KAAmB,EACnB,eAAgC,EAChC,MAA4B;QAE5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,MAAM,CACJ,WAAW,EACX,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACd,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SACpE,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAChD,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACjD,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE;SACpD,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP,YAAY,EAAE,WAAW;gBACzB,MAAM;gBACN,cAAc,EAAE,aAAa;gBAC7B,cAAc,EAAE,aAAa;aAC9B;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE;gBACxD,cAAc,EAAE;oBACd,cAAc,EAAE,aAAa;oBAC7B,UAAU,EAAE,cAAc;oBAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,aAAa,EAAE,CAAC,CAAC;iBACpD;aACF;YACD,MAAM,EAAE;gBACN,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;gBACpD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAC3C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;gBACzC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;aAC7C;SACF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,MAGC;QAED,MAAM,KAAK,GACT,MAAM,CAAC,eAAe,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC9B,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,eAAe,KAAK,QAAQ;YAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QACjE,IAAI,MAAM,CAAC,eAAe,KAAK,UAAU;YAAE,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACpE,IAAI,MAAM,CAAC,SAAS;YAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC7D,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACpE,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;QAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc;YAChC,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,KAAK,CAAC,GAAG;gBACb,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE;gBACjC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE;aACtC,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE;YACxE,QAAQ,EAAE,CAAC,kBAAkB,CAAC;YAC9B,KAAK,EAAE,MAAM,CAAC,QAAQ;YACtB,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ;YAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,EAAE;SAC7C,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACpC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE;SACrE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,KAAuB;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;YACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,KAAK,cAAc;YAC3B,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE;YAChD,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,gBAAgB,EAAE,MAAM;gBACtB,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC;gBACrD,CAAC,CAAC,IAAI;YACR,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;YACpD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;YAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,EAAU,EACV,KAAkD;QAElD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CACjD,EAAE,EAAE,EAAE,EACN,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,CACnC,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;QAC7D,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACrC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACrC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAC3C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC7B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CACjD,EAAE,EAAE,EAAE,EACN,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,CACnC,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QAC9D,MAAM,CAAC,gBAAgB;YACrB,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,GAAyB,EACzB,MAAkC,EAClC,OAAgB;QAEhB,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC,WAAW,CACrB,OAAO,EACP,OAAO,EACP,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAC1B,CAAC,MAAM,EAAE,EAAE;gBACT,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,CAAC,CACF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAA4B;YACrC,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,UAAU;SACvB,CAAC;QACF,IAAI,MAAM,EAAE,SAAS;YAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9D,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACpC,IAAI,KAAK;YACP,KAAK,CAAC,KAAK,CAAC,GAAG;gBACb,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE;gBACjC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE;aACtC,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,WAAW,CACrB,OAAO,EACP,OAAO,EACP,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAC1B,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC,CACF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,EAAU;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CACjD,EAAE,EAAE,EAAE,EACN,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,CACnC,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,EAAU;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CACjD,EAAE,EAAE,EAAE,EACN,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,CACnC,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,MAIC;QAED,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,SAAS;YAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC7D,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QACvE,IAAI,MAAM,CAAC,WAAW;YAAE,KAAK,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QAClE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC/B,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,IAAI,KAAK;YACP,KAAK,CAAC,KAAK,CAAC,GAAG;gBACb,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE;gBAC/B,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE,EAAE;aACjD,CAAC;QACJ,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;YAChE,QAAQ,EAAE,CAAC,UAAU,CAAC;YACtB,KAAK,EAAE,MAAM,CAAC,QAAQ;YACtB,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ;YAC3C,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,EAAE;SAC3C,CAAC,CAAC;QACH,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;YAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE;SACrE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,KAAqB;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACnC,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,KAAiC;QACnE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CACzC,EAAE,EAAE,EAAE,EACN,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAC3B,CAAC;QACF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,GAAyB,EACzB,MAAkC,EAClC,QAAiB;QAEjB,MAAM,KAAK,GAA4B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,IAAI,MAAM,EAAE,SAAS;YAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACpC,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,WAAW,CACrB,KAAK,EACL,QAAQ,EACR,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAClC,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC,CACF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAa;QAC/B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;QAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAClB,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EACjE,EAAE,KAAK,EAAE,CAAC,EAAE,CACb;YACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CACzB;gBACE,SAAS,EAAE,IAAI;gBACf,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;aAClE,EACD,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAC7C;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CACnB;gBACE,GAAG,EAAE;oBACH,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;oBACxB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;iBAC1C;aACF,EACD,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CACrC;SACF,CAAC,CAAC;QACH,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,IAAI,CAAC,GAAG;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,GAAG;aACnB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAChC,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;YACH,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE;gBACpD,QAAQ,EAAE,IAAI,CAAC,OAAO;aACvB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO;YACL,MAAM,EAAE;gBACN,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;aAChD;YACD,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,gBAAgB;oBACpB,MAAM,EAAE;wBACN,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;wBAC9C,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;wBAC5C,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;qBAChD;iBACF;gBACD;oBACE,EAAE,EAAE,cAAc;oBAClB,MAAM,EAAE;wBACN,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO;wBACpC,2BAA2B,EACzB,MAAM,CAAC,YAAY,CAAC,2BAA2B;wBACjD,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,sBAAsB;qBACnE;iBACF;gBACD;oBACE,EAAE,EAAE,UAAU;oBACd,MAAM,EAAE;wBACN,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;wBAClD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;wBAClD,mBAAmB,EACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB;qBACtD;iBACF;gBACD;oBACE,EAAE,EAAE,QAAQ;oBACZ,MAAM,EAAE;wBACN,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB;wBAChD,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB;wBAClD,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO;qBACzD;iBACF;gBACD;oBACE,EAAE,EAAE,mBAAmB;oBACvB,MAAM,EAAE;wBACN,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CACvC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CACpC;qBACF;iBACF;gBACD;oBACE,EAAE,EAAE,SAAS;oBACb,MAAM,EAAE;wBACN,wBAAwB,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO;wBACzD,0BAA0B,EAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS;qBAC9D;iBACF;gBACD;oBACE,EAAE,EAAE,WAAW;oBACf,MAAM,EAAE;wBACN,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB;wBAC1C,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB;wBACrC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB;qBACxC;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAEO,mBAAmB,CACzB,EAAiB,EACjB,IAAkB,EAClB,QAAiC;QAEjC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,EAAE;gBAClD,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,KAAU,EACV,OAAgB,EAChB,OAA6B,EAC7B,MAAyB;QAEzB,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,MAA0B,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,MAAM,GAAG,QAAQ,CAAC;iBAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO;gBAAE,MAAM,GAAG,WAAW,CAAC;YACzD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;IAEO,oBAAoB,CAAC,MAG5B;QACC,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"admin-console.service.js","sourceRoot":"","sources":["../../src/services/admin-console.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MikroService } from './mikro.service.js';
|
|
2
|
+
import type { SecurityService } from './security.service.js';
|
|
3
|
+
/** Shared, atomic fixed-window budgets. No process-local locks or raw PII keys. */
|
|
4
|
+
export declare function consumeAuthBudget(mikro: MikroService, security: SecurityService, key: string, limit: number, windowSeconds: number): Promise<number | null>;
|
|
5
|
+
export declare function clearAuthBudget(mikro: MikroService, security: SecurityService, key: string, windowSeconds: number, requestedAt: number): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=auth-budget.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-budget.service.d.ts","sourceRoot":"","sources":["../../src/services/auth-budget.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,mFAAmF;AACnF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBxB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAIf"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { raw, UniqueConstraintViolationException } from '@mikro-orm/core';
|
|
2
|
+
import { AuthBudgetEntitySchema } from '../entities/auth-budget.entity.js';
|
|
3
|
+
/** Shared, atomic fixed-window budgets. No process-local locks or raw PII keys. */
|
|
4
|
+
export async function consumeAuthBudget(mikro, security, key, limit, windowSeconds) {
|
|
5
|
+
const windowMs = windowSeconds * 1000;
|
|
6
|
+
const now = Date.now();
|
|
7
|
+
const bucket = Math.floor(now / windowMs);
|
|
8
|
+
const expires = (bucket + 1) * windowMs;
|
|
9
|
+
const id = await security.hashOpaqueToken('auth-budget', `${key}:${bucket}`);
|
|
10
|
+
try {
|
|
11
|
+
await mikro.em.insert(AuthBudgetEntitySchema, {
|
|
12
|
+
id,
|
|
13
|
+
attempts: 1,
|
|
14
|
+
expires_at: new Date(expires),
|
|
15
|
+
});
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
if (!(error instanceof UniqueConstraintViolationException))
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
const changed = await mikro.em.nativeUpdate(AuthBudgetEntitySchema, { id, attempts: { $lt: limit } }, { attempts: raw('attempts + 1') });
|
|
23
|
+
return changed === 1 ? null : Math.max(1, Math.ceil((expires - now) / 1000));
|
|
24
|
+
}
|
|
25
|
+
export async function clearAuthBudget(mikro, security, key, windowSeconds, requestedAt) {
|
|
26
|
+
const bucket = Math.floor(requestedAt / (windowSeconds * 1000));
|
|
27
|
+
const id = await security.hashOpaqueToken('auth-budget', `${key}:${bucket}`);
|
|
28
|
+
await mikro.em.nativeDelete(AuthBudgetEntitySchema, { id });
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=auth-budget.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-budget.service.js","sourceRoot":"","sources":["../../src/services/auth-budget.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAI3E,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAmB,EACnB,QAAyB,EACzB,GAAW,EACX,KAAa,EACb,aAAqB;IAErB,MAAM,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IACxC,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,EAAE;YAC5C,EAAE;YACF,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,kCAAkC,CAAC;YAAE,MAAM,KAAK,CAAC;IAC1E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,YAAY,CACzC,sBAAsB,EACtB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAChC,EAAE,QAAQ,EAAE,GAAG,CAAS,cAAc,CAAC,EAAE,CAC1C,CAAC;IACF,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAmB,EACnB,QAAyB,EACzB,GAAW,EACX,aAAqB,EACrB,WAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { EntityManager } from '@mikro-orm/core';
|
|
2
|
+
import type { UserEntity } from '../entities/user.entity.js';
|
|
3
|
+
/** Called while the user's write lock is held. Expiry is secondary to epoch equality. */
|
|
4
|
+
export declare function invalidateUserAuthentication(em: EntityManager, user: UserEntity): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=authentication-epoch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authentication-epoch.d.ts","sourceRoot":"","sources":["../../src/services/authentication-epoch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,yFAAyF;AACzF,wBAAsB,4BAA4B,CAChD,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EmailVerificationEntitySchema } from '../entities/email-verification.entity.js';
|
|
2
|
+
import { PasswordResetEntitySchema } from '../entities/password-reset.entity.js';
|
|
3
|
+
import { PendingOAuthRegistrationEntitySchema } from '../entities/pending-oauth-registration.entity.js';
|
|
4
|
+
import { UserOAuthEntitySchema } from '../entities/user-oauth.entity.js';
|
|
5
|
+
/** Called while the user's write lock is held. Expiry is secondary to epoch equality. */
|
|
6
|
+
export async function invalidateUserAuthentication(em, user) {
|
|
7
|
+
const identities = await em.find(UserOAuthEntitySchema, { user: user.sub });
|
|
8
|
+
await em.nativeDelete(PendingOAuthRegistrationEntitySchema, {
|
|
9
|
+
$or: [
|
|
10
|
+
{ userInfo: { email: user.email } },
|
|
11
|
+
...identities.map((identity) => ({
|
|
12
|
+
providerId: identity.provider_name,
|
|
13
|
+
userInfo: { id: identity.provider_user_id },
|
|
14
|
+
})),
|
|
15
|
+
],
|
|
16
|
+
});
|
|
17
|
+
user.token_epoch = crypto.randomUUID();
|
|
18
|
+
user.sessions_invalidated_at = new Date();
|
|
19
|
+
await em.nativeUpdate(EmailVerificationEntitySchema, { user: user.sub, verified: false }, { revoked_at: new Date() });
|
|
20
|
+
await em.nativeUpdate(PasswordResetEntitySchema, { user: user.sub, used: false }, { revoked_at: new Date() });
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=authentication-epoch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authentication-epoch.js","sourceRoot":"","sources":["../../src/services/authentication-epoch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,oCAAoC,EAAE,MAAM,kDAAkD,CAAC;AAExG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,EAAiB,EACjB,IAAgB;IAEhB,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,CAAC,YAAY,CAAC,oCAAoC,EAAE;QAC1D,GAAG,EAAE;YACH,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE;YACnC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC/B,UAAU,EAAE,QAAQ,CAAC,aAAa;gBAClC,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,gBAAgB,EAAE;aAC5C,CAAC,CAAC;SACJ;KACF,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACvC,IAAI,CAAC,uBAAuB,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1C,MAAM,EAAE,CAAC,YAAY,CACnB,6BAA6B,EAC7B,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EACnC,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAC3B,CAAC;IACF,MAAM,EAAE,CAAC,YAAY,CACnB,yBAAyB,EACzB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAC/B,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AppEnv } from '../lib/app-env.js';
|
|
2
|
+
import type { AuthorizeResult } from './oauth-authorize.service.js';
|
|
3
|
+
export interface AuthorizationProof {
|
|
4
|
+
userSub: string;
|
|
5
|
+
userEpoch: string;
|
|
6
|
+
clientId: string;
|
|
7
|
+
clientEpoch: string;
|
|
8
|
+
redirectUri: string;
|
|
9
|
+
responseType: string;
|
|
10
|
+
scopes: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare function completeBrowserAuthorization(c: {
|
|
13
|
+
var: AppEnv['Variables'];
|
|
14
|
+
req: {
|
|
15
|
+
path: string;
|
|
16
|
+
};
|
|
17
|
+
}, proof: AuthorizationProof, operation: () => Promise<AuthorizeResult>): Promise<AuthorizeResult>;
|
|
18
|
+
//# sourceMappingURL=authorization-browser.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization-browser.service.d.ts","sourceRoot":"","sources":["../../src/services/authorization-browser.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,4BAA4B,CAChD,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACtD,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,GACxC,OAAO,CAAC,eAAe,CAAC,CAqC1B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { UserEntity } from '../entities/user.entity.js';
|
|
2
|
+
import { e } from '../schemas/error.js';
|
|
3
|
+
import { withBrowserSecurity } from './browser-security.service.js';
|
|
4
|
+
import { lockOAuthClient } from './client-security.js';
|
|
5
|
+
export async function completeBrowserAuthorization(c, proof, operation) {
|
|
6
|
+
return withBrowserSecurity(c, async () => {
|
|
7
|
+
const { mikro, oauthClientService } = c.var.services;
|
|
8
|
+
const user = await mikro.em.findOneOrFail(UserEntity, { sub: proof.userSub }, { refresh: true });
|
|
9
|
+
if (user.deleted_at ||
|
|
10
|
+
user.token_epoch !== proof.userEpoch ||
|
|
11
|
+
c.var.session.authorization.security?.grants[proof.userSub] !==
|
|
12
|
+
proof.userEpoch)
|
|
13
|
+
throw new e.Unauthorized.Error();
|
|
14
|
+
const client = await lockOAuthClient(mikro.em, proof.clientId);
|
|
15
|
+
if (!client ||
|
|
16
|
+
client.deletedAt ||
|
|
17
|
+
!client.enabled ||
|
|
18
|
+
(client.tokenEpoch ?? '') !== proof.clientEpoch)
|
|
19
|
+
throw new e.Unauthorized.Error();
|
|
20
|
+
const current = await oauthClientService.findByClientId(client.clientId);
|
|
21
|
+
oauthClientService.validateRedirectUri(current, proof.redirectUri);
|
|
22
|
+
oauthClientService.validateResponseType(current, proof.responseType);
|
|
23
|
+
oauthClientService.validateGrantType(current, proof.responseType === 'code' ? 'authorization_code' : 'implicit');
|
|
24
|
+
oauthClientService.validateScopes(current, proof.scopes);
|
|
25
|
+
return operation();
|
|
26
|
+
}, { targets: [proof.userSub], termsPolicy: 'read' });
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=authorization-browser.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization-browser.service.js","sourceRoot":"","sources":["../../src/services/authorization-browser.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAavD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,CAAsD,EACtD,KAAyB,EACzB,SAAyC;IAEzC,OAAO,mBAAmB,CACxB,CAAC,EACD,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,aAAa,CACvC,UAAU,EACV,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,EACtB,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QACF,IACE,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,SAAS;YACpC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;gBACzD,KAAK,CAAC,SAAS;YAEjB,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/D,IACE,CAAC,MAAM;YACP,MAAM,CAAC,SAAS;YAChB,CAAC,MAAM,CAAC,OAAO;YACf,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,WAAW;YAE/C,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzE,kBAAkB,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACnE,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACrE,kBAAkB,CAAC,iBAAiB,CAClC,OAAO,EACP,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAClE,CAAC;QACF,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC,EACD,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAClD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AppEnv } from '../lib/app-env.js';
|
|
2
|
+
import { type TermsPolicyAccess } from './terms-policy.service.js';
|
|
3
|
+
/** Credential preparation must finish before entering this transaction. */
|
|
4
|
+
export declare function withBrowserSecurity<T>(c: {
|
|
5
|
+
var: AppEnv['Variables'];
|
|
6
|
+
req: {
|
|
7
|
+
path: string;
|
|
8
|
+
};
|
|
9
|
+
}, operation: () => Promise<T>, options?: {
|
|
10
|
+
stage?: 'setup' | 'mfa';
|
|
11
|
+
targets?: string[];
|
|
12
|
+
termsPolicy?: TermsPolicyAccess;
|
|
13
|
+
}): Promise<T>;
|
|
14
|
+
//# sourceMappingURL=browser-security.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-security.service.d.ts","sourceRoot":"","sources":["../../src/services/browser-security.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AAGnC,2EAA2E;AAC3E,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACtD,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAC5B,GACL,OAAO,CAAC,CAAC,CAAC,CAmGZ"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { raw } from '@mikro-orm/core';
|
|
2
|
+
import { BrowserSessionEntitySchema } from '../entities/browser-session.entity.js';
|
|
3
|
+
import { UserEntity } from '../entities/user.entity.js';
|
|
4
|
+
import { e } from '../schemas/error.js';
|
|
5
|
+
import { lockTermsPolicy, } from './terms-policy.service.js';
|
|
6
|
+
import { isSecurityConflict } from './user-security.service.js';
|
|
7
|
+
/** Credential preparation must finish before entering this transaction. */
|
|
8
|
+
export async function withBrowserSecurity(c, operation, options = {}) {
|
|
9
|
+
const { session, services } = c.var;
|
|
10
|
+
const original = session.authorization;
|
|
11
|
+
const subject = options.stage === 'setup'
|
|
12
|
+
? (original.pending2FASetup ?? original.user)
|
|
13
|
+
: options.stage === 'mfa'
|
|
14
|
+
? original.pending2FAUser
|
|
15
|
+
: original.user;
|
|
16
|
+
if (!subject)
|
|
17
|
+
throw new e.Unauthorized.Error();
|
|
18
|
+
const epoch = original.security?.grants[subject.sub];
|
|
19
|
+
if (!epoch)
|
|
20
|
+
throw new e.Unauthorized.Error();
|
|
21
|
+
try {
|
|
22
|
+
return await session.atomic(async () => {
|
|
23
|
+
const em = services.mikro.em;
|
|
24
|
+
if (options.termsPolicy)
|
|
25
|
+
await lockTermsPolicy(em, options.termsPolicy);
|
|
26
|
+
for (const sub of [
|
|
27
|
+
...new Set([subject.sub, ...(options.targets ?? [])]),
|
|
28
|
+
].sort()) {
|
|
29
|
+
const changed = await em.nativeUpdate(UserEntity, { sub }, { security_revision: raw('security_revision + 1') });
|
|
30
|
+
if (changed !== 1) {
|
|
31
|
+
if (sub !== subject.sub)
|
|
32
|
+
throw new e.UserNotFound.Error();
|
|
33
|
+
throw new e.Unauthorized.Error();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const user = await em.findOneOrFail(UserEntity, { sub: subject.sub }, { refresh: true });
|
|
37
|
+
if (user.deleted_at || user.token_epoch !== epoch)
|
|
38
|
+
throw new e.Unauthorized.Error();
|
|
39
|
+
if (c.req.path.startsWith('/api/admin/') && user.role !== 'admin')
|
|
40
|
+
throw new e.Forbidden.Error();
|
|
41
|
+
const locked = await em.nativeUpdate(BrowserSessionEntitySchema, {
|
|
42
|
+
id: session.id,
|
|
43
|
+
revision: session.revision,
|
|
44
|
+
expires_at: { $gt: new Date() },
|
|
45
|
+
}, { revision: session.revision });
|
|
46
|
+
if (locked !== 1)
|
|
47
|
+
throw new e.Unauthorized.Error();
|
|
48
|
+
const current = await em.findOneOrFail(BrowserSessionEntitySchema, { id: session.id }, { refresh: true });
|
|
49
|
+
if (current.data.security?.grants[subject.sub] !== epoch)
|
|
50
|
+
throw new e.Unauthorized.Error();
|
|
51
|
+
if (options.stage &&
|
|
52
|
+
subject !== original.user &&
|
|
53
|
+
(current.data.security?.pendingExpiresAt ?? 0) <= Date.now())
|
|
54
|
+
throw new e.Unauthorized.Error();
|
|
55
|
+
const security = current.data.security;
|
|
56
|
+
if (original.oauth && (security?.oauthExpiresAt ?? 0) <= Date.now())
|
|
57
|
+
throw new e.Unauthorized.Error();
|
|
58
|
+
if (original.passkey_challenge &&
|
|
59
|
+
(security?.challengeExpiresAt ?? 0) <= Date.now())
|
|
60
|
+
throw new e.Unauthorized.Error();
|
|
61
|
+
// Password-only enrollment authority ends once any factor is enrolled,
|
|
62
|
+
// including when another browser finishes while this request is waiting.
|
|
63
|
+
if (options.stage === 'setup' &&
|
|
64
|
+
original.pending2FASetup &&
|
|
65
|
+
(await services.userService.userRegistered2FAMethods(subject.sub))
|
|
66
|
+
.length > 0)
|
|
67
|
+
throw new e.Unauthorized.Error();
|
|
68
|
+
const result = await operation();
|
|
69
|
+
const after = await em.findOneOrFail(UserEntity, { sub: subject.sub }, { refresh: true });
|
|
70
|
+
if (after.deleted_at || after.token_epoch !== epoch) {
|
|
71
|
+
session.clearAuthSessions();
|
|
72
|
+
session.set('accounts', session
|
|
73
|
+
.get('accounts')
|
|
74
|
+
?.filter((account) => account.sub !== subject.sub));
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (isSecurityConflict(error))
|
|
81
|
+
throw new e.ConcurrentSecurityChange.Error();
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=browser-security.service.js.map
|