@nauth-toolkit/core 0.1.13 → 0.1.17
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/adapters/database-columns.d.ts +70 -0
- package/dist/adapters/database-columns.d.ts.map +1 -1
- package/dist/adapters/database-columns.js +76 -2
- package/dist/adapters/database-columns.js.map +1 -1
- package/dist/adapters/express.adapter.d.ts +66 -0
- package/dist/adapters/express.adapter.d.ts.map +1 -1
- package/dist/adapters/express.adapter.js +80 -0
- package/dist/adapters/express.adapter.js.map +1 -1
- package/dist/adapters/fastify.adapter.d.ts +42 -0
- package/dist/adapters/fastify.adapter.d.ts.map +1 -1
- package/dist/adapters/fastify.adapter.js +86 -0
- package/dist/adapters/fastify.adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/storage.factory.d.ts +107 -0
- package/dist/adapters/storage.factory.d.ts.map +1 -1
- package/dist/adapters/storage.factory.js +114 -0
- package/dist/adapters/storage.factory.js.map +1 -1
- package/dist/adapters.d.ts +8 -0
- package/dist/adapters.d.ts.map +1 -1
- package/dist/adapters.js +8 -0
- package/dist/adapters.js.map +1 -1
- package/dist/bootstrap.d.ts +82 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +106 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/dto/admin-set-password.dto.d.ts +90 -0
- package/dist/dto/admin-set-password.dto.d.ts.map +1 -1
- package/dist/dto/admin-set-password.dto.js +91 -0
- package/dist/dto/admin-set-password.dto.js.map +1 -1
- package/dist/dto/auth-challenge.dto.d.ts +170 -0
- package/dist/dto/auth-challenge.dto.d.ts.map +1 -1
- package/dist/dto/auth-challenge.dto.js +170 -0
- package/dist/dto/auth-challenge.dto.js.map +1 -1
- package/dist/dto/auth-response.dto.d.ts +196 -0
- package/dist/dto/auth-response.dto.d.ts.map +1 -1
- package/dist/dto/auth-response.dto.js +149 -0
- package/dist/dto/auth-response.dto.js.map +1 -1
- package/dist/dto/challenge-response.dto.d.ts +155 -0
- package/dist/dto/challenge-response.dto.d.ts.map +1 -1
- package/dist/dto/challenge-response.dto.js +8 -0
- package/dist/dto/challenge-response.dto.js.map +1 -1
- package/dist/dto/change-password-request.dto.d.ts +35 -0
- package/dist/dto/change-password-request.dto.d.ts.map +1 -1
- package/dist/dto/change-password-request.dto.js +35 -0
- package/dist/dto/change-password-request.dto.js.map +1 -1
- package/dist/dto/change-password-response.dto.d.ts +25 -0
- package/dist/dto/change-password-response.dto.d.ts.map +1 -1
- package/dist/dto/change-password-response.dto.js +25 -0
- package/dist/dto/change-password-response.dto.js.map +1 -1
- package/dist/dto/change-password.dto.d.ts +45 -0
- package/dist/dto/change-password.dto.d.ts.map +1 -1
- package/dist/dto/change-password.dto.js +45 -0
- package/dist/dto/change-password.dto.js.map +1 -1
- package/dist/dto/confirm-forgot-password.dto.d.ts +59 -0
- package/dist/dto/confirm-forgot-password.dto.d.ts.map +1 -1
- package/dist/dto/confirm-forgot-password.dto.js +59 -0
- package/dist/dto/confirm-forgot-password.dto.js.map +1 -1
- package/dist/dto/error-response.dto.d.ts +103 -0
- package/dist/dto/error-response.dto.d.ts.map +1 -1
- package/dist/dto/error-response.dto.js +103 -0
- package/dist/dto/error-response.dto.js.map +1 -1
- package/dist/dto/forgot-password.dto.d.ts +58 -0
- package/dist/dto/forgot-password.dto.d.ts.map +1 -1
- package/dist/dto/forgot-password.dto.js +58 -0
- package/dist/dto/forgot-password.dto.js.map +1 -1
- package/dist/dto/get-available-methods.dto.d.ts +37 -0
- package/dist/dto/get-available-methods.dto.d.ts.map +1 -1
- package/dist/dto/get-available-methods.dto.js +37 -0
- package/dist/dto/get-available-methods.dto.js.map +1 -1
- package/dist/dto/get-challenge-data-response.dto.d.ts +24 -0
- package/dist/dto/get-challenge-data-response.dto.d.ts.map +1 -1
- package/dist/dto/get-challenge-data-response.dto.js +24 -0
- package/dist/dto/get-challenge-data-response.dto.js.map +1 -1
- package/dist/dto/get-challenge-data.dto.d.ts +46 -0
- package/dist/dto/get-challenge-data.dto.d.ts.map +1 -1
- package/dist/dto/get-challenge-data.dto.js +46 -0
- package/dist/dto/get-challenge-data.dto.js.map +1 -1
- package/dist/dto/get-client-info.dto.d.ts +74 -0
- package/dist/dto/get-client-info.dto.d.ts.map +1 -1
- package/dist/dto/get-client-info.dto.js +74 -0
- package/dist/dto/get-client-info.dto.js.map +1 -1
- package/dist/dto/get-device-token-response.dto.d.ts +21 -0
- package/dist/dto/get-device-token-response.dto.d.ts.map +1 -1
- package/dist/dto/get-device-token-response.dto.js +21 -0
- package/dist/dto/get-device-token-response.dto.js.map +1 -1
- package/dist/dto/get-events-by-type.dto.d.ts +50 -0
- package/dist/dto/get-events-by-type.dto.d.ts.map +1 -1
- package/dist/dto/get-events-by-type.dto.js +50 -0
- package/dist/dto/get-events-by-type.dto.js.map +1 -1
- package/dist/dto/get-ip-address-response.dto.d.ts +20 -0
- package/dist/dto/get-ip-address-response.dto.d.ts.map +1 -1
- package/dist/dto/get-ip-address-response.dto.js +20 -0
- package/dist/dto/get-ip-address-response.dto.js.map +1 -1
- package/dist/dto/get-mfa-status.dto.d.ts +59 -0
- package/dist/dto/get-mfa-status.dto.d.ts.map +1 -1
- package/dist/dto/get-mfa-status.dto.js +59 -0
- package/dist/dto/get-mfa-status.dto.js.map +1 -1
- package/dist/dto/get-risk-assessment-history.dto.d.ts +28 -0
- package/dist/dto/get-risk-assessment-history.dto.d.ts.map +1 -1
- package/dist/dto/get-risk-assessment-history.dto.js +28 -0
- package/dist/dto/get-risk-assessment-history.dto.js.map +1 -1
- package/dist/dto/get-session-id-response.dto.d.ts +21 -0
- package/dist/dto/get-session-id-response.dto.d.ts.map +1 -1
- package/dist/dto/get-session-id-response.dto.js +21 -0
- package/dist/dto/get-session-id-response.dto.js.map +1 -1
- package/dist/dto/get-setup-data-response.dto.d.ts +27 -0
- package/dist/dto/get-setup-data-response.dto.d.ts.map +1 -1
- package/dist/dto/get-setup-data-response.dto.js +27 -0
- package/dist/dto/get-setup-data-response.dto.js.map +1 -1
- package/dist/dto/get-setup-data.dto.d.ts +51 -0
- package/dist/dto/get-setup-data.dto.d.ts.map +1 -1
- package/dist/dto/get-setup-data.dto.js +51 -0
- package/dist/dto/get-setup-data.dto.js.map +1 -1
- package/dist/dto/get-suspicious-activity.dto.d.ts +31 -0
- package/dist/dto/get-suspicious-activity.dto.d.ts.map +1 -1
- package/dist/dto/get-suspicious-activity.dto.js +31 -0
- package/dist/dto/get-suspicious-activity.dto.js.map +1 -1
- package/dist/dto/get-user-agent-response.dto.d.ts +19 -0
- package/dist/dto/get-user-agent-response.dto.d.ts.map +1 -1
- package/dist/dto/get-user-agent-response.dto.js +19 -0
- package/dist/dto/get-user-agent-response.dto.js.map +1 -1
- package/dist/dto/get-user-auth-history.dto.d.ts +64 -0
- package/dist/dto/get-user-auth-history.dto.d.ts.map +1 -1
- package/dist/dto/get-user-auth-history.dto.js +64 -0
- package/dist/dto/get-user-auth-history.dto.js.map +1 -1
- package/dist/dto/get-user-by-email.dto.d.ts +42 -0
- package/dist/dto/get-user-by-email.dto.d.ts.map +1 -1
- package/dist/dto/get-user-by-email.dto.js +42 -0
- package/dist/dto/get-user-by-email.dto.js.map +1 -1
- package/dist/dto/get-user-by-id.dto.d.ts +32 -0
- package/dist/dto/get-user-by-id.dto.d.ts.map +1 -1
- package/dist/dto/get-user-by-id.dto.js +32 -0
- package/dist/dto/get-user-by-id.dto.js.map +1 -1
- package/dist/dto/get-user-devices.dto.d.ts +34 -0
- package/dist/dto/get-user-devices.dto.d.ts.map +1 -1
- package/dist/dto/get-user-devices.dto.js +34 -0
- package/dist/dto/get-user-devices.dto.js.map +1 -1
- package/dist/dto/get-user-response.dto.d.ts +14 -0
- package/dist/dto/get-user-response.dto.d.ts.map +1 -1
- package/dist/dto/get-user-response.dto.js +15 -0
- package/dist/dto/get-user-response.dto.js.map +1 -1
- package/dist/dto/has-provider.dto.d.ts +33 -0
- package/dist/dto/has-provider.dto.d.ts.map +1 -1
- package/dist/dto/has-provider.dto.js +33 -0
- package/dist/dto/has-provider.dto.js.map +1 -1
- package/dist/dto/index.js +5 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/dto/is-trusted-device-response.dto.d.ts +28 -0
- package/dist/dto/is-trusted-device-response.dto.d.ts.map +1 -1
- package/dist/dto/is-trusted-device-response.dto.js +28 -0
- package/dist/dto/is-trusted-device-response.dto.js.map +1 -1
- package/dist/dto/list-providers-response.dto.d.ts +19 -0
- package/dist/dto/list-providers-response.dto.d.ts.map +1 -1
- package/dist/dto/list-providers-response.dto.js +19 -0
- package/dist/dto/list-providers-response.dto.js.map +1 -1
- package/dist/dto/login.dto.d.ts +48 -0
- package/dist/dto/login.dto.d.ts.map +1 -1
- package/dist/dto/login.dto.js +50 -1
- package/dist/dto/login.dto.js.map +1 -1
- package/dist/dto/logout-all-response.dto.d.ts +20 -0
- package/dist/dto/logout-all-response.dto.d.ts.map +1 -1
- package/dist/dto/logout-all-response.dto.js +20 -0
- package/dist/dto/logout-all-response.dto.js.map +1 -1
- package/dist/dto/logout-all.dto.d.ts +42 -0
- package/dist/dto/logout-all.dto.d.ts.map +1 -1
- package/dist/dto/logout-all.dto.js +42 -0
- package/dist/dto/logout-all.dto.js.map +1 -1
- package/dist/dto/logout-response.dto.d.ts +21 -0
- package/dist/dto/logout-response.dto.d.ts.map +1 -1
- package/dist/dto/logout-response.dto.js +21 -0
- package/dist/dto/logout-response.dto.js.map +1 -1
- package/dist/dto/logout.dto.d.ts +45 -0
- package/dist/dto/logout.dto.d.ts.map +1 -1
- package/dist/dto/logout.dto.js +45 -0
- package/dist/dto/logout.dto.js.map +1 -1
- package/dist/dto/refresh-token.dto.d.ts +28 -0
- package/dist/dto/refresh-token.dto.d.ts.map +1 -1
- package/dist/dto/refresh-token.dto.js +28 -0
- package/dist/dto/refresh-token.dto.js.map +1 -1
- package/dist/dto/remove-devices.dto.d.ts +51 -0
- package/dist/dto/remove-devices.dto.d.ts.map +1 -1
- package/dist/dto/remove-devices.dto.js +51 -0
- package/dist/dto/remove-devices.dto.js.map +1 -1
- package/dist/dto/resend-code-response.dto.d.ts +28 -0
- package/dist/dto/resend-code-response.dto.d.ts.map +1 -1
- package/dist/dto/resend-code-response.dto.js +28 -0
- package/dist/dto/resend-code-response.dto.js.map +1 -1
- package/dist/dto/resend-code.dto.d.ts +37 -0
- package/dist/dto/resend-code.dto.d.ts.map +1 -1
- package/dist/dto/resend-code.dto.js +37 -0
- package/dist/dto/resend-code.dto.js.map +1 -1
- package/dist/dto/reset-password.dto.d.ts +74 -0
- package/dist/dto/reset-password.dto.d.ts.map +1 -1
- package/dist/dto/reset-password.dto.js +76 -1
- package/dist/dto/reset-password.dto.js.map +1 -1
- package/dist/dto/respond-challenge.dto.d.ts +147 -0
- package/dist/dto/respond-challenge.dto.d.ts.map +1 -1
- package/dist/dto/respond-challenge.dto.js +162 -0
- package/dist/dto/respond-challenge.dto.js.map +1 -1
- package/dist/dto/set-mfa-exemption.dto.d.ts +65 -0
- package/dist/dto/set-mfa-exemption.dto.d.ts.map +1 -1
- package/dist/dto/set-mfa-exemption.dto.js +65 -0
- package/dist/dto/set-mfa-exemption.dto.js.map +1 -1
- package/dist/dto/set-must-change-password-response.dto.d.ts +23 -0
- package/dist/dto/set-must-change-password-response.dto.d.ts.map +1 -1
- package/dist/dto/set-must-change-password-response.dto.js +23 -0
- package/dist/dto/set-must-change-password-response.dto.js.map +1 -1
- package/dist/dto/set-must-change-password.dto.d.ts +32 -0
- package/dist/dto/set-must-change-password.dto.d.ts.map +1 -1
- package/dist/dto/set-must-change-password.dto.js +32 -0
- package/dist/dto/set-must-change-password.dto.js.map +1 -1
- package/dist/dto/set-preferred-method.dto.d.ts +48 -0
- package/dist/dto/set-preferred-method.dto.d.ts.map +1 -1
- package/dist/dto/set-preferred-method.dto.js +48 -0
- package/dist/dto/set-preferred-method.dto.js.map +1 -1
- package/dist/dto/setup-mfa.dto.d.ts +62 -0
- package/dist/dto/setup-mfa.dto.d.ts.map +1 -1
- package/dist/dto/setup-mfa.dto.js +62 -0
- package/dist/dto/setup-mfa.dto.js.map +1 -1
- package/dist/dto/signup.dto.d.ts +92 -0
- package/dist/dto/signup.dto.d.ts.map +1 -1
- package/dist/dto/signup.dto.js +93 -0
- package/dist/dto/signup.dto.js.map +1 -1
- package/dist/dto/social-auth.dto.d.ts +234 -0
- package/dist/dto/social-auth.dto.d.ts.map +1 -1
- package/dist/dto/social-auth.dto.js +234 -0
- package/dist/dto/social-auth.dto.js.map +1 -1
- package/dist/dto/trust-device-response.dto.d.ts +26 -0
- package/dist/dto/trust-device-response.dto.d.ts.map +1 -1
- package/dist/dto/trust-device-response.dto.js +26 -0
- package/dist/dto/trust-device-response.dto.js.map +1 -1
- package/dist/dto/trust-device.dto.d.ts +9 -0
- package/dist/dto/trust-device.dto.d.ts.map +1 -1
- package/dist/dto/trust-device.dto.js +9 -0
- package/dist/dto/trust-device.dto.js.map +1 -1
- package/dist/dto/update-user-attributes-request.dto.d.ts +36 -0
- package/dist/dto/update-user-attributes-request.dto.d.ts.map +1 -1
- package/dist/dto/update-user-attributes-request.dto.js +36 -0
- package/dist/dto/update-user-attributes-request.dto.js.map +1 -1
- package/dist/dto/user-response.dto.d.ts +81 -0
- package/dist/dto/user-response.dto.d.ts.map +1 -1
- package/dist/dto/user-response.dto.js +84 -2
- package/dist/dto/user-response.dto.js.map +1 -1
- package/dist/dto/user-update.dto.d.ts +132 -0
- package/dist/dto/user-update.dto.d.ts.map +1 -1
- package/dist/dto/user-update.dto.js +133 -0
- package/dist/dto/user-update.dto.js.map +1 -1
- package/dist/dto/verify-email.dto.d.ts +171 -0
- package/dist/dto/verify-email.dto.d.ts.map +1 -1
- package/dist/dto/verify-email.dto.js +173 -1
- package/dist/dto/verify-email.dto.js.map +1 -1
- package/dist/dto/verify-mfa-code.dto.d.ts +65 -0
- package/dist/dto/verify-mfa-code.dto.d.ts.map +1 -1
- package/dist/dto/verify-mfa-code.dto.js +65 -0
- package/dist/dto/verify-mfa-code.dto.js.map +1 -1
- package/dist/dto/verify-phone-by-sub.dto.d.ts +49 -0
- package/dist/dto/verify-phone-by-sub.dto.d.ts.map +1 -1
- package/dist/dto/verify-phone-by-sub.dto.js +49 -0
- package/dist/dto/verify-phone-by-sub.dto.js.map +1 -1
- package/dist/dto/verify-phone.dto.d.ts +139 -0
- package/dist/dto/verify-phone.dto.d.ts.map +1 -1
- package/dist/dto/verify-phone.dto.js +142 -1
- package/dist/dto/verify-phone.dto.js.map +1 -1
- package/dist/dto.d.ts +10 -0
- package/dist/dto.d.ts.map +1 -1
- package/dist/dto.js +10 -0
- package/dist/dto.js.map +1 -1
- package/dist/entities/auth-audit.entity.d.ts +159 -0
- package/dist/entities/auth-audit.entity.d.ts.map +1 -1
- package/dist/entities/auth-audit.entity.js +166 -0
- package/dist/entities/auth-audit.entity.js.map +1 -1
- package/dist/entities/challenge-session.entity.d.ts +87 -0
- package/dist/entities/challenge-session.entity.d.ts.map +1 -1
- package/dist/entities/challenge-session.entity.js +87 -0
- package/dist/entities/challenge-session.entity.js.map +1 -1
- package/dist/entities/index.d.ts +18 -0
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +18 -0
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/login-attempt.entity.d.ts +43 -0
- package/dist/entities/login-attempt.entity.d.ts.map +1 -1
- package/dist/entities/login-attempt.entity.js +43 -0
- package/dist/entities/login-attempt.entity.js.map +1 -1
- package/dist/entities/mfa-device.entity.d.ts +112 -0
- package/dist/entities/mfa-device.entity.d.ts.map +1 -1
- package/dist/entities/mfa-device.entity.js +112 -0
- package/dist/entities/mfa-device.entity.js.map +1 -1
- package/dist/entities/rate-limit.entity.d.ts +31 -0
- package/dist/entities/rate-limit.entity.d.ts.map +1 -1
- package/dist/entities/rate-limit.entity.js +31 -0
- package/dist/entities/rate-limit.entity.js.map +1 -1
- package/dist/entities/session.entity.d.ts +121 -0
- package/dist/entities/session.entity.d.ts.map +1 -1
- package/dist/entities/session.entity.js +121 -0
- package/dist/entities/session.entity.js.map +1 -1
- package/dist/entities/social-account.entity.d.ts +75 -0
- package/dist/entities/social-account.entity.d.ts.map +1 -1
- package/dist/entities/social-account.entity.js +75 -0
- package/dist/entities/social-account.entity.js.map +1 -1
- package/dist/entities/storage-lock.entity.d.ts +28 -0
- package/dist/entities/storage-lock.entity.d.ts.map +1 -1
- package/dist/entities/storage-lock.entity.js +28 -0
- package/dist/entities/storage-lock.entity.js.map +1 -1
- package/dist/entities/trusted-device.entity.d.ts +83 -0
- package/dist/entities/trusted-device.entity.d.ts.map +1 -1
- package/dist/entities/trusted-device.entity.js +83 -0
- package/dist/entities/trusted-device.entity.js.map +1 -1
- package/dist/entities/user.entity.d.ts +166 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +166 -0
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/verification-token.entity.d.ts +102 -0
- package/dist/entities/verification-token.entity.d.ts.map +1 -1
- package/dist/entities/verification-token.entity.js +102 -0
- package/dist/entities/verification-token.entity.js.map +1 -1
- package/dist/entities.d.ts +8 -0
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +8 -0
- package/dist/entities.js.map +1 -1
- package/dist/enums/auth-audit-event-type.enum.d.ts +211 -0
- package/dist/enums/auth-audit-event-type.enum.d.ts.map +1 -1
- package/dist/enums/auth-audit-event-type.enum.js +244 -0
- package/dist/enums/auth-audit-event-type.enum.js.map +1 -1
- package/dist/enums/error-codes.enum.d.ts +296 -0
- package/dist/enums/error-codes.enum.d.ts.map +1 -1
- package/dist/enums/error-codes.enum.js +332 -0
- package/dist/enums/error-codes.enum.js.map +1 -1
- package/dist/enums/mfa-method.enum.d.ts +74 -0
- package/dist/enums/mfa-method.enum.d.ts.map +1 -1
- package/dist/enums/mfa-method.enum.js +64 -0
- package/dist/enums/mfa-method.enum.js.map +1 -1
- package/dist/enums/risk-factor.enum.d.ts +91 -0
- package/dist/enums/risk-factor.enum.d.ts.map +1 -1
- package/dist/enums/risk-factor.enum.js +97 -0
- package/dist/enums/risk-factor.enum.js.map +1 -1
- package/dist/exceptions/nauth.exception.d.ts +149 -0
- package/dist/exceptions/nauth.exception.d.ts.map +1 -1
- package/dist/exceptions/nauth.exception.js +159 -0
- package/dist/exceptions/nauth.exception.js.map +1 -1
- package/dist/handlers/auth.handler.d.ts +32 -0
- package/dist/handlers/auth.handler.d.ts.map +1 -1
- package/dist/handlers/auth.handler.js +47 -1
- package/dist/handlers/auth.handler.js.map +1 -1
- package/dist/handlers/client-info.handler.d.ts +25 -0
- package/dist/handlers/client-info.handler.d.ts.map +1 -1
- package/dist/handlers/client-info.handler.js +36 -2
- package/dist/handlers/client-info.handler.js.map +1 -1
- package/dist/handlers/csrf.handler.d.ts +32 -0
- package/dist/handlers/csrf.handler.d.ts.map +1 -1
- package/dist/handlers/csrf.handler.js +49 -1
- package/dist/handlers/csrf.handler.js.map +1 -1
- package/dist/handlers/token-delivery.handler.d.ts +16 -0
- package/dist/handlers/token-delivery.handler.d.ts.map +1 -1
- package/dist/handlers/token-delivery.handler.js +22 -1
- package/dist/handlers/token-delivery.handler.js.map +1 -1
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/client-info.interface.d.ts +58 -0
- package/dist/interfaces/client-info.interface.d.ts.map +1 -1
- package/dist/interfaces/config.interface.d.ts +1774 -0
- package/dist/interfaces/config.interface.d.ts.map +1 -1
- package/dist/interfaces/config.interface.js +16 -0
- package/dist/interfaces/config.interface.js.map +1 -1
- package/dist/interfaces/entities.interface.d.ts +48 -0
- package/dist/interfaces/entities.interface.d.ts.map +1 -1
- package/dist/interfaces/entities.interface.js +8 -0
- package/dist/interfaces/entities.interface.js.map +1 -1
- package/dist/interfaces/index.js +5 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/logger.interface.d.ts +213 -0
- package/dist/interfaces/logger.interface.d.ts.map +1 -1
- package/dist/interfaces/logger.interface.js +35 -0
- package/dist/interfaces/logger.interface.js.map +1 -1
- package/dist/interfaces/mfa-provider.interface.d.ts +134 -0
- package/dist/interfaces/mfa-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/oauth.interface.d.ts +110 -0
- package/dist/interfaces/oauth.interface.d.ts.map +1 -1
- package/dist/interfaces/provider.interface.d.ts +83 -0
- package/dist/interfaces/provider.interface.d.ts.map +1 -1
- package/dist/interfaces/sms-template.interface.d.ts +246 -0
- package/dist/interfaces/sms-template.interface.d.ts.map +1 -1
- package/dist/interfaces/sms-template.interface.js +26 -0
- package/dist/interfaces/sms-template.interface.js.map +1 -1
- package/dist/interfaces/social-auth-provider.interface.d.ts +115 -0
- package/dist/interfaces/social-auth-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/storage-adapter.interface.d.ts +37 -0
- package/dist/interfaces/storage-adapter.interface.d.ts.map +1 -1
- package/dist/interfaces/template.interface.d.ts +351 -0
- package/dist/interfaces/template.interface.d.ts.map +1 -1
- package/dist/interfaces/template.interface.js +13 -0
- package/dist/interfaces/template.interface.js.map +1 -1
- package/dist/interfaces/token-verifier.interface.d.ts +101 -0
- package/dist/interfaces/token-verifier.interface.d.ts.map +1 -1
- package/dist/interfaces.d.ts +8 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +8 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/internal.d.ts +120 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +138 -0
- package/dist/internal.js.map +1 -1
- package/dist/platform/interfaces.d.ts +187 -0
- package/dist/platform/interfaces.d.ts.map +1 -1
- package/dist/platform/interfaces.js +11 -0
- package/dist/platform/interfaces.js.map +1 -1
- package/dist/schemas/auth-config.schema.d.ts +48 -0
- package/dist/schemas/auth-config.schema.d.ts.map +1 -1
- package/dist/schemas/auth-config.schema.js +188 -9
- package/dist/schemas/auth-config.schema.js.map +1 -1
- package/dist/services/adaptive-mfa-decision.service.d.ts +144 -0
- package/dist/services/adaptive-mfa-decision.service.d.ts.map +1 -1
- package/dist/services/adaptive-mfa-decision.service.js +151 -5
- package/dist/services/adaptive-mfa-decision.service.js.map +1 -1
- package/dist/services/auth-audit.service.d.ts +195 -0
- package/dist/services/auth-audit.service.d.ts.map +1 -1
- package/dist/services/auth-audit.service.js +228 -1
- package/dist/services/auth-audit.service.js.map +1 -1
- package/dist/services/auth-challenge-helper.service.d.ts +144 -1
- package/dist/services/auth-challenge-helper.service.d.ts.map +1 -1
- package/dist/services/auth-challenge-helper.service.js +295 -16
- package/dist/services/auth-challenge-helper.service.js.map +1 -1
- package/dist/services/auth-flow-context-builder.service.d.ts +120 -1
- package/dist/services/auth-flow-context-builder.service.d.ts.map +1 -1
- package/dist/services/auth-flow-context-builder.service.js +184 -5
- package/dist/services/auth-flow-context-builder.service.js.map +1 -1
- package/dist/services/auth-flow-rules.d.ts +136 -0
- package/dist/services/auth-flow-rules.d.ts.map +1 -1
- package/dist/services/auth-flow-rules.js +137 -0
- package/dist/services/auth-flow-rules.js.map +1 -1
- package/dist/services/auth-flow-state-definitions.d.ts +40 -0
- package/dist/services/auth-flow-state-definitions.d.ts.map +1 -1
- package/dist/services/auth-flow-state-definitions.js +98 -0
- package/dist/services/auth-flow-state-definitions.js.map +1 -1
- package/dist/services/auth-flow-state-machine.service.d.ts +91 -0
- package/dist/services/auth-flow-state-machine.service.d.ts.map +1 -1
- package/dist/services/auth-flow-state-machine.service.js +102 -0
- package/dist/services/auth-flow-state-machine.service.js.map +1 -1
- package/dist/services/auth-flow-state-machine.types.d.ts +221 -0
- package/dist/services/auth-flow-state-machine.types.d.ts.map +1 -1
- package/dist/services/auth-flow-state-machine.types.js +47 -0
- package/dist/services/auth-flow-state-machine.types.js.map +1 -1
- package/dist/services/auth.service.d.ts +397 -1
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +943 -27
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/challenge.service.d.ts +255 -1
- package/dist/services/challenge.service.d.ts.map +1 -1
- package/dist/services/challenge.service.js +327 -3
- package/dist/services/challenge.service.js.map +1 -1
- package/dist/services/client-info.service.d.ts +143 -0
- package/dist/services/client-info.service.d.ts.map +1 -1
- package/dist/services/client-info.service.js +161 -0
- package/dist/services/client-info.service.js.map +1 -1
- package/dist/services/csrf.service.d.ts +15 -0
- package/dist/services/csrf.service.d.ts.map +1 -1
- package/dist/services/csrf.service.js +16 -0
- package/dist/services/csrf.service.js.map +1 -1
- package/dist/services/email-verification.service.d.ts +52 -0
- package/dist/services/email-verification.service.d.ts.map +1 -1
- package/dist/services/email-verification.service.js +149 -10
- package/dist/services/email-verification.service.js.map +1 -1
- package/dist/services/geo-location.service.d.ts +105 -0
- package/dist/services/geo-location.service.d.ts.map +1 -1
- package/dist/services/geo-location.service.js +188 -2
- package/dist/services/geo-location.service.js.map +1 -1
- package/dist/services/jwt.service.d.ts +257 -0
- package/dist/services/jwt.service.d.ts.map +1 -1
- package/dist/services/jwt.service.js +284 -1
- package/dist/services/jwt.service.js.map +1 -1
- package/dist/services/mfa-base.service.d.ts +179 -1
- package/dist/services/mfa-base.service.d.ts.map +1 -1
- package/dist/services/mfa-base.service.js +256 -2
- package/dist/services/mfa-base.service.js.map +1 -1
- package/dist/services/mfa.service.d.ts +304 -0
- package/dist/services/mfa.service.d.ts.map +1 -1
- package/dist/services/mfa.service.js +380 -0
- package/dist/services/mfa.service.js.map +1 -1
- package/dist/services/password-reset.service.d.ts +46 -0
- package/dist/services/password-reset.service.d.ts.map +1 -1
- package/dist/services/password-reset.service.js +79 -0
- package/dist/services/password-reset.service.js.map +1 -1
- package/dist/services/password.service.d.ts +139 -0
- package/dist/services/password.service.d.ts.map +1 -1
- package/dist/services/password.service.js +167 -9
- package/dist/services/password.service.js.map +1 -1
- package/dist/services/phone-verification.service.d.ts +75 -0
- package/dist/services/phone-verification.service.d.ts.map +1 -1
- package/dist/services/phone-verification.service.js +188 -6
- package/dist/services/phone-verification.service.js.map +1 -1
- package/dist/services/risk-detection.service.d.ts +198 -0
- package/dist/services/risk-detection.service.d.ts.map +1 -1
- package/dist/services/risk-detection.service.js +358 -11
- package/dist/services/risk-detection.service.js.map +1 -1
- package/dist/services/risk-scoring.service.d.ts +84 -0
- package/dist/services/risk-scoring.service.d.ts.map +1 -1
- package/dist/services/risk-scoring.service.js +87 -0
- package/dist/services/risk-scoring.service.js.map +1 -1
- package/dist/services/session.service.d.ts +204 -0
- package/dist/services/session.service.d.ts.map +1 -1
- package/dist/services/session.service.js +289 -4
- package/dist/services/session.service.js.map +1 -1
- package/dist/services/social-auth-base.service.d.ts +123 -1
- package/dist/services/social-auth-base.service.d.ts.map +1 -1
- package/dist/services/social-auth-base.service.js +155 -2
- package/dist/services/social-auth-base.service.js.map +1 -1
- package/dist/services/social-auth.service.d.ts +191 -0
- package/dist/services/social-auth.service.d.ts.map +1 -1
- package/dist/services/social-auth.service.js +215 -2
- package/dist/services/social-auth.service.js.map +1 -1
- package/dist/services/social-provider-registry.service.d.ts +86 -0
- package/dist/services/social-provider-registry.service.d.ts.map +1 -1
- package/dist/services/social-provider-registry.service.js +86 -0
- package/dist/services/social-provider-registry.service.js.map +1 -1
- package/dist/services/trusted-device.service.d.ts +105 -0
- package/dist/services/trusted-device.service.d.ts.map +1 -1
- package/dist/services/trusted-device.service.js +133 -4
- package/dist/services/trusted-device.service.js.map +1 -1
- package/dist/storage/account-lockout-storage.service.d.ts +35 -0
- package/dist/storage/account-lockout-storage.service.d.ts.map +1 -1
- package/dist/storage/account-lockout-storage.service.js +35 -0
- package/dist/storage/account-lockout-storage.service.js.map +1 -1
- package/dist/storage/memory-storage.adapter.d.ts +148 -0
- package/dist/storage/memory-storage.adapter.d.ts.map +1 -1
- package/dist/storage/memory-storage.adapter.js +201 -6
- package/dist/storage/memory-storage.adapter.js.map +1 -1
- package/dist/storage/rate-limit-storage.service.d.ts +3 -0
- package/dist/storage/rate-limit-storage.service.d.ts.map +1 -1
- package/dist/storage/rate-limit-storage.service.js +4 -0
- package/dist/storage/rate-limit-storage.service.js.map +1 -1
- package/dist/storage.d.ts +8 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -0
- package/dist/storage.js.map +1 -1
- package/dist/templates/html-template.engine.d.ts +110 -0
- package/dist/templates/html-template.engine.d.ts.map +1 -1
- package/dist/templates/html-template.engine.js +147 -0
- package/dist/templates/html-template.engine.js.map +1 -1
- package/dist/templates/index.d.ts +5 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +5 -0
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/sms-template.engine.d.ts +151 -0
- package/dist/templates/sms-template.engine.d.ts.map +1 -1
- package/dist/templates/sms-template.engine.js +171 -0
- package/dist/templates/sms-template.engine.js.map +1 -1
- package/dist/templates.d.ts +8 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +8 -0
- package/dist/templates.js.map +1 -1
- package/dist/utils/common-passwords.d.ts +42 -0
- package/dist/utils/common-passwords.d.ts.map +1 -1
- package/dist/utils/common-passwords.js +88 -0
- package/dist/utils/common-passwords.js.map +1 -1
- package/dist/utils/context-storage.d.ts +129 -0
- package/dist/utils/context-storage.d.ts.map +1 -1
- package/dist/utils/context-storage.js +129 -0
- package/dist/utils/context-storage.js.map +1 -1
- package/dist/utils/cookie-names.util.d.ts +35 -0
- package/dist/utils/cookie-names.util.d.ts.map +1 -1
- package/dist/utils/cookie-names.util.js +37 -0
- package/dist/utils/cookie-names.util.js.map +1 -1
- package/dist/utils/cookies.util.d.ts +19 -0
- package/dist/utils/cookies.util.d.ts.map +1 -1
- package/dist/utils/cookies.util.js +30 -3
- package/dist/utils/cookies.util.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ip-extractor.d.ts +88 -0
- package/dist/utils/ip-extractor.d.ts.map +1 -1
- package/dist/utils/ip-extractor.js +109 -16
- package/dist/utils/ip-extractor.js.map +1 -1
- package/dist/utils/nauth-logger.d.ts +70 -0
- package/dist/utils/nauth-logger.d.ts.map +1 -1
- package/dist/utils/nauth-logger.js +82 -4
- package/dist/utils/nauth-logger.js.map +1 -1
- package/dist/utils/pii-redactor.d.ts +70 -0
- package/dist/utils/pii-redactor.d.ts.map +1 -1
- package/dist/utils/pii-redactor.js +102 -0
- package/dist/utils/pii-redactor.js.map +1 -1
- package/dist/utils/setup/get-repositories.d.ts +16 -0
- package/dist/utils/setup/get-repositories.d.ts.map +1 -1
- package/dist/utils/setup/get-repositories.js +21 -0
- package/dist/utils/setup/get-repositories.js.map +1 -1
- package/dist/utils/setup/init-services.d.ts +40 -1
- package/dist/utils/setup/init-services.d.ts.map +1 -1
- package/dist/utils/setup/init-services.js +98 -0
- package/dist/utils/setup/init-services.js.map +1 -1
- package/dist/utils/setup/init-social.d.ts +27 -0
- package/dist/utils/setup/init-social.d.ts.map +1 -1
- package/dist/utils/setup/init-social.js +49 -0
- package/dist/utils/setup/init-social.js.map +1 -1
- package/dist/utils/setup/init-storage.d.ts +22 -0
- package/dist/utils/setup/init-storage.d.ts.map +1 -1
- package/dist/utils/setup/init-storage.js +36 -0
- package/dist/utils/setup/init-storage.js.map +1 -1
- package/dist/utils/setup/register-mfa.d.ts +22 -0
- package/dist/utils/setup/register-mfa.d.ts.map +1 -1
- package/dist/utils/setup/register-mfa.js +41 -0
- package/dist/utils/setup/register-mfa.js.map +1 -1
- package/dist/utils/setup/run-nauth-migrations.d.ts +7 -0
- package/dist/utils/setup/run-nauth-migrations.d.ts.map +1 -1
- package/dist/utils/setup/run-nauth-migrations.js +8 -0
- package/dist/utils/setup/run-nauth-migrations.js.map +1 -1
- package/dist/utils/token-delivery-policy.d.ts +17 -0
- package/dist/utils/token-delivery-policy.d.ts.map +1 -1
- package/dist/utils/token-delivery-policy.js +17 -0
- package/dist/utils/token-delivery-policy.js.map +1 -1
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +8 -0
- package/dist/utils.js.map +1 -1
- package/dist/validators/template.validator.d.ts +80 -0
- package/dist/validators/template.validator.d.ts.map +1 -1
- package/dist/validators/template.validator.js +94 -0
- package/dist/validators/template.validator.js.map +1 -1
- package/package.json +7 -2
|
@@ -12,8 +12,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.ResetPasswordDTO = exports.ResetPasswordRequestDTO = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
/**
|
|
16
|
+
* Reset Password Request DTO
|
|
17
|
+
*
|
|
18
|
+
* Used to request a password reset token via email or phone.
|
|
19
|
+
*
|
|
20
|
+
* Security:
|
|
21
|
+
* - Identifier validated (email or phone)
|
|
22
|
+
* - Input sanitization applied
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* POST /auth/reset-password/request
|
|
27
|
+
* {
|
|
28
|
+
* "identifier": "user@example.com"
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
15
32
|
class ResetPasswordRequestDTO {
|
|
16
|
-
|
|
33
|
+
/**
|
|
34
|
+
* User identifier (email or phone)
|
|
35
|
+
*
|
|
36
|
+
* Validation:
|
|
37
|
+
* - Must be a string
|
|
38
|
+
* - Min 1 character
|
|
39
|
+
* - Max 255 characters (matches DB constraint for email)
|
|
40
|
+
*
|
|
41
|
+
* Sanitization:
|
|
42
|
+
* - Trimmed
|
|
43
|
+
* - Lowercased if email format detected
|
|
44
|
+
*/
|
|
45
|
+
identifier; // email or phone
|
|
17
46
|
}
|
|
18
47
|
exports.ResetPasswordRequestDTO = ResetPasswordRequestDTO;
|
|
19
48
|
__decorate([
|
|
@@ -24,6 +53,7 @@ __decorate([
|
|
|
24
53
|
(0, class_transformer_1.Transform)(({ value }) => {
|
|
25
54
|
if (typeof value === 'string') {
|
|
26
55
|
const trimmed = value.trim();
|
|
56
|
+
// If it contains @, treat as email and lowercase
|
|
27
57
|
if (trimmed.includes('@')) {
|
|
28
58
|
return trimmed.toLowerCase();
|
|
29
59
|
}
|
|
@@ -33,8 +63,53 @@ __decorate([
|
|
|
33
63
|
}),
|
|
34
64
|
__metadata("design:type", String)
|
|
35
65
|
], ResetPasswordRequestDTO.prototype, "identifier", void 0);
|
|
66
|
+
/**
|
|
67
|
+
* Reset Password DTO
|
|
68
|
+
*
|
|
69
|
+
* Used to reset password with a valid reset token.
|
|
70
|
+
*
|
|
71
|
+
* Security:
|
|
72
|
+
* - Token length validated (matches DB constraint: varchar(255))
|
|
73
|
+
* - Password strength enforced (8-128 chars)
|
|
74
|
+
* - Token format validated in service layer
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* POST /auth/reset-password
|
|
79
|
+
* {
|
|
80
|
+
* "token": "reset-token-from-email",
|
|
81
|
+
* "newPassword": "NewSecurePassword123!"
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
36
85
|
class ResetPasswordDTO {
|
|
86
|
+
/**
|
|
87
|
+
* Password reset token from email
|
|
88
|
+
*
|
|
89
|
+
* Validation:
|
|
90
|
+
* - Must be a string
|
|
91
|
+
* - Min 1 character (prevents empty strings)
|
|
92
|
+
* - Max 255 characters (matches DB constraint: varchar(255))
|
|
93
|
+
*
|
|
94
|
+
* Sanitization:
|
|
95
|
+
* - Trimmed
|
|
96
|
+
*
|
|
97
|
+
* Note: Token format and validity validated in service layer
|
|
98
|
+
*/
|
|
37
99
|
token;
|
|
100
|
+
/**
|
|
101
|
+
* New password
|
|
102
|
+
*
|
|
103
|
+
* Validation:
|
|
104
|
+
* - Must be a string
|
|
105
|
+
* - Min 8 characters (security requirement)
|
|
106
|
+
* - Max 128 characters (prevents DoS via bcrypt)
|
|
107
|
+
*
|
|
108
|
+
* Note: NOT trimmed (passwords can have leading/trailing spaces)
|
|
109
|
+
* Additional checks in service layer:
|
|
110
|
+
* - Password strength (if configured)
|
|
111
|
+
* - Password history (prevent reuse)
|
|
112
|
+
*/
|
|
38
113
|
newPassword;
|
|
39
114
|
}
|
|
40
115
|
exports.ResetPasswordDTO = ResetPasswordDTO;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset-password.dto.js","sourceRoot":"","sources":["../../src/dto/reset-password.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA6E;AAC7E,yDAA8C;
|
|
1
|
+
{"version":3,"file":"reset-password.dto.js","sourceRoot":"","sources":["../../src/dto/reset-password.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA6E;AAC7E,yDAA8C;AAE9C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,uBAAuB;IAClC;;;;;;;;;;;OAWG;IAgBH,UAAU,CAAU,CAAC,iBAAiB;CACvC;AA7BD,0DA6BC;AADC;IAfC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACjD,IAAA,2BAAS,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACnD,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;IACxE,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,iDAAiD;YACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;;2DACkB;AAGtB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,gBAAgB;IAC3B;;;;;;;;;;;;OAYG;IAWH,KAAK,CAAU;IAEf;;;;;;;;;;;;OAYG;IAKH,WAAW,CAAU;CACtB;AA5CD,4CA4CC;AApBC;IAVC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IAC/C,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC5C,IAAA,2BAAS,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC9C,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;IACnE,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;;+CACa;AAmBf;IAJC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;IACtD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACnD,IAAA,2BAAS,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;IACnE,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;;qDAClD"}
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Challenge Response DTO with Comprehensive Validation
|
|
3
|
+
*
|
|
4
|
+
* Provides class-validator validation for challenge responses.
|
|
5
|
+
* This is the single source of truth for challenge response validation,
|
|
6
|
+
* used by both NestJS and Express adapters.
|
|
7
|
+
*
|
|
8
|
+
* Security Features:
|
|
9
|
+
* - All string inputs have max length (prevents DoS attacks)
|
|
10
|
+
* - Phone numbers validated against E.164 format
|
|
11
|
+
* - Password strength enforced (8-128 chars)
|
|
12
|
+
* - Conditional validation based on challenge type
|
|
13
|
+
* - Enum validation prevents invalid challenge types
|
|
14
|
+
*
|
|
15
|
+
* @module RespondChallengeDTO
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Challenge type enum for validation
|
|
19
|
+
*/
|
|
1
20
|
export declare enum ChallengeType {
|
|
2
21
|
VERIFY_EMAIL = "VERIFY_EMAIL",
|
|
3
22
|
VERIFY_PHONE = "VERIFY_PHONE",
|
|
@@ -5,6 +24,9 @@ export declare enum ChallengeType {
|
|
|
5
24
|
FORCE_CHANGE_PASSWORD = "FORCE_CHANGE_PASSWORD",
|
|
6
25
|
MFA_SETUP_REQUIRED = "MFA_SETUP_REQUIRED"
|
|
7
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* MFA method enum for validation
|
|
29
|
+
*/
|
|
8
30
|
export declare enum MFAMethodType {
|
|
9
31
|
SMS = "sms",
|
|
10
32
|
EMAIL = "email",
|
|
@@ -12,16 +34,141 @@ export declare enum MFAMethodType {
|
|
|
12
34
|
PASSKEY = "passkey",
|
|
13
35
|
BACKUP = "backup"
|
|
14
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Unified DTO for responding to authentication challenges
|
|
39
|
+
*
|
|
40
|
+
* Uses conditional validation (@ValidateIf) to validate fields based on challenge type.
|
|
41
|
+
* This ensures proper validation while maintaining a single endpoint for all challenge types.
|
|
42
|
+
*
|
|
43
|
+
* Security:
|
|
44
|
+
* - All strings have max length constraints matching DB limits
|
|
45
|
+
* - Phone numbers validated against E.164 format (prevents SQL injection)
|
|
46
|
+
* - Verification codes validated for length (4-10 chars)
|
|
47
|
+
* - Passwords validated for strength requirements
|
|
48
|
+
* - Session tokens validated as UUID v4 format (prevents injection)
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* @Controller('auth')
|
|
53
|
+
* export class AuthController {
|
|
54
|
+
* @Post('respond-challenge')
|
|
55
|
+
* async respondToChallenge(@Body() dto: RespondChallengeDTO) {
|
|
56
|
+
* return await this.authService.respondToChallenge(dto);
|
|
57
|
+
* }
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
15
61
|
export declare class RespondChallengeDTO {
|
|
62
|
+
/**
|
|
63
|
+
* Challenge session token (UUID v4)
|
|
64
|
+
* Always required
|
|
65
|
+
*
|
|
66
|
+
* Validation:
|
|
67
|
+
* - Must be a valid UUID v4 format
|
|
68
|
+
* - Generated using randomUUID() in challenge service
|
|
69
|
+
* - Matches DB constraint: varchar(255) but UUID format enforced
|
|
70
|
+
*
|
|
71
|
+
* Sanitization:
|
|
72
|
+
* - Trimmed
|
|
73
|
+
* - Lowercased for consistency
|
|
74
|
+
*
|
|
75
|
+
* @example "a21b654c-2746-4168-acee-c175083a65cd"
|
|
76
|
+
*/
|
|
16
77
|
session: string;
|
|
78
|
+
/**
|
|
79
|
+
* Challenge type being responded to
|
|
80
|
+
* Always required
|
|
81
|
+
*/
|
|
17
82
|
type: ChallengeType;
|
|
83
|
+
/**
|
|
84
|
+
* Verification code
|
|
85
|
+
* Required for:
|
|
86
|
+
* - VERIFY_EMAIL
|
|
87
|
+
* - VERIFY_PHONE (when verifying code)
|
|
88
|
+
* - MFA_REQUIRED (for SMS/Email/TOTP/Backup methods)
|
|
89
|
+
*
|
|
90
|
+
* Validation:
|
|
91
|
+
* - Must be a string
|
|
92
|
+
* - Length 4-10 characters (covers all code types)
|
|
93
|
+
* - Alphanumeric only
|
|
94
|
+
*
|
|
95
|
+
* Note: NOT trimmed (codes should be exact)
|
|
96
|
+
*/
|
|
18
97
|
code?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Phone number in E.164 format
|
|
100
|
+
* Required for VERIFY_PHONE when collecting phone number (first step)
|
|
101
|
+
*
|
|
102
|
+
* Validation:
|
|
103
|
+
* - Must be a string
|
|
104
|
+
* - Must match E.164 format: +[country code][number]
|
|
105
|
+
* - Example: +14155552671
|
|
106
|
+
* - Max 20 characters (matches DB limit)
|
|
107
|
+
*
|
|
108
|
+
* Sanitization:
|
|
109
|
+
* - Trimmed
|
|
110
|
+
* - Only digits and leading + allowed
|
|
111
|
+
*/
|
|
19
112
|
phone?: string;
|
|
113
|
+
/**
|
|
114
|
+
* New password
|
|
115
|
+
* Required for FORCE_CHANGE_PASSWORD challenge
|
|
116
|
+
*
|
|
117
|
+
* Validation:
|
|
118
|
+
* - Must be a string
|
|
119
|
+
* - Min 8 characters (security requirement)
|
|
120
|
+
* - Max 128 characters (prevents DoS via bcrypt)
|
|
121
|
+
*
|
|
122
|
+
* Note: NOT trimmed (passwords can have leading/trailing spaces)
|
|
123
|
+
*/
|
|
20
124
|
newPassword?: string;
|
|
125
|
+
/**
|
|
126
|
+
* MFA method being used or set up
|
|
127
|
+
* Required for:
|
|
128
|
+
* - MFA_REQUIRED challenge (method being used for verification)
|
|
129
|
+
* - MFA_SETUP_REQUIRED challenge (method being set up)
|
|
130
|
+
*
|
|
131
|
+
* Validation:
|
|
132
|
+
* - Must be one of: sms, email, totp, passkey, backup
|
|
133
|
+
*/
|
|
21
134
|
method?: MFAMethodType;
|
|
135
|
+
/**
|
|
136
|
+
* Passkey credential
|
|
137
|
+
* Required for MFA_REQUIRED when method is 'passkey'
|
|
138
|
+
*
|
|
139
|
+
* Validation:
|
|
140
|
+
* - Must be an object
|
|
141
|
+
* - Contains WebAuthn credential from navigator.credentials.get()
|
|
142
|
+
*/
|
|
22
143
|
credential?: Record<string, unknown>;
|
|
144
|
+
/**
|
|
145
|
+
* MFA setup data (method-specific)
|
|
146
|
+
* Required for MFA_SETUP_REQUIRED challenge
|
|
147
|
+
*
|
|
148
|
+
* Expected structure by method:
|
|
149
|
+
* - SMS: { phone: string, code: string }
|
|
150
|
+
* - Email: { code: string }
|
|
151
|
+
* - TOTP: { code: string }
|
|
152
|
+
* - Passkey: { credential: Record<string, unknown> }
|
|
153
|
+
*
|
|
154
|
+
* Validation:
|
|
155
|
+
* - Must be an object
|
|
156
|
+
* - Structure validated by MFA provider services
|
|
157
|
+
*/
|
|
23
158
|
setupData?: Record<string, unknown>;
|
|
24
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Helper type guards for challenge response
|
|
162
|
+
*
|
|
163
|
+
* Use these to narrow TypeScript types in your application logic.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* if (RespondChallengeValidation.isEmailVerification(dto)) {
|
|
168
|
+
* // TypeScript knows dto.code is available
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
25
172
|
export declare namespace RespondChallengeValidation {
|
|
26
173
|
function isEmailVerification(dto: RespondChallengeDTO): boolean;
|
|
27
174
|
function isPhoneCollection(dto: RespondChallengeDTO): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond-challenge.dto.d.ts","sourceRoot":"","sources":["../../src/dto/respond-challenge.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"respond-challenge.dto.d.ts","sourceRoot":"","sources":["../../src/dto/respond-challenge.dto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;GAEG;AACH,oBAAY,aAAa;IACvB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,qBAAqB,0BAA0B;IAC/C,kBAAkB,uBAAuB;CAC1C;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;;;;;;;OAcG;IAQH,OAAO,EAAG,MAAM,CAAC;IAEjB;;;OAGG;IAKH,IAAI,EAAG,aAAa,CAAC;IAMrB;;;;;;;;;;;;;OAaG;IAUH,IAAI,CAAC,EAAE,MAAM,CAAC;IAMd;;;;;;;;;;;;;OAaG;IAaH,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf;;;;;;;;;;OAUG;IAKH,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB;;;;;;;;OAQG;IAGH,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB;;;;;;;OAOG;IAGH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMrC;;;;;;;;;;;;;OAaG;IAGH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;GAWG;AACH,yBAAiB,0BAA0B,CAAC;IAC1C,SAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAErE;IAED,SAAgB,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAEnE;IAED,SAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAErE;IAED,SAAgB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAElE;IAED,SAAgB,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAEnE;IAED,SAAgB,UAAU,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAE5D;CACF"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unified Challenge Response DTO with Comprehensive Validation
|
|
4
|
+
*
|
|
5
|
+
* Provides class-validator validation for challenge responses.
|
|
6
|
+
* This is the single source of truth for challenge response validation,
|
|
7
|
+
* used by both NestJS and Express adapters.
|
|
8
|
+
*
|
|
9
|
+
* Security Features:
|
|
10
|
+
* - All string inputs have max length (prevents DoS attacks)
|
|
11
|
+
* - Phone numbers validated against E.164 format
|
|
12
|
+
* - Password strength enforced (8-128 chars)
|
|
13
|
+
* - Conditional validation based on challenge type
|
|
14
|
+
* - Enum validation prevents invalid challenge types
|
|
15
|
+
*
|
|
16
|
+
* @module RespondChallengeDTO
|
|
17
|
+
*/
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -12,6 +28,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
28
|
exports.RespondChallengeValidation = exports.RespondChallengeDTO = exports.MFAMethodType = exports.ChallengeType = void 0;
|
|
13
29
|
const class_validator_1 = require("class-validator");
|
|
14
30
|
const class_transformer_1 = require("class-transformer");
|
|
31
|
+
/**
|
|
32
|
+
* Challenge type enum for validation
|
|
33
|
+
*/
|
|
15
34
|
var ChallengeType;
|
|
16
35
|
(function (ChallengeType) {
|
|
17
36
|
ChallengeType["VERIFY_EMAIL"] = "VERIFY_EMAIL";
|
|
@@ -20,6 +39,9 @@ var ChallengeType;
|
|
|
20
39
|
ChallengeType["FORCE_CHANGE_PASSWORD"] = "FORCE_CHANGE_PASSWORD";
|
|
21
40
|
ChallengeType["MFA_SETUP_REQUIRED"] = "MFA_SETUP_REQUIRED";
|
|
22
41
|
})(ChallengeType || (exports.ChallengeType = ChallengeType = {}));
|
|
42
|
+
/**
|
|
43
|
+
* MFA method enum for validation
|
|
44
|
+
*/
|
|
23
45
|
var MFAMethodType;
|
|
24
46
|
(function (MFAMethodType) {
|
|
25
47
|
MFAMethodType["SMS"] = "sms";
|
|
@@ -28,14 +50,142 @@ var MFAMethodType;
|
|
|
28
50
|
MFAMethodType["PASSKEY"] = "passkey";
|
|
29
51
|
MFAMethodType["BACKUP"] = "backup";
|
|
30
52
|
})(MFAMethodType || (exports.MFAMethodType = MFAMethodType = {}));
|
|
53
|
+
/**
|
|
54
|
+
* Unified DTO for responding to authentication challenges
|
|
55
|
+
*
|
|
56
|
+
* Uses conditional validation (@ValidateIf) to validate fields based on challenge type.
|
|
57
|
+
* This ensures proper validation while maintaining a single endpoint for all challenge types.
|
|
58
|
+
*
|
|
59
|
+
* Security:
|
|
60
|
+
* - All strings have max length constraints matching DB limits
|
|
61
|
+
* - Phone numbers validated against E.164 format (prevents SQL injection)
|
|
62
|
+
* - Verification codes validated for length (4-10 chars)
|
|
63
|
+
* - Passwords validated for strength requirements
|
|
64
|
+
* - Session tokens validated as UUID v4 format (prevents injection)
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* @Controller('auth')
|
|
69
|
+
* export class AuthController {
|
|
70
|
+
* @Post('respond-challenge')
|
|
71
|
+
* async respondToChallenge(@Body() dto: RespondChallengeDTO) {
|
|
72
|
+
* return await this.authService.respondToChallenge(dto);
|
|
73
|
+
* }
|
|
74
|
+
* }
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
31
77
|
class RespondChallengeDTO {
|
|
78
|
+
/**
|
|
79
|
+
* Challenge session token (UUID v4)
|
|
80
|
+
* Always required
|
|
81
|
+
*
|
|
82
|
+
* Validation:
|
|
83
|
+
* - Must be a valid UUID v4 format
|
|
84
|
+
* - Generated using randomUUID() in challenge service
|
|
85
|
+
* - Matches DB constraint: varchar(255) but UUID format enforced
|
|
86
|
+
*
|
|
87
|
+
* Sanitization:
|
|
88
|
+
* - Trimmed
|
|
89
|
+
* - Lowercased for consistency
|
|
90
|
+
*
|
|
91
|
+
* @example "a21b654c-2746-4168-acee-c175083a65cd"
|
|
92
|
+
*/
|
|
32
93
|
session;
|
|
94
|
+
/**
|
|
95
|
+
* Challenge type being responded to
|
|
96
|
+
* Always required
|
|
97
|
+
*/
|
|
33
98
|
type;
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// VERIFY_EMAIL / VERIFY_PHONE / MFA_REQUIRED (code-based)
|
|
101
|
+
// ============================================================================
|
|
102
|
+
/**
|
|
103
|
+
* Verification code
|
|
104
|
+
* Required for:
|
|
105
|
+
* - VERIFY_EMAIL
|
|
106
|
+
* - VERIFY_PHONE (when verifying code)
|
|
107
|
+
* - MFA_REQUIRED (for SMS/Email/TOTP/Backup methods)
|
|
108
|
+
*
|
|
109
|
+
* Validation:
|
|
110
|
+
* - Must be a string
|
|
111
|
+
* - Length 4-10 characters (covers all code types)
|
|
112
|
+
* - Alphanumeric only
|
|
113
|
+
*
|
|
114
|
+
* Note: NOT trimmed (codes should be exact)
|
|
115
|
+
*/
|
|
34
116
|
code;
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// VERIFY_PHONE (phone collection)
|
|
119
|
+
// ============================================================================
|
|
120
|
+
/**
|
|
121
|
+
* Phone number in E.164 format
|
|
122
|
+
* Required for VERIFY_PHONE when collecting phone number (first step)
|
|
123
|
+
*
|
|
124
|
+
* Validation:
|
|
125
|
+
* - Must be a string
|
|
126
|
+
* - Must match E.164 format: +[country code][number]
|
|
127
|
+
* - Example: +14155552671
|
|
128
|
+
* - Max 20 characters (matches DB limit)
|
|
129
|
+
*
|
|
130
|
+
* Sanitization:
|
|
131
|
+
* - Trimmed
|
|
132
|
+
* - Only digits and leading + allowed
|
|
133
|
+
*/
|
|
35
134
|
phone;
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// FORCE_CHANGE_PASSWORD
|
|
137
|
+
// ============================================================================
|
|
138
|
+
/**
|
|
139
|
+
* New password
|
|
140
|
+
* Required for FORCE_CHANGE_PASSWORD challenge
|
|
141
|
+
*
|
|
142
|
+
* Validation:
|
|
143
|
+
* - Must be a string
|
|
144
|
+
* - Min 8 characters (security requirement)
|
|
145
|
+
* - Max 128 characters (prevents DoS via bcrypt)
|
|
146
|
+
*
|
|
147
|
+
* Note: NOT trimmed (passwords can have leading/trailing spaces)
|
|
148
|
+
*/
|
|
36
149
|
newPassword;
|
|
150
|
+
// ============================================================================
|
|
151
|
+
// MFA_REQUIRED / MFA_SETUP_REQUIRED
|
|
152
|
+
// ============================================================================
|
|
153
|
+
/**
|
|
154
|
+
* MFA method being used or set up
|
|
155
|
+
* Required for:
|
|
156
|
+
* - MFA_REQUIRED challenge (method being used for verification)
|
|
157
|
+
* - MFA_SETUP_REQUIRED challenge (method being set up)
|
|
158
|
+
*
|
|
159
|
+
* Validation:
|
|
160
|
+
* - Must be one of: sms, email, totp, passkey, backup
|
|
161
|
+
*/
|
|
37
162
|
method;
|
|
163
|
+
/**
|
|
164
|
+
* Passkey credential
|
|
165
|
+
* Required for MFA_REQUIRED when method is 'passkey'
|
|
166
|
+
*
|
|
167
|
+
* Validation:
|
|
168
|
+
* - Must be an object
|
|
169
|
+
* - Contains WebAuthn credential from navigator.credentials.get()
|
|
170
|
+
*/
|
|
38
171
|
credential;
|
|
172
|
+
// ============================================================================
|
|
173
|
+
// MFA_SETUP_REQUIRED
|
|
174
|
+
// ============================================================================
|
|
175
|
+
/**
|
|
176
|
+
* MFA setup data (method-specific)
|
|
177
|
+
* Required for MFA_SETUP_REQUIRED challenge
|
|
178
|
+
*
|
|
179
|
+
* Expected structure by method:
|
|
180
|
+
* - SMS: { phone: string, code: string }
|
|
181
|
+
* - Email: { code: string }
|
|
182
|
+
* - TOTP: { code: string }
|
|
183
|
+
* - Passkey: { credential: Record<string, unknown> }
|
|
184
|
+
*
|
|
185
|
+
* Validation:
|
|
186
|
+
* - Must be an object
|
|
187
|
+
* - Structure validated by MFA provider services
|
|
188
|
+
*/
|
|
39
189
|
setupData;
|
|
40
190
|
}
|
|
41
191
|
exports.RespondChallengeDTO = RespondChallengeDTO;
|
|
@@ -101,6 +251,18 @@ __decorate([
|
|
|
101
251
|
(0, class_validator_1.IsObject)({ message: 'Setup data must be an object' }),
|
|
102
252
|
__metadata("design:type", Object)
|
|
103
253
|
], RespondChallengeDTO.prototype, "setupData", void 0);
|
|
254
|
+
/**
|
|
255
|
+
* Helper type guards for challenge response
|
|
256
|
+
*
|
|
257
|
+
* Use these to narrow TypeScript types in your application logic.
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* if (RespondChallengeValidation.isEmailVerification(dto)) {
|
|
262
|
+
* // TypeScript knows dto.code is available
|
|
263
|
+
* }
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
104
266
|
var RespondChallengeValidation;
|
|
105
267
|
(function (RespondChallengeValidation) {
|
|
106
268
|
function isEmailVerification(dto) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond-challenge.dto.js","sourceRoot":"","sources":["../../src/dto/respond-challenge.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"respond-challenge.dto.js","sourceRoot":"","sources":["../../src/dto/respond-challenge.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DTO for setting MFA exemption
|
|
3
|
+
*
|
|
4
|
+
* Used to grant or revoke a user's exemption from multi-factor authentication requirements.
|
|
5
|
+
* Admin-only operation.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const result = await mfaService.setMFAExemption({
|
|
10
|
+
* userSub: 'user-uuid',
|
|
11
|
+
* exempt: true,
|
|
12
|
+
* reason: 'Business partner requires MFA bypass',
|
|
13
|
+
* grantedBy: 'admin@example.com'
|
|
14
|
+
* });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* DTO for setting MFA exemption
|
|
19
|
+
*/
|
|
1
20
|
export declare class SetMFAExemptionDTO {
|
|
21
|
+
/**
|
|
22
|
+
* User's unique identifier (UUID v4)
|
|
23
|
+
*
|
|
24
|
+
* Validation:
|
|
25
|
+
* - Must be a valid UUID v4 format
|
|
26
|
+
* - Matches DB constraint: char(36) or uuid
|
|
27
|
+
*
|
|
28
|
+
* Sanitization:
|
|
29
|
+
* - Trimmed
|
|
30
|
+
* - Lowercased for consistency
|
|
31
|
+
*
|
|
32
|
+
* @example "a21b654c-2746-4168-acee-c175083a65cd"
|
|
33
|
+
*/
|
|
2
34
|
userSub: string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether to grant exemption (true) or revoke exemption (false)
|
|
37
|
+
*/
|
|
3
38
|
exempt: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Optional reason for the exemption status change
|
|
41
|
+
*
|
|
42
|
+
* Validation:
|
|
43
|
+
* - Max 500 characters
|
|
44
|
+
*
|
|
45
|
+
* Sanitization:
|
|
46
|
+
* - Trimmed
|
|
47
|
+
*/
|
|
4
48
|
reason?: string | null;
|
|
49
|
+
/**
|
|
50
|
+
* Optional identifier of the admin performing this action
|
|
51
|
+
*
|
|
52
|
+
* Validation:
|
|
53
|
+
* - Max 255 characters
|
|
54
|
+
*
|
|
55
|
+
* Sanitization:
|
|
56
|
+
* - Trimmed
|
|
57
|
+
*/
|
|
5
58
|
grantedBy?: string | null;
|
|
6
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Response DTO for setting MFA exemption
|
|
62
|
+
*/
|
|
7
63
|
export declare class SetMFAExemptionResponseDTO {
|
|
64
|
+
/**
|
|
65
|
+
* Whether user is exempt from MFA requirements
|
|
66
|
+
*/
|
|
8
67
|
mfaExempt: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Reason for MFA exemption (if exempt)
|
|
70
|
+
*/
|
|
9
71
|
mfaExemptReason: string | null;
|
|
72
|
+
/**
|
|
73
|
+
* Date when MFA exemption was granted (if exempt)
|
|
74
|
+
*/
|
|
10
75
|
mfaExemptGrantedAt: Date | null;
|
|
11
76
|
}
|
|
12
77
|
//# sourceMappingURL=set-mfa-exemption.dto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-mfa-exemption.dto.d.ts","sourceRoot":"","sources":["../../src/dto/set-mfa-exemption.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"set-mfa-exemption.dto.d.ts","sourceRoot":"","sources":["../../src/dto/set-mfa-exemption.dto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;;;;;;;;;;;OAYG;IAQH,OAAO,EAAG,MAAM,CAAC;IAEjB;;OAEG;IAEH,MAAM,EAAG,OAAO,CAAC;IAEjB;;;;;;;;OAQG;IAUH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;;;;;;;OAQG;IAUH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,0BAA0B;IACrC;;OAEG;IACH,SAAS,EAAG,OAAO,CAAC;IAEpB;;OAEG;IACH,eAAe,EAAG,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,kBAAkB,EAAG,IAAI,GAAG,IAAI,CAAC;CAClC"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DTO for setting MFA exemption
|
|
4
|
+
*
|
|
5
|
+
* Used to grant or revoke a user's exemption from multi-factor authentication requirements.
|
|
6
|
+
* Admin-only operation.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const result = await mfaService.setMFAExemption({
|
|
11
|
+
* userSub: 'user-uuid',
|
|
12
|
+
* exempt: true,
|
|
13
|
+
* reason: 'Business partner requires MFA bypass',
|
|
14
|
+
* grantedBy: 'admin@example.com'
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -12,10 +28,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
28
|
exports.SetMFAExemptionResponseDTO = exports.SetMFAExemptionDTO = void 0;
|
|
13
29
|
const class_validator_1 = require("class-validator");
|
|
14
30
|
const class_transformer_1 = require("class-transformer");
|
|
31
|
+
/**
|
|
32
|
+
* DTO for setting MFA exemption
|
|
33
|
+
*/
|
|
15
34
|
class SetMFAExemptionDTO {
|
|
35
|
+
/**
|
|
36
|
+
* User's unique identifier (UUID v4)
|
|
37
|
+
*
|
|
38
|
+
* Validation:
|
|
39
|
+
* - Must be a valid UUID v4 format
|
|
40
|
+
* - Matches DB constraint: char(36) or uuid
|
|
41
|
+
*
|
|
42
|
+
* Sanitization:
|
|
43
|
+
* - Trimmed
|
|
44
|
+
* - Lowercased for consistency
|
|
45
|
+
*
|
|
46
|
+
* @example "a21b654c-2746-4168-acee-c175083a65cd"
|
|
47
|
+
*/
|
|
16
48
|
userSub;
|
|
49
|
+
/**
|
|
50
|
+
* Whether to grant exemption (true) or revoke exemption (false)
|
|
51
|
+
*/
|
|
17
52
|
exempt;
|
|
53
|
+
/**
|
|
54
|
+
* Optional reason for the exemption status change
|
|
55
|
+
*
|
|
56
|
+
* Validation:
|
|
57
|
+
* - Max 500 characters
|
|
58
|
+
*
|
|
59
|
+
* Sanitization:
|
|
60
|
+
* - Trimmed
|
|
61
|
+
*/
|
|
18
62
|
reason;
|
|
63
|
+
/**
|
|
64
|
+
* Optional identifier of the admin performing this action
|
|
65
|
+
*
|
|
66
|
+
* Validation:
|
|
67
|
+
* - Max 255 characters
|
|
68
|
+
*
|
|
69
|
+
* Sanitization:
|
|
70
|
+
* - Trimmed
|
|
71
|
+
*/
|
|
19
72
|
grantedBy;
|
|
20
73
|
}
|
|
21
74
|
exports.SetMFAExemptionDTO = SetMFAExemptionDTO;
|
|
@@ -57,9 +110,21 @@ __decorate([
|
|
|
57
110
|
}),
|
|
58
111
|
__metadata("design:type", Object)
|
|
59
112
|
], SetMFAExemptionDTO.prototype, "grantedBy", void 0);
|
|
113
|
+
/**
|
|
114
|
+
* Response DTO for setting MFA exemption
|
|
115
|
+
*/
|
|
60
116
|
class SetMFAExemptionResponseDTO {
|
|
117
|
+
/**
|
|
118
|
+
* Whether user is exempt from MFA requirements
|
|
119
|
+
*/
|
|
61
120
|
mfaExempt;
|
|
121
|
+
/**
|
|
122
|
+
* Reason for MFA exemption (if exempt)
|
|
123
|
+
*/
|
|
62
124
|
mfaExemptReason;
|
|
125
|
+
/**
|
|
126
|
+
* Date when MFA exemption was granted (if exempt)
|
|
127
|
+
*/
|
|
63
128
|
mfaExemptGrantedAt;
|
|
64
129
|
}
|
|
65
130
|
exports.SetMFAExemptionResponseDTO = SetMFAExemptionResponseDTO;
|