@nauth-toolkit/core 0.1.14 → 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
|
@@ -6,6 +6,49 @@ const auth_audit_event_type_enum_1 = require("../enums/auth-audit-event-type.enu
|
|
|
6
6
|
const nauth_exception_1 = require("../exceptions/nauth.exception");
|
|
7
7
|
const error_codes_enum_1 = require("../enums/error-codes.enum");
|
|
8
8
|
const mfa_method_enum_1 = require("../enums/mfa-method.enum");
|
|
9
|
+
/**
|
|
10
|
+
* Base MFA Provider Service
|
|
11
|
+
*
|
|
12
|
+
* Abstract base class that provides common functionality for all MFA providers.
|
|
13
|
+
* Provider-specific services (TOTP, SMS, Passkey, etc.) should extend this class
|
|
14
|
+
* and implement the IMFAProviderService interface methods.
|
|
15
|
+
*
|
|
16
|
+
* This base class handles:
|
|
17
|
+
* - Device repository access
|
|
18
|
+
* - User repository access
|
|
19
|
+
* - Common device management operations
|
|
20
|
+
* - Backup codes generation and verification
|
|
21
|
+
* - MFA enforcement checks
|
|
22
|
+
* - Helper methods
|
|
23
|
+
*
|
|
24
|
+
* **Key Design:**
|
|
25
|
+
* - No hardcoded method names - works with any provider
|
|
26
|
+
* - Provider config accessed dynamically via `methodName`
|
|
27
|
+
* - Future developers can add new providers without modifying this class
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* @Injectable()
|
|
32
|
+
* export class TOTPMFAProviderService extends BaseMFAProviderService implements IMFAProviderService {
|
|
33
|
+
* readonly methodName = 'totp';
|
|
34
|
+
*
|
|
35
|
+
* constructor(
|
|
36
|
+
* // ... base dependencies injected via super()
|
|
37
|
+
* private readonly totpService: TOTPService,
|
|
38
|
+
* ) {
|
|
39
|
+
* super(/* ... base dependencies *\/);
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* async setup(user: IUser): Promise<unknown> {
|
|
43
|
+
* // TOTP-specific setup logic
|
|
44
|
+
* }
|
|
45
|
+
*
|
|
46
|
+
* async verify(user: IUser, code: unknown): Promise<boolean> {
|
|
47
|
+
* // TOTP verification logic
|
|
48
|
+
* }
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
9
52
|
class BaseMFAProviderService {
|
|
10
53
|
mfaDeviceRepository;
|
|
11
54
|
userRepository;
|
|
@@ -15,7 +58,8 @@ class BaseMFAProviderService {
|
|
|
15
58
|
challengeService;
|
|
16
59
|
auditService;
|
|
17
60
|
clientInfoService;
|
|
18
|
-
constructor(mfaDeviceRepository, userRepository, config, logger, passwordService,
|
|
61
|
+
constructor(mfaDeviceRepository, userRepository, config, logger, passwordService, // Optional - from @nauth-toolkit/core
|
|
62
|
+
challengeService, auditService, clientInfoService) {
|
|
19
63
|
this.mfaDeviceRepository = mfaDeviceRepository;
|
|
20
64
|
this.userRepository = userRepository;
|
|
21
65
|
this.config = config;
|
|
@@ -25,10 +69,28 @@ class BaseMFAProviderService {
|
|
|
25
69
|
this.auditService = auditService;
|
|
26
70
|
this.clientInfoService = clientInfoService;
|
|
27
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if this MFA method is allowed by configuration
|
|
74
|
+
*
|
|
75
|
+
* @returns True if method is allowed
|
|
76
|
+
*/
|
|
28
77
|
isMethodAllowed() {
|
|
29
78
|
const allowedMethods = this.config.mfa?.allowedMethods || [...mfa_method_enum_1.MFADeviceMethods];
|
|
30
79
|
return allowedMethods.includes(this.methodName);
|
|
31
80
|
}
|
|
81
|
+
// sendChallenge is optional - only providers like SMS need it
|
|
82
|
+
// TOTP doesn't need it (user generates code locally)
|
|
83
|
+
// ============================================================================
|
|
84
|
+
// Device Management (Common Logic)
|
|
85
|
+
// ============================================================================
|
|
86
|
+
/**
|
|
87
|
+
* Get user's MFA devices
|
|
88
|
+
*
|
|
89
|
+
* @param userId - Internal user ID
|
|
90
|
+
* @returns Array of MFA devices
|
|
91
|
+
*
|
|
92
|
+
* @protected
|
|
93
|
+
*/
|
|
32
94
|
async getUserDevices(userId) {
|
|
33
95
|
const devices = await this.mfaDeviceRepository.find({
|
|
34
96
|
where: { userId },
|
|
@@ -36,8 +98,48 @@ class BaseMFAProviderService {
|
|
|
36
98
|
});
|
|
37
99
|
return devices;
|
|
38
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Create MFA device for user
|
|
103
|
+
*
|
|
104
|
+
* Creates a new MFA device with proper duplicate prevention and transaction safety.
|
|
105
|
+
* Uses database-level unique constraint (userId, type) to prevent race conditions.
|
|
106
|
+
*
|
|
107
|
+
* **Race Condition Prevention:**
|
|
108
|
+
* - Checks for existing device before creation
|
|
109
|
+
* - Wraps in transaction with pessimistic write lock on user row
|
|
110
|
+
* - Database unique constraint provides final safety net
|
|
111
|
+
*
|
|
112
|
+
* **Transaction Flow:**
|
|
113
|
+
* 1. Lock user row (prevents concurrent MFA setup)
|
|
114
|
+
* 2. Check for existing device of this type
|
|
115
|
+
* 3. Create device if none exists
|
|
116
|
+
* 4. Update user MFA flags
|
|
117
|
+
* 5. Commit transaction
|
|
118
|
+
*
|
|
119
|
+
* @param userId - Internal user ID
|
|
120
|
+
* @param deviceData - Device data to create
|
|
121
|
+
* @returns Created device (or existing device if already present)
|
|
122
|
+
* @protected
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const device = await this.createDevice(user.id, {
|
|
127
|
+
* name: 'SMS Phone',
|
|
128
|
+
* phoneNumber: '+1234567890',
|
|
129
|
+
* isActive: true,
|
|
130
|
+
* isPrimary: !user.mfaEnabled,
|
|
131
|
+
* });
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
39
134
|
async createDevice(userId, deviceData) {
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// Transaction-Safe Device Creation with Race Condition Prevention
|
|
137
|
+
// ============================================================================
|
|
138
|
+
// Use TypeORM transaction manager to ensure atomicity across all database adapters
|
|
139
|
+
// Pessimistic write lock prevents concurrent MFA device creation for same user
|
|
40
140
|
const device = await this.userRepository.manager.transaction(async (transactionalEntityManager) => {
|
|
141
|
+
// Step 1: Lock user row to prevent concurrent MFA setup
|
|
142
|
+
// This works across MySQL and PostgreSQL (TypeORM translates to FOR UPDATE)
|
|
41
143
|
await transactionalEntityManager
|
|
42
144
|
.createQueryBuilder()
|
|
43
145
|
.select('user.id')
|
|
@@ -45,6 +147,8 @@ class BaseMFAProviderService {
|
|
|
45
147
|
.where('user.id = :userId', { userId })
|
|
46
148
|
.setLock('pessimistic_write')
|
|
47
149
|
.getOne();
|
|
150
|
+
// Step 2: Check for existing device of this type (within transaction)
|
|
151
|
+
// This prevents duplicates even if called concurrently
|
|
48
152
|
const existingDevice = await transactionalEntityManager
|
|
49
153
|
.getRepository(this.mfaDeviceRepository.target)
|
|
50
154
|
.createQueryBuilder('device')
|
|
@@ -55,15 +159,20 @@ class BaseMFAProviderService {
|
|
|
55
159
|
this.logger?.log?.(`MFA device of type '${this.methodName}' already exists for user ${userId}, returning existing device`);
|
|
56
160
|
return existingDevice;
|
|
57
161
|
}
|
|
162
|
+
// Step 3: Create new device (no duplicate exists)
|
|
58
163
|
const newDevice = transactionalEntityManager.getRepository(this.mfaDeviceRepository.target).create({
|
|
59
164
|
userId,
|
|
60
165
|
type: this.methodName,
|
|
61
166
|
...deviceData,
|
|
62
167
|
});
|
|
168
|
+
// Step 4: Save device (unique constraint provides final safety net)
|
|
63
169
|
const saved = await transactionalEntityManager.getRepository(this.mfaDeviceRepository.target).save(newDevice);
|
|
64
170
|
this.logger?.log?.(`Created new MFA device: type='${this.methodName}', userId=${userId}, deviceId=${saved.id}`);
|
|
65
171
|
return saved;
|
|
66
172
|
});
|
|
173
|
+
// ============================================================================
|
|
174
|
+
// Audit: Record MFA device added
|
|
175
|
+
// ============================================================================
|
|
67
176
|
if (this.auditService && this.clientInfoService) {
|
|
68
177
|
try {
|
|
69
178
|
await this.auditService.recordEvent({
|
|
@@ -71,6 +180,7 @@ class BaseMFAProviderService {
|
|
|
71
180
|
eventType: auth_audit_event_type_enum_1.AuthAuditEventType.MFA_DEVICE_ADDED,
|
|
72
181
|
eventStatus: 'SUCCESS',
|
|
73
182
|
metadata: {
|
|
183
|
+
// Client info automatically included from context
|
|
74
184
|
mfaMethod: this.methodName,
|
|
75
185
|
deviceId: device.id,
|
|
76
186
|
deviceName: device.name,
|
|
@@ -79,6 +189,7 @@ class BaseMFAProviderService {
|
|
|
79
189
|
});
|
|
80
190
|
}
|
|
81
191
|
catch (auditError) {
|
|
192
|
+
// Non-blocking: Log but continue
|
|
82
193
|
const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
|
|
83
194
|
this.logger?.error?.(`Failed to record MFA_DEVICE_ADDED audit event: ${errorMessage}`, {
|
|
84
195
|
error: auditError,
|
|
@@ -89,6 +200,14 @@ class BaseMFAProviderService {
|
|
|
89
200
|
}
|
|
90
201
|
return device;
|
|
91
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Find active device for user by method
|
|
205
|
+
*
|
|
206
|
+
* @param userId - Internal user ID
|
|
207
|
+
* @param deviceId - Optional device ID
|
|
208
|
+
* @returns Device if found, null otherwise
|
|
209
|
+
* @protected
|
|
210
|
+
*/
|
|
92
211
|
async findDevice(userId, deviceId) {
|
|
93
212
|
const where = {
|
|
94
213
|
userId,
|
|
@@ -104,6 +223,12 @@ class BaseMFAProviderService {
|
|
|
104
223
|
});
|
|
105
224
|
return device ? device : null;
|
|
106
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Update device usage statistics
|
|
228
|
+
*
|
|
229
|
+
* @param deviceId - Device ID
|
|
230
|
+
* @protected
|
|
231
|
+
*/
|
|
107
232
|
async updateDeviceUsage(deviceId) {
|
|
108
233
|
const device = await this.mfaDeviceRepository.findOne({ where: { id: deviceId } });
|
|
109
234
|
if (device) {
|
|
@@ -112,7 +237,20 @@ class BaseMFAProviderService {
|
|
|
112
237
|
await this.mfaDeviceRepository.save(device);
|
|
113
238
|
}
|
|
114
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Enable MFA for user
|
|
242
|
+
*
|
|
243
|
+
* Sets mfaEnabled flag and updates mfaMethods array.
|
|
244
|
+
* Called automatically when first device is registered.
|
|
245
|
+
* Automatically clears MFA_SETUP_REQUIRED challenges if they exist.
|
|
246
|
+
*
|
|
247
|
+
* @param user - User to enable MFA for
|
|
248
|
+
* @protected
|
|
249
|
+
*/
|
|
115
250
|
async enableMFAForUser(user) {
|
|
251
|
+
// Reload user from database to ensure we have the latest state
|
|
252
|
+
// This prevents overwriting fields like isPhoneVerified that may have been updated
|
|
253
|
+
// between when the user object was loaded and when MFA is enabled
|
|
116
254
|
const userId = user.id;
|
|
117
255
|
const userEntity = await this.userRepository.findOne({ where: { id: userId } });
|
|
118
256
|
if (!userEntity) {
|
|
@@ -124,14 +262,30 @@ class BaseMFAProviderService {
|
|
|
124
262
|
userEntityRecord.mfaEnabled = true;
|
|
125
263
|
userEntityRecord.mfaEnforcedAt = new Date();
|
|
126
264
|
}
|
|
265
|
+
// Update mfaMethods array
|
|
127
266
|
const devices = await this.getUserDevices(userId);
|
|
128
267
|
const methods = [...new Set(devices.filter((d) => d.isActive).map((d) => d.type))];
|
|
129
268
|
userEntityRecord.mfaMethods = methods;
|
|
269
|
+
// Set preferred method if not set
|
|
130
270
|
if (!userEntityRecord.preferredMfaMethod && methods.length > 0) {
|
|
131
271
|
const primaryDevice = devices.find((d) => d.isPrimary && d.isActive);
|
|
132
272
|
userEntityRecord.preferredMfaMethod = primaryDevice?.type || methods[0];
|
|
133
273
|
}
|
|
134
274
|
await this.userRepository.save(userEntity);
|
|
275
|
+
// If this is the first MFA device being set up, clear any MFA_SETUP_REQUIRED challenges
|
|
276
|
+
// This prevents phantom challenges when user sets up MFA while logged in
|
|
277
|
+
// if (isFirstDevice && this.challengeService) {
|
|
278
|
+
// try {
|
|
279
|
+
// await this.challengeService.deleteUserChallengeSessions(userId, AuthChallenge.MFA_SETUP_REQUIRED);
|
|
280
|
+
// this.logger?.log?.(`Cleared MFA_SETUP_REQUIRED challenge for user ${user.sub} after MFA setup`);
|
|
281
|
+
// } catch (error) {
|
|
282
|
+
// // Log but don't fail MFA setup if challenge clearing fails
|
|
283
|
+
// this.logger?.warn?.(`Failed to clear MFA_SETUP_REQUIRED challenge after MFA setup: ${error}`);
|
|
284
|
+
// }
|
|
285
|
+
// }
|
|
286
|
+
// ============================================================================
|
|
287
|
+
// Audit: Record MFA enabled (only for first device)
|
|
288
|
+
// ============================================================================
|
|
135
289
|
if (isFirstDevice && this.auditService && this.clientInfoService) {
|
|
136
290
|
try {
|
|
137
291
|
await this.auditService?.recordEvent({
|
|
@@ -139,12 +293,14 @@ class BaseMFAProviderService {
|
|
|
139
293
|
eventType: auth_audit_event_type_enum_1.AuthAuditEventType.MFA_ENABLED,
|
|
140
294
|
eventStatus: 'SUCCESS',
|
|
141
295
|
metadata: {
|
|
296
|
+
// Client info automatically included from context
|
|
142
297
|
mfaMethod: this.methodName,
|
|
143
298
|
mfaMethods: methods,
|
|
144
299
|
},
|
|
145
300
|
});
|
|
146
301
|
}
|
|
147
302
|
catch (auditError) {
|
|
303
|
+
// Non-blocking: Log but continue
|
|
148
304
|
const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
|
|
149
305
|
this.logger?.error?.(`Failed to record MFA_ENABLED audit event: ${errorMessage}`, {
|
|
150
306
|
error: auditError,
|
|
@@ -154,24 +310,43 @@ class BaseMFAProviderService {
|
|
|
154
310
|
}
|
|
155
311
|
}
|
|
156
312
|
}
|
|
313
|
+
// ============================================================================
|
|
314
|
+
// Backup Codes (Common Logic)
|
|
315
|
+
// ============================================================================
|
|
316
|
+
/**
|
|
317
|
+
* Generate backup codes for user
|
|
318
|
+
*
|
|
319
|
+
* Creates single-use recovery codes that can be used when MFA devices are unavailable.
|
|
320
|
+
* Exposed as optional method in IMFAProviderService interface.
|
|
321
|
+
*
|
|
322
|
+
* @param user - User to generate codes for
|
|
323
|
+
* @returns Generated backup codes (plain text - shown only once)
|
|
324
|
+
*/
|
|
157
325
|
async generateBackupCodes(user) {
|
|
158
326
|
const userEntity = user;
|
|
159
327
|
const config = this.config.mfa?.backup;
|
|
160
328
|
const codeCount = config?.codeCount || 10;
|
|
161
329
|
const codeLength = config?.codeLength || 8;
|
|
330
|
+
// Generate random codes
|
|
162
331
|
const codes = [];
|
|
163
332
|
for (let i = 0; i < codeCount; i++) {
|
|
164
333
|
const code = this.generateRandomCode(codeLength);
|
|
165
334
|
codes.push(code);
|
|
166
335
|
}
|
|
336
|
+
// Check if password service is available
|
|
167
337
|
if (!this.passwordService || typeof this.passwordService.hashPassword !== 'function') {
|
|
168
338
|
throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VALIDATION_FAILED, 'Password service is not available');
|
|
169
339
|
}
|
|
340
|
+
// Hash codes for storage
|
|
170
341
|
const passwordService = this.passwordService;
|
|
171
342
|
const hashedCodes = await Promise.all(codes.map((code) => passwordService.hashPassword(code)));
|
|
343
|
+
// Store hashed codes
|
|
172
344
|
userEntity.backupCodes = hashedCodes;
|
|
173
345
|
await this.userRepository.save(userEntity);
|
|
174
346
|
this.logger?.log?.(`Generated ${codeCount} backup codes for user: ${user.sub}`);
|
|
347
|
+
// ============================================================================
|
|
348
|
+
// Audit: Record backup codes generation
|
|
349
|
+
// ============================================================================
|
|
175
350
|
if (this.auditService && this.clientInfoService) {
|
|
176
351
|
try {
|
|
177
352
|
await this.auditService?.recordEvent({
|
|
@@ -179,12 +354,14 @@ class BaseMFAProviderService {
|
|
|
179
354
|
eventType: auth_audit_event_type_enum_1.AuthAuditEventType.MFA_BACKUP_CODES_GENERATED,
|
|
180
355
|
eventStatus: 'INFO',
|
|
181
356
|
metadata: {
|
|
357
|
+
// Client info automatically included from context
|
|
182
358
|
codeCount,
|
|
183
359
|
codeLength,
|
|
184
360
|
},
|
|
185
361
|
});
|
|
186
362
|
}
|
|
187
363
|
catch (auditError) {
|
|
364
|
+
// Non-blocking: Log but continue
|
|
188
365
|
const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
|
|
189
366
|
this.logger?.error?.(`Failed to record MFA_BACKUP_CODES_GENERATED audit event: ${errorMessage}`, {
|
|
190
367
|
error: auditError,
|
|
@@ -194,6 +371,16 @@ class BaseMFAProviderService {
|
|
|
194
371
|
}
|
|
195
372
|
return codes;
|
|
196
373
|
}
|
|
374
|
+
/**
|
|
375
|
+
* Verify backup code
|
|
376
|
+
*
|
|
377
|
+
* Validates backup code and removes it after use (single-use).
|
|
378
|
+
*
|
|
379
|
+
* @param user - User being authenticated
|
|
380
|
+
* @param code - Backup code to verify
|
|
381
|
+
* @returns True if code is valid
|
|
382
|
+
* @protected
|
|
383
|
+
*/
|
|
197
384
|
async verifyBackupCode(user, code) {
|
|
198
385
|
const userEntity = user;
|
|
199
386
|
const backupCodes = userEntity.backupCodes;
|
|
@@ -201,19 +388,25 @@ class BaseMFAProviderService {
|
|
|
201
388
|
this.logger?.warn?.('No backup codes available');
|
|
202
389
|
return false;
|
|
203
390
|
}
|
|
391
|
+
// Check if password service is available
|
|
204
392
|
if (!this.passwordService ||
|
|
205
393
|
typeof this.passwordService.verifyPassword !== 'function') {
|
|
206
394
|
this.logger?.warn?.('Backup code verification attempted but password service is not available');
|
|
207
395
|
return false;
|
|
208
396
|
}
|
|
397
|
+
// Check code against all stored hashed codes
|
|
209
398
|
const passwordService = this.passwordService;
|
|
210
399
|
for (let i = 0; i < backupCodes.length; i++) {
|
|
211
400
|
const isValid = await passwordService.verifyPassword(code, backupCodes[i]);
|
|
212
401
|
if (isValid) {
|
|
402
|
+
// Remove used code
|
|
213
403
|
backupCodes.splice(i, 1);
|
|
214
404
|
userEntity.backupCodes = backupCodes;
|
|
215
405
|
await this.userRepository.save(userEntity);
|
|
216
406
|
this.logger?.log?.(`Backup code verified and removed for user: ${user.sub}`);
|
|
407
|
+
// ============================================================================
|
|
408
|
+
// Audit: Record backup code usage
|
|
409
|
+
// ============================================================================
|
|
217
410
|
if (this.auditService && this.clientInfoService) {
|
|
218
411
|
try {
|
|
219
412
|
await this.auditService?.recordEvent({
|
|
@@ -222,11 +415,13 @@ class BaseMFAProviderService {
|
|
|
222
415
|
eventStatus: 'SUCCESS',
|
|
223
416
|
authMethod: 'backup',
|
|
224
417
|
metadata: {
|
|
418
|
+
// Client info automatically included from context
|
|
225
419
|
remainingCodes: backupCodes.length,
|
|
226
420
|
},
|
|
227
421
|
});
|
|
228
422
|
}
|
|
229
423
|
catch (auditError) {
|
|
424
|
+
// Non-blocking: Log but continue
|
|
230
425
|
const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
|
|
231
426
|
this.logger?.error?.(`Failed to record MFA_BACKUP_CODE_USED audit event: ${errorMessage}`, {
|
|
232
427
|
error: auditError,
|
|
@@ -240,8 +435,18 @@ class BaseMFAProviderService {
|
|
|
240
435
|
this.logger?.warn?.('Backup code verification failed');
|
|
241
436
|
return false;
|
|
242
437
|
}
|
|
438
|
+
// ============================================================================
|
|
439
|
+
// Helper Methods
|
|
440
|
+
// ============================================================================
|
|
441
|
+
/**
|
|
442
|
+
* Generate random alphanumeric code
|
|
443
|
+
*
|
|
444
|
+
* @param length - Code length
|
|
445
|
+
* @returns Random code
|
|
446
|
+
* @protected
|
|
447
|
+
*/
|
|
243
448
|
generateRandomCode(length) {
|
|
244
|
-
const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
|
|
449
|
+
const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // Exclude ambiguous characters
|
|
245
450
|
let code = '';
|
|
246
451
|
const bytes = (0, crypto_1.randomBytes)(length);
|
|
247
452
|
for (let i = 0; i < length; i++) {
|
|
@@ -249,12 +454,35 @@ class BaseMFAProviderService {
|
|
|
249
454
|
}
|
|
250
455
|
return code;
|
|
251
456
|
}
|
|
457
|
+
/**
|
|
458
|
+
* Mask phone number for display
|
|
459
|
+
*
|
|
460
|
+
* @param phone - Phone number
|
|
461
|
+
* @returns Masked phone number
|
|
462
|
+
* @protected
|
|
463
|
+
*/
|
|
252
464
|
maskPhone(phone) {
|
|
253
465
|
const digits = phone.replace(/\D/g, '');
|
|
254
466
|
if (digits.length < 4)
|
|
255
467
|
return phone;
|
|
256
468
|
return `***-***-${digits.slice(-4)}`;
|
|
257
469
|
}
|
|
470
|
+
/**
|
|
471
|
+
* Mask email address for display
|
|
472
|
+
*
|
|
473
|
+
* Masks the local part of the email while showing the domain.
|
|
474
|
+
* Example: user@example.com → u***r@example.com
|
|
475
|
+
*
|
|
476
|
+
* @param email - Email address
|
|
477
|
+
* @returns Masked email address
|
|
478
|
+
* @protected
|
|
479
|
+
*
|
|
480
|
+
* @example
|
|
481
|
+
* ```typescript
|
|
482
|
+
* const masked = this.maskEmail('user@example.com');
|
|
483
|
+
* // Returns: 'u***r@example.com'
|
|
484
|
+
* ```
|
|
485
|
+
*/
|
|
258
486
|
maskEmail(email) {
|
|
259
487
|
const [localPart, domain] = email.split('@');
|
|
260
488
|
if (!localPart || !domain)
|
|
@@ -264,8 +492,30 @@ class BaseMFAProviderService {
|
|
|
264
492
|
}
|
|
265
493
|
return `${localPart[0]}***${localPart[localPart.length - 1]}@${domain}`;
|
|
266
494
|
}
|
|
495
|
+
/**
|
|
496
|
+
* Check if MFA is required for a user
|
|
497
|
+
*
|
|
498
|
+
* Determines MFA requirement based on:
|
|
499
|
+
* - User-level MFA exemption (admin override)
|
|
500
|
+
* - Global enforcement policy (OPTIONAL, REQUIRED, ADAPTIVE)
|
|
501
|
+
* - Grace period for REQUIRED enforcement
|
|
502
|
+
* - User's MFA enrollment date
|
|
503
|
+
*
|
|
504
|
+
* ADAPTIVE enforcement currently behaves like REQUIRED (placeholder for future risk-based logic)
|
|
505
|
+
*
|
|
506
|
+
* @param user - User to check
|
|
507
|
+
* @returns True if MFA is required
|
|
508
|
+
* @protected
|
|
509
|
+
*/
|
|
267
510
|
async isMFARequired(user) {
|
|
511
|
+
// ============================================================================
|
|
512
|
+
// SECURITY: Check user-level MFA exemption FIRST
|
|
513
|
+
// ============================================================================
|
|
514
|
+
// Exemption allows bypassing MFA requirements
|
|
515
|
+
// This is checked early to ensure exempt users can always login
|
|
516
|
+
// Handle different database representations (boolean true, MySQL tinyint 1, etc.)
|
|
268
517
|
const mfaExempt = user.mfaExempt;
|
|
518
|
+
// Check for boolean true (handle numeric 1 case at runtime if needed)
|
|
269
519
|
if (mfaExempt === true || mfaExempt === 1) {
|
|
270
520
|
return false;
|
|
271
521
|
}
|
|
@@ -278,16 +528,20 @@ class BaseMFAProviderService {
|
|
|
278
528
|
return false;
|
|
279
529
|
}
|
|
280
530
|
if (enforcement === 'REQUIRED' || enforcement === 'ADAPTIVE') {
|
|
531
|
+
// Check grace period
|
|
281
532
|
const gracePeriod = mfaConfig.gracePeriod || 7;
|
|
282
533
|
const gracePeriodEnd = new Date();
|
|
283
534
|
gracePeriodEnd.setDate(gracePeriodEnd.getDate() - gracePeriod);
|
|
535
|
+
// If user has enrolled in MFA, check if they're within grace period
|
|
284
536
|
const userWithDates = user;
|
|
285
537
|
if (userWithDates.mfaEnforcedAt) {
|
|
286
538
|
return userWithDates.mfaEnforcedAt <= gracePeriodEnd;
|
|
287
539
|
}
|
|
540
|
+
// User hasn't enrolled - check account creation date
|
|
288
541
|
if (userWithDates.createdAt) {
|
|
289
542
|
return userWithDates.createdAt <= gracePeriodEnd;
|
|
290
543
|
}
|
|
544
|
+
// No dates available - require MFA immediately
|
|
291
545
|
return true;
|
|
292
546
|
}
|
|
293
547
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mfa-base.service.js","sourceRoot":"","sources":["../../src/services/mfa-base.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mfa-base.service.js","sourceRoot":"","sources":["../../src/services/mfa-base.service.ts"],"names":[],"mappings":"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"}
|