@nauth-toolkit/core 0.1.0
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 +10 -0
- package/dist/adapters/database-columns.d.ts.map +1 -0
- package/dist/adapters/database-columns.js +85 -0
- package/dist/adapters/database-columns.js.map +1 -0
- package/dist/adapters/express.adapter.d.ts +41 -0
- package/dist/adapters/express.adapter.d.ts.map +1 -0
- package/dist/adapters/express.adapter.js +188 -0
- package/dist/adapters/express.adapter.js.map +1 -0
- package/dist/adapters/fastify.adapter.d.ts +33 -0
- package/dist/adapters/fastify.adapter.d.ts.map +1 -0
- package/dist/adapters/fastify.adapter.js +223 -0
- package/dist/adapters/fastify.adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +25 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/storage.factory.d.ts +7 -0
- package/dist/adapters/storage.factory.d.ts.map +1 -0
- package/dist/adapters/storage.factory.js +24 -0
- package/dist/adapters/storage.factory.js.map +1 -0
- package/dist/bootstrap.d.ts +41 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +113 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/dto/auth-challenge.dto.d.ts +19 -0
- package/dist/dto/auth-challenge.dto.d.ts.map +1 -0
- package/dist/dto/auth-challenge.dto.js +86 -0
- package/dist/dto/auth-challenge.dto.js.map +1 -0
- package/dist/dto/auth-response.dto.d.ts +31 -0
- package/dist/dto/auth-response.dto.d.ts.map +1 -0
- package/dist/dto/auth-response.dto.js +18 -0
- package/dist/dto/auth-response.dto.js.map +1 -0
- package/dist/dto/challenge-response.dto.d.ts +36 -0
- package/dist/dto/challenge-response.dto.d.ts.map +1 -0
- package/dist/dto/challenge-response.dto.js +3 -0
- package/dist/dto/challenge-response.dto.js.map +1 -0
- package/dist/dto/change-password-request.dto.d.ts +5 -0
- package/dist/dto/change-password-request.dto.d.ts.map +1 -0
- package/dist/dto/change-password-request.dto.js +30 -0
- package/dist/dto/change-password-request.dto.js.map +1 -0
- package/dist/dto/change-password-response.dto.d.ts +4 -0
- package/dist/dto/change-password-response.dto.d.ts.map +1 -0
- package/dist/dto/change-password-response.dto.js +8 -0
- package/dist/dto/change-password-response.dto.js.map +1 -0
- package/dist/dto/change-password.dto.d.ts +5 -0
- package/dist/dto/change-password.dto.d.ts.map +1 -0
- package/dist/dto/change-password.dto.js +29 -0
- package/dist/dto/change-password.dto.js.map +1 -0
- package/dist/dto/error-response.dto.d.ts +9 -0
- package/dist/dto/error-response.dto.d.ts.map +1 -0
- package/dist/dto/error-response.dto.js +59 -0
- package/dist/dto/error-response.dto.js.map +1 -0
- package/dist/dto/get-available-methods.dto.d.ts +7 -0
- package/dist/dto/get-available-methods.dto.d.ts.map +1 -0
- package/dist/dto/get-available-methods.dto.js +33 -0
- package/dist/dto/get-available-methods.dto.js.map +1 -0
- package/dist/dto/get-challenge-data-response.dto.d.ts +4 -0
- package/dist/dto/get-challenge-data-response.dto.d.ts.map +1 -0
- package/dist/dto/get-challenge-data-response.dto.js +8 -0
- package/dist/dto/get-challenge-data-response.dto.js.map +1 -0
- package/dist/dto/get-challenge-data.dto.d.ts +8 -0
- package/dist/dto/get-challenge-data.dto.d.ts.map +1 -0
- package/dist/dto/get-challenge-data.dto.js +40 -0
- package/dist/dto/get-challenge-data.dto.js.map +1 -0
- package/dist/dto/get-client-info.dto.d.ts +17 -0
- package/dist/dto/get-client-info.dto.d.ts.map +1 -0
- package/dist/dto/get-client-info.dto.js +20 -0
- package/dist/dto/get-client-info.dto.js.map +1 -0
- package/dist/dto/get-device-token-response.dto.d.ts +4 -0
- package/dist/dto/get-device-token-response.dto.d.ts.map +1 -0
- package/dist/dto/get-device-token-response.dto.js +8 -0
- package/dist/dto/get-device-token-response.dto.js.map +1 -0
- package/dist/dto/get-events-by-type.dto.d.ts +17 -0
- package/dist/dto/get-events-by-type.dto.d.ts.map +1 -0
- package/dist/dto/get-events-by-type.dto.js +20 -0
- package/dist/dto/get-events-by-type.dto.js.map +1 -0
- package/dist/dto/get-ip-address-response.dto.d.ts +4 -0
- package/dist/dto/get-ip-address-response.dto.d.ts.map +1 -0
- package/dist/dto/get-ip-address-response.dto.js +8 -0
- package/dist/dto/get-ip-address-response.dto.js.map +1 -0
- package/dist/dto/get-mfa-status.dto.d.ts +16 -0
- package/dist/dto/get-mfa-status.dto.d.ts.map +1 -0
- package/dist/dto/get-mfa-status.dto.js +41 -0
- package/dist/dto/get-mfa-status.dto.js.map +1 -0
- package/dist/dto/get-risk-assessment-history.dto.d.ts +9 -0
- package/dist/dto/get-risk-assessment-history.dto.d.ts.map +1 -0
- package/dist/dto/get-risk-assessment-history.dto.js +13 -0
- package/dist/dto/get-risk-assessment-history.dto.js.map +1 -0
- package/dist/dto/get-session-id-response.dto.d.ts +4 -0
- package/dist/dto/get-session-id-response.dto.d.ts.map +1 -0
- package/dist/dto/get-session-id-response.dto.js +8 -0
- package/dist/dto/get-session-id-response.dto.js.map +1 -0
- package/dist/dto/get-setup-data-response.dto.d.ts +4 -0
- package/dist/dto/get-setup-data-response.dto.d.ts.map +1 -0
- package/dist/dto/get-setup-data-response.dto.js +8 -0
- package/dist/dto/get-setup-data-response.dto.js.map +1 -0
- package/dist/dto/get-setup-data.dto.d.ts +7 -0
- package/dist/dto/get-setup-data.dto.d.ts.map +1 -0
- package/dist/dto/get-setup-data.dto.js +43 -0
- package/dist/dto/get-setup-data.dto.js.map +1 -0
- package/dist/dto/get-suspicious-activity.dto.d.ts +9 -0
- package/dist/dto/get-suspicious-activity.dto.d.ts.map +1 -0
- package/dist/dto/get-suspicious-activity.dto.js +13 -0
- package/dist/dto/get-suspicious-activity.dto.js.map +1 -0
- package/dist/dto/get-user-agent-response.dto.d.ts +4 -0
- package/dist/dto/get-user-agent-response.dto.d.ts.map +1 -0
- package/dist/dto/get-user-agent-response.dto.js +8 -0
- package/dist/dto/get-user-agent-response.dto.js.map +1 -0
- package/dist/dto/get-user-auth-history.dto.d.ts +20 -0
- package/dist/dto/get-user-auth-history.dto.d.ts.map +1 -0
- package/dist/dto/get-user-auth-history.dto.js +22 -0
- package/dist/dto/get-user-auth-history.dto.js.map +1 -0
- package/dist/dto/get-user-by-email.dto.d.ts +5 -0
- package/dist/dto/get-user-by-email.dto.d.ts.map +1 -0
- package/dist/dto/get-user-by-email.dto.js +36 -0
- package/dist/dto/get-user-by-email.dto.js.map +1 -0
- package/dist/dto/get-user-by-id.dto.d.ts +4 -0
- package/dist/dto/get-user-by-id.dto.d.ts.map +1 -0
- package/dist/dto/get-user-by-id.dto.js +29 -0
- package/dist/dto/get-user-by-id.dto.js.map +1 -0
- package/dist/dto/get-user-devices.dto.d.ts +8 -0
- package/dist/dto/get-user-devices.dto.d.ts.map +1 -0
- package/dist/dto/get-user-devices.dto.js +33 -0
- package/dist/dto/get-user-devices.dto.js.map +1 -0
- package/dist/dto/get-user-response.dto.d.ts +2 -0
- package/dist/dto/get-user-response.dto.d.ts.map +1 -0
- package/dist/dto/get-user-response.dto.js +6 -0
- package/dist/dto/get-user-response.dto.js.map +1 -0
- package/dist/dto/has-provider.dto.d.ts +7 -0
- package/dist/dto/has-provider.dto.d.ts.map +1 -0
- package/dist/dto/has-provider.dto.js +38 -0
- package/dist/dto/has-provider.dto.js.map +1 -0
- package/dist/dto/index.d.ts +51 -0
- package/dist/dto/index.d.ts.map +1 -0
- package/dist/dto/index.js +67 -0
- package/dist/dto/index.js.map +1 -0
- package/dist/dto/is-trusted-device-response.dto.d.ts +4 -0
- package/dist/dto/is-trusted-device-response.dto.d.ts.map +1 -0
- package/dist/dto/is-trusted-device-response.dto.js +8 -0
- package/dist/dto/is-trusted-device-response.dto.js.map +1 -0
- package/dist/dto/list-providers-response.dto.d.ts +4 -0
- package/dist/dto/list-providers-response.dto.d.ts.map +1 -0
- package/dist/dto/list-providers-response.dto.js +8 -0
- package/dist/dto/list-providers-response.dto.js.map +1 -0
- package/dist/dto/login.dto.d.ts +7 -0
- package/dist/dto/login.dto.d.ts.map +1 -0
- package/dist/dto/login.dto.js +68 -0
- package/dist/dto/login.dto.js.map +1 -0
- package/dist/dto/logout-all-response.dto.d.ts +4 -0
- package/dist/dto/logout-all-response.dto.d.ts.map +1 -0
- package/dist/dto/logout-all-response.dto.js +8 -0
- package/dist/dto/logout-all-response.dto.js.map +1 -0
- package/dist/dto/logout-all.dto.d.ts +5 -0
- package/dist/dto/logout-all.dto.d.ts.map +1 -0
- package/dist/dto/logout-all.dto.js +42 -0
- package/dist/dto/logout-all.dto.js.map +1 -0
- package/dist/dto/logout-response.dto.d.ts +4 -0
- package/dist/dto/logout-response.dto.d.ts.map +1 -0
- package/dist/dto/logout-response.dto.js +8 -0
- package/dist/dto/logout-response.dto.js.map +1 -0
- package/dist/dto/logout.dto.d.ts +5 -0
- package/dist/dto/logout.dto.d.ts.map +1 -0
- package/dist/dto/logout.dto.js +36 -0
- package/dist/dto/logout.dto.js.map +1 -0
- package/dist/dto/refresh-token.dto.d.ts +4 -0
- package/dist/dto/refresh-token.dto.d.ts.map +1 -0
- package/dist/dto/refresh-token.dto.js +24 -0
- package/dist/dto/refresh-token.dto.js.map +1 -0
- package/dist/dto/remove-devices.dto.d.ts +9 -0
- package/dist/dto/remove-devices.dto.d.ts.map +1 -0
- package/dist/dto/remove-devices.dto.js +50 -0
- package/dist/dto/remove-devices.dto.js.map +1 -0
- package/dist/dto/resend-code-response.dto.d.ts +4 -0
- package/dist/dto/resend-code-response.dto.d.ts.map +1 -0
- package/dist/dto/resend-code-response.dto.js +8 -0
- package/dist/dto/resend-code-response.dto.js.map +1 -0
- package/dist/dto/resend-code.dto.d.ts +4 -0
- package/dist/dto/resend-code.dto.d.ts.map +1 -0
- package/dist/dto/resend-code.dto.js +29 -0
- package/dist/dto/resend-code.dto.js.map +1 -0
- package/dist/dto/reset-password.dto.d.ts +8 -0
- package/dist/dto/reset-password.dto.d.ts.map +1 -0
- package/dist/dto/reset-password.dto.js +61 -0
- package/dist/dto/reset-password.dto.js.map +1 -0
- package/dist/dto/respond-challenge.dto.d.ts +33 -0
- package/dist/dto/respond-challenge.dto.d.ts.map +1 -0
- package/dist/dto/respond-challenge.dto.js +131 -0
- package/dist/dto/respond-challenge.dto.js.map +1 -0
- package/dist/dto/set-mfa-exemption.dto.d.ts +12 -0
- package/dist/dto/set-mfa-exemption.dto.d.ts.map +1 -0
- package/dist/dto/set-mfa-exemption.dto.js +66 -0
- package/dist/dto/set-mfa-exemption.dto.js.map +1 -0
- package/dist/dto/set-must-change-password-response.dto.d.ts +4 -0
- package/dist/dto/set-must-change-password-response.dto.d.ts.map +1 -0
- package/dist/dto/set-must-change-password-response.dto.js +8 -0
- package/dist/dto/set-must-change-password-response.dto.js.map +1 -0
- package/dist/dto/set-must-change-password.dto.d.ts +4 -0
- package/dist/dto/set-must-change-password.dto.d.ts.map +1 -0
- package/dist/dto/set-must-change-password.dto.js +29 -0
- package/dist/dto/set-must-change-password.dto.js.map +1 -0
- package/dist/dto/set-preferred-method.dto.d.ts +8 -0
- package/dist/dto/set-preferred-method.dto.d.ts.map +1 -0
- package/dist/dto/set-preferred-method.dto.js +49 -0
- package/dist/dto/set-preferred-method.dto.js.map +1 -0
- package/dist/dto/setup-mfa.dto.d.ts +9 -0
- package/dist/dto/setup-mfa.dto.d.ts.map +1 -0
- package/dist/dto/setup-mfa.dto.js +55 -0
- package/dist/dto/setup-mfa.dto.js.map +1 -0
- package/dist/dto/signup.dto.d.ts +10 -0
- package/dist/dto/signup.dto.d.ts.map +1 -0
- package/dist/dto/signup.dto.js +109 -0
- package/dist/dto/signup.dto.js.map +1 -0
- package/dist/dto/social-auth.dto.d.ts +54 -0
- package/dist/dto/social-auth.dto.d.ts.map +1 -0
- package/dist/dto/social-auth.dto.js +232 -0
- package/dist/dto/social-auth.dto.js.map +1 -0
- package/dist/dto/trust-device-response.dto.d.ts +4 -0
- package/dist/dto/trust-device-response.dto.d.ts.map +1 -0
- package/dist/dto/trust-device-response.dto.js +8 -0
- package/dist/dto/trust-device-response.dto.js.map +1 -0
- package/dist/dto/trust-device.dto.d.ts +1 -0
- package/dist/dto/trust-device.dto.d.ts.map +1 -0
- package/dist/dto/trust-device.dto.js +2 -0
- package/dist/dto/trust-device.dto.js.map +1 -0
- package/dist/dto/update-user-attributes-request.dto.d.ts +5 -0
- package/dist/dto/update-user-attributes-request.dto.d.ts.map +1 -0
- package/dist/dto/update-user-attributes-request.dto.js +30 -0
- package/dist/dto/update-user-attributes-request.dto.js.map +1 -0
- package/dist/dto/user-response.dto.d.ts +20 -0
- package/dist/dto/user-response.dto.d.ts.map +1 -0
- package/dist/dto/user-response.dto.js +42 -0
- package/dist/dto/user-response.dto.js.map +1 -0
- package/dist/dto/user-update.dto.d.ts +12 -0
- package/dist/dto/user-update.dto.d.ts.map +1 -0
- package/dist/dto/user-update.dto.js +119 -0
- package/dist/dto/user-update.dto.js.map +1 -0
- package/dist/dto/verify-email.dto.d.ts +29 -0
- package/dist/dto/verify-email.dto.d.ts.map +1 -0
- package/dist/dto/verify-email.dto.js +161 -0
- package/dist/dto/verify-email.dto.js.map +1 -0
- package/dist/dto/verify-mfa-code.dto.d.ts +10 -0
- package/dist/dto/verify-mfa-code.dto.d.ts.map +1 -0
- package/dist/dto/verify-mfa-code.dto.js +56 -0
- package/dist/dto/verify-mfa-code.dto.js.map +1 -0
- package/dist/dto/verify-phone-by-sub.dto.d.ts +6 -0
- package/dist/dto/verify-phone-by-sub.dto.d.ts.map +1 -0
- package/dist/dto/verify-phone-by-sub.dto.js +49 -0
- package/dist/dto/verify-phone-by-sub.dto.js.map +1 -0
- package/dist/dto/verify-phone.dto.d.ts +24 -0
- package/dist/dto/verify-phone.dto.d.ts.map +1 -0
- package/dist/dto/verify-phone.dto.js +124 -0
- package/dist/dto/verify-phone.dto.js.map +1 -0
- package/dist/entities/auth-audit.entity.d.ts +31 -0
- package/dist/entities/auth-audit.entity.d.ts.map +1 -0
- package/dist/entities/auth-audit.entity.js +33 -0
- package/dist/entities/auth-audit.entity.js.map +1 -0
- package/dist/entities/challenge-session.entity.d.ts +17 -0
- package/dist/entities/challenge-session.entity.d.ts.map +1 -0
- package/dist/entities/challenge-session.entity.js +21 -0
- package/dist/entities/challenge-session.entity.js.map +1 -0
- package/dist/entities/index.d.ts +12 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +26 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/login-attempt.entity.d.ts +13 -0
- package/dist/entities/login-attempt.entity.d.ts.map +1 -0
- package/dist/entities/login-attempt.entity.js +17 -0
- package/dist/entities/login-attempt.entity.js.map +1 -0
- package/dist/entities/mfa-device.entity.d.ts +22 -0
- package/dist/entities/mfa-device.entity.d.ts.map +1 -0
- package/dist/entities/mfa-device.entity.js +25 -0
- package/dist/entities/mfa-device.entity.js.map +1 -0
- package/dist/entities/rate-limit.entity.d.ts +9 -0
- package/dist/entities/rate-limit.entity.d.ts.map +1 -0
- package/dist/entities/rate-limit.entity.js +13 -0
- package/dist/entities/rate-limit.entity.js.map +1 -0
- package/dist/entities/session.entity.d.ts +32 -0
- package/dist/entities/session.entity.d.ts.map +1 -0
- package/dist/entities/session.entity.js +36 -0
- package/dist/entities/session.entity.js.map +1 -0
- package/dist/entities/social-account.entity.d.ts +13 -0
- package/dist/entities/social-account.entity.d.ts.map +1 -0
- package/dist/entities/social-account.entity.js +17 -0
- package/dist/entities/social-account.entity.js.map +1 -0
- package/dist/entities/storage-lock.entity.d.ts +8 -0
- package/dist/entities/storage-lock.entity.d.ts.map +1 -0
- package/dist/entities/storage-lock.entity.js +12 -0
- package/dist/entities/storage-lock.entity.js.map +1 -0
- package/dist/entities/trusted-device.entity.d.ts +17 -0
- package/dist/entities/trusted-device.entity.d.ts.map +1 -0
- package/dist/entities/trusted-device.entity.js +21 -0
- package/dist/entities/trusted-device.entity.js.map +1 -0
- package/dist/entities/user.entity.d.ts +41 -0
- package/dist/entities/user.entity.d.ts.map +1 -0
- package/dist/entities/user.entity.js +45 -0
- package/dist/entities/user.entity.js.map +1 -0
- package/dist/entities/verification-token.entity.d.ts +19 -0
- package/dist/entities/verification-token.entity.d.ts.map +1 -0
- package/dist/entities/verification-token.entity.js +29 -0
- package/dist/entities/verification-token.entity.js.map +1 -0
- package/dist/enums/auth-audit-event-type.enum.d.ts +55 -0
- package/dist/enums/auth-audit-event-type.enum.d.ts.map +1 -0
- package/dist/enums/auth-audit-event-type.enum.js +59 -0
- package/dist/enums/auth-audit-event-type.enum.js.map +1 -0
- package/dist/enums/error-codes.enum.d.ts +53 -0
- package/dist/enums/error-codes.enum.d.ts.map +1 -0
- package/dist/enums/error-codes.enum.js +57 -0
- package/dist/enums/error-codes.enum.js.map +1 -0
- package/dist/enums/mfa-method.enum.d.ts +11 -0
- package/dist/enums/mfa-method.enum.d.ts.map +1 -0
- package/dist/enums/mfa-method.enum.js +18 -0
- package/dist/enums/mfa-method.enum.js.map +1 -0
- package/dist/enums/risk-factor.enum.d.ts +14 -0
- package/dist/enums/risk-factor.enum.d.ts.map +1 -0
- package/dist/enums/risk-factor.enum.js +18 -0
- package/dist/enums/risk-factor.enum.js.map +1 -0
- package/dist/exceptions/nauth.exception.d.ts +18 -0
- package/dist/exceptions/nauth.exception.d.ts.map +1 -0
- package/dist/exceptions/nauth.exception.js +64 -0
- package/dist/exceptions/nauth.exception.js.map +1 -0
- package/dist/handlers/auth.handler.d.ts +18 -0
- package/dist/handlers/auth.handler.d.ts.map +1 -0
- package/dist/handlers/auth.handler.js +173 -0
- package/dist/handlers/auth.handler.js.map +1 -0
- package/dist/handlers/client-info.handler.d.ts +12 -0
- package/dist/handlers/client-info.handler.d.ts.map +1 -0
- package/dist/handlers/client-info.handler.js +61 -0
- package/dist/handlers/client-info.handler.js.map +1 -0
- package/dist/handlers/csrf.handler.d.ts +13 -0
- package/dist/handlers/csrf.handler.d.ts.map +1 -0
- package/dist/handlers/csrf.handler.js +84 -0
- package/dist/handlers/csrf.handler.js.map +1 -0
- package/dist/handlers/token-delivery.handler.d.ts +12 -0
- package/dist/handlers/token-delivery.handler.d.ts.map +1 -0
- package/dist/handlers/token-delivery.handler.js +86 -0
- package/dist/handlers/token-delivery.handler.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/client-info.interface.d.ts +16 -0
- package/dist/interfaces/client-info.interface.d.ts.map +1 -0
- package/dist/interfaces/client-info.interface.js +3 -0
- package/dist/interfaces/client-info.interface.js.map +1 -0
- package/dist/interfaces/config.interface.d.ts +279 -0
- package/dist/interfaces/config.interface.d.ts.map +1 -0
- package/dist/interfaces/config.interface.js +3 -0
- package/dist/interfaces/config.interface.js.map +1 -0
- package/dist/interfaces/entities.interface.d.ts +169 -0
- package/dist/interfaces/entities.interface.d.ts.map +1 -0
- package/dist/interfaces/entities.interface.js +3 -0
- package/dist/interfaces/entities.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +11 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +27 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/logger.interface.d.ts +43 -0
- package/dist/interfaces/logger.interface.d.ts.map +1 -0
- package/dist/interfaces/logger.interface.js +12 -0
- package/dist/interfaces/logger.interface.js.map +1 -0
- package/dist/interfaces/mfa-provider.interface.d.ts +12 -0
- package/dist/interfaces/mfa-provider.interface.d.ts.map +1 -0
- package/dist/interfaces/mfa-provider.interface.js +3 -0
- package/dist/interfaces/mfa-provider.interface.js.map +1 -0
- package/dist/interfaces/oauth.interface.d.ts +24 -0
- package/dist/interfaces/oauth.interface.d.ts.map +1 -0
- package/dist/interfaces/oauth.interface.js +3 -0
- package/dist/interfaces/oauth.interface.js.map +1 -0
- package/dist/interfaces/provider.interface.d.ts +12 -0
- package/dist/interfaces/provider.interface.d.ts.map +1 -0
- package/dist/interfaces/provider.interface.js +3 -0
- package/dist/interfaces/provider.interface.js.map +1 -0
- package/dist/interfaces/social-auth-provider.interface.d.ts +13 -0
- package/dist/interfaces/social-auth-provider.interface.d.ts.map +1 -0
- package/dist/interfaces/social-auth-provider.interface.js +3 -0
- package/dist/interfaces/social-auth-provider.interface.js.map +1 -0
- package/dist/interfaces/storage-adapter.interface.d.ts +39 -0
- package/dist/interfaces/storage-adapter.interface.d.ts.map +1 -0
- package/dist/interfaces/storage-adapter.interface.js +3 -0
- package/dist/interfaces/storage-adapter.interface.js.map +1 -0
- package/dist/interfaces/template.interface.d.ts +99 -0
- package/dist/interfaces/template.interface.d.ts.map +1 -0
- package/dist/interfaces/template.interface.js +15 -0
- package/dist/interfaces/template.interface.js.map +1 -0
- package/dist/interfaces/token-verifier.interface.d.ts +7 -0
- package/dist/interfaces/token-verifier.interface.d.ts.map +1 -0
- package/dist/interfaces/token-verifier.interface.js +3 -0
- package/dist/interfaces/token-verifier.interface.js.map +1 -0
- package/dist/internal.d.ts +20 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +53 -0
- package/dist/internal.js.map +1 -0
- package/dist/platform/interfaces.d.ts +56 -0
- package/dist/platform/interfaces.d.ts.map +1 -0
- package/dist/platform/interfaces.js +3 -0
- package/dist/platform/interfaces.js.map +1 -0
- package/dist/schemas/auth-config.schema.d.ts +3411 -0
- package/dist/schemas/auth-config.schema.d.ts.map +1 -0
- package/dist/schemas/auth-config.schema.js +428 -0
- package/dist/schemas/auth-config.schema.js.map +1 -0
- package/dist/services/adaptive-mfa-decision.service.d.ts +39 -0
- package/dist/services/adaptive-mfa-decision.service.d.ts.map +1 -0
- package/dist/services/adaptive-mfa-decision.service.js +223 -0
- package/dist/services/adaptive-mfa-decision.service.js.map +1 -0
- package/dist/services/auth-audit.service.d.ts +44 -0
- package/dist/services/auth-audit.service.d.ts.map +1 -0
- package/dist/services/auth-audit.service.js +241 -0
- package/dist/services/auth-audit.service.js.map +1 -0
- package/dist/services/auth-challenge-helper.service.d.ts +48 -0
- package/dist/services/auth-challenge-helper.service.d.ts.map +1 -0
- package/dist/services/auth-challenge-helper.service.js +425 -0
- package/dist/services/auth-challenge-helper.service.js.map +1 -0
- package/dist/services/auth-flow-context-builder.service.d.ts +31 -0
- package/dist/services/auth-flow-context-builder.service.d.ts.map +1 -0
- package/dist/services/auth-flow-context-builder.service.js +253 -0
- package/dist/services/auth-flow-context-builder.service.js.map +1 -0
- package/dist/services/auth-flow-rules.d.ts +18 -0
- package/dist/services/auth-flow-rules.d.ts.map +1 -0
- package/dist/services/auth-flow-rules.js +55 -0
- package/dist/services/auth-flow-rules.js.map +1 -0
- package/dist/services/auth-flow-state-definitions.d.ts +5 -0
- package/dist/services/auth-flow-state-definitions.d.ts.map +1 -0
- package/dist/services/auth-flow-state-definitions.js +87 -0
- package/dist/services/auth-flow-state-definitions.js.map +1 -0
- package/dist/services/auth-flow-state-machine.service.d.ts +17 -0
- package/dist/services/auth-flow-state-machine.service.d.ts.map +1 -0
- package/dist/services/auth-flow-state-machine.service.js +91 -0
- package/dist/services/auth-flow-state-machine.service.js.map +1 -0
- package/dist/services/auth-flow-state-machine.types.d.ts +55 -0
- package/dist/services/auth-flow-state-machine.types.d.ts.map +1 -0
- package/dist/services/auth-flow-state-machine.types.js +16 -0
- package/dist/services/auth-flow-state-machine.types.js.map +1 -0
- package/dist/services/auth.service.d.ts +87 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +2356 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/challenge.service.d.ts +32 -0
- package/dist/services/challenge.service.d.ts.map +1 -0
- package/dist/services/challenge.service.js +293 -0
- package/dist/services/challenge.service.js.map +1 -0
- package/dist/services/client-info.service.d.ts +20 -0
- package/dist/services/client-info.service.d.ts.map +1 -0
- package/dist/services/client-info.service.js +202 -0
- package/dist/services/client-info.service.js.map +1 -0
- package/dist/services/csrf.service.d.ts +13 -0
- package/dist/services/csrf.service.d.ts.map +1 -0
- package/dist/services/csrf.service.js +67 -0
- package/dist/services/csrf.service.js.map +1 -0
- package/dist/services/email-verification.service.d.ts +30 -0
- package/dist/services/email-verification.service.d.ts.map +1 -0
- package/dist/services/email-verification.service.js +373 -0
- package/dist/services/email-verification.service.js.map +1 -0
- package/dist/services/geo-location.service.d.ts +85 -0
- package/dist/services/geo-location.service.d.ts.map +1 -0
- package/dist/services/geo-location.service.js +338 -0
- package/dist/services/geo-location.service.js.map +1 -0
- package/dist/services/index.d.ts +14 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +30 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/jwt.service.d.ts +62 -0
- package/dist/services/jwt.service.d.ts.map +1 -0
- package/dist/services/jwt.service.js +261 -0
- package/dist/services/jwt.service.js.map +1 -0
- package/dist/services/mfa-base.service.d.ts +37 -0
- package/dist/services/mfa-base.service.d.ts.map +1 -0
- package/dist/services/mfa-base.service.js +297 -0
- package/dist/services/mfa-base.service.js.map +1 -0
- package/dist/services/mfa.service.d.ts +35 -0
- package/dist/services/mfa.service.d.ts.map +1 -0
- package/dist/services/mfa.service.js +449 -0
- package/dist/services/mfa.service.js.map +1 -0
- package/dist/services/password.service.d.ts +19 -0
- package/dist/services/password.service.d.ts.map +1 -0
- package/dist/services/password.service.js +150 -0
- package/dist/services/password.service.js.map +1 -0
- package/dist/services/phone-verification.service.d.ts +32 -0
- package/dist/services/phone-verification.service.d.ts.map +1 -0
- package/dist/services/phone-verification.service.js +474 -0
- package/dist/services/phone-verification.service.js.map +1 -0
- package/dist/services/risk-detection.service.d.ts +30 -0
- package/dist/services/risk-detection.service.d.ts.map +1 -0
- package/dist/services/risk-detection.service.js +518 -0
- package/dist/services/risk-detection.service.js.map +1 -0
- package/dist/services/risk-scoring.service.d.ts +12 -0
- package/dist/services/risk-scoring.service.d.ts.map +1 -0
- package/dist/services/risk-scoring.service.js +44 -0
- package/dist/services/risk-scoring.service.js.map +1 -0
- package/dist/services/session.service.d.ts +64 -0
- package/dist/services/session.service.d.ts.map +1 -0
- package/dist/services/session.service.js +455 -0
- package/dist/services/session.service.js.map +1 -0
- package/dist/services/social-auth-base.service.d.ts +57 -0
- package/dist/services/social-auth-base.service.d.ts.map +1 -0
- package/dist/services/social-auth-base.service.js +340 -0
- package/dist/services/social-auth-base.service.js.map +1 -0
- package/dist/services/social-auth.service.d.ts +31 -0
- package/dist/services/social-auth.service.d.ts.map +1 -0
- package/dist/services/social-auth.service.js +172 -0
- package/dist/services/social-auth.service.js.map +1 -0
- package/dist/services/social-provider-registry.service.d.ts +9 -0
- package/dist/services/social-provider-registry.service.d.ts.map +1 -0
- package/dist/services/social-provider-registry.service.js +30 -0
- package/dist/services/social-provider-registry.service.js.map +1 -0
- package/dist/services/trusted-device.service.d.ts +29 -0
- package/dist/services/trusted-device.service.d.ts.map +1 -0
- package/dist/services/trusted-device.service.js +190 -0
- package/dist/services/trusted-device.service.js.map +1 -0
- package/dist/storage/account-lockout-storage.service.d.ts +16 -0
- package/dist/storage/account-lockout-storage.service.d.ts.map +1 -0
- package/dist/storage/account-lockout-storage.service.js +50 -0
- package/dist/storage/account-lockout-storage.service.js.map +1 -0
- package/dist/storage/index.d.ts +4 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +20 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/memory-storage.adapter.d.ts +33 -0
- package/dist/storage/memory-storage.adapter.d.ts.map +1 -0
- package/dist/storage/memory-storage.adapter.js +195 -0
- package/dist/storage/memory-storage.adapter.js.map +1 -0
- package/dist/storage/rate-limit-storage.service.d.ts +11 -0
- package/dist/storage/rate-limit-storage.service.d.ts.map +1 -0
- package/dist/storage/rate-limit-storage.service.js +33 -0
- package/dist/storage/rate-limit-storage.service.js.map +1 -0
- package/dist/templates/html-template.engine.d.ts +16 -0
- package/dist/templates/html-template.engine.d.ts.map +1 -0
- package/dist/templates/html-template.engine.js +502 -0
- package/dist/templates/html-template.engine.js.map +1 -0
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +18 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/utils/common-passwords.d.ts +4 -0
- package/dist/utils/common-passwords.d.ts.map +1 -0
- package/dist/utils/common-passwords.js +108 -0
- package/dist/utils/common-passwords.js.map +1 -0
- package/dist/utils/context-storage.d.ts +13 -0
- package/dist/utils/context-storage.d.ts.map +1 -0
- package/dist/utils/context-storage.js +54 -0
- package/dist/utils/context-storage.js.map +1 -0
- package/dist/utils/cookie-names.util.d.ts +7 -0
- package/dist/utils/cookie-names.util.d.ts.map +1 -0
- package/dist/utils/cookie-names.util.js +30 -0
- package/dist/utils/cookie-names.util.js.map +1 -0
- package/dist/utils/cookies.util.d.ts +12 -0
- package/dist/utils/cookies.util.d.ts.map +1 -0
- package/dist/utils/cookies.util.js +48 -0
- package/dist/utils/cookies.util.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +24 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/ip-extractor.d.ts +12 -0
- package/dist/utils/ip-extractor.d.ts.map +1 -0
- package/dist/utils/ip-extractor.js +88 -0
- package/dist/utils/ip-extractor.js.map +1 -0
- package/dist/utils/nauth-logger.d.ts +20 -0
- package/dist/utils/nauth-logger.d.ts.map +1 -0
- package/dist/utils/nauth-logger.js +129 -0
- package/dist/utils/nauth-logger.js.map +1 -0
- package/dist/utils/pii-redactor.d.ts +16 -0
- package/dist/utils/pii-redactor.d.ts.map +1 -0
- package/dist/utils/pii-redactor.js +147 -0
- package/dist/utils/pii-redactor.js.map +1 -0
- package/dist/utils/setup/get-repositories.d.ts +16 -0
- package/dist/utils/setup/get-repositories.d.ts.map +1 -0
- package/dist/utils/setup/get-repositories.js +36 -0
- package/dist/utils/setup/get-repositories.js.map +1 -0
- package/dist/utils/setup/init-services.d.ts +41 -0
- package/dist/utils/setup/init-services.d.ts.map +1 -0
- package/dist/utils/setup/init-services.js +107 -0
- package/dist/utils/setup/init-services.js.map +1 -0
- package/dist/utils/setup/init-social.d.ts +13 -0
- package/dist/utils/setup/init-social.d.ts.map +1 -0
- package/dist/utils/setup/init-social.js +77 -0
- package/dist/utils/setup/init-social.js.map +1 -0
- package/dist/utils/setup/init-storage.d.ts +4 -0
- package/dist/utils/setup/init-storage.d.ts.map +1 -0
- package/dist/utils/setup/init-storage.js +79 -0
- package/dist/utils/setup/init-storage.js.map +1 -0
- package/dist/utils/setup/register-mfa.d.ts +5 -0
- package/dist/utils/setup/register-mfa.d.ts.map +1 -0
- package/dist/utils/setup/register-mfa.js +85 -0
- package/dist/utils/setup/register-mfa.js.map +1 -0
- package/dist/utils/setup/run-nauth-migrations.d.ts +5 -0
- package/dist/utils/setup/run-nauth-migrations.d.ts.map +1 -0
- package/dist/utils/setup/run-nauth-migrations.js +67 -0
- package/dist/utils/setup/run-nauth-migrations.js.map +1 -0
- package/dist/utils/token-delivery-policy.d.ts +6 -0
- package/dist/utils/token-delivery-policy.d.ts.map +1 -0
- package/dist/utils/token-delivery-policy.js +15 -0
- package/dist/utils/token-delivery-policy.js.map +1 -0
- package/dist/validators/template.validator.d.ts +7 -0
- package/dist/validators/template.validator.d.ts.map +1 -0
- package/dist/validators/template.validator.js +95 -0
- package/dist/validators/template.validator.js.map +1 -0
- package/jest.config.js +15 -0
- package/jest.setup.ts +6 -0
- package/package.json +73 -0
- package/src/adapters/database-columns.ts +165 -0
- package/src/adapters/express.adapter.ts +385 -0
- package/src/adapters/fastify.adapter.ts +416 -0
- package/src/adapters/index.ts +16 -0
- package/src/adapters/storage.factory.ts +143 -0
- package/src/bootstrap.ts +374 -0
- package/src/dto/auth-challenge.dto.ts +231 -0
- package/src/dto/auth-response.dto.ts +253 -0
- package/src/dto/challenge-response.dto.ts +234 -0
- package/src/dto/change-password-request.dto.ts +50 -0
- package/src/dto/change-password-response.dto.ts +29 -0
- package/src/dto/change-password.dto.ts +57 -0
- package/src/dto/error-response.dto.ts +136 -0
- package/src/dto/get-available-methods.dto.ts +55 -0
- package/src/dto/get-challenge-data-response.dto.ts +28 -0
- package/src/dto/get-challenge-data.dto.ts +69 -0
- package/src/dto/get-client-info.dto.ts +104 -0
- package/src/dto/get-device-token-response.dto.ts +25 -0
- package/src/dto/get-events-by-type.dto.ts +76 -0
- package/src/dto/get-ip-address-response.dto.ts +24 -0
- package/src/dto/get-mfa-status.dto.ts +94 -0
- package/src/dto/get-risk-assessment-history.dto.ts +39 -0
- package/src/dto/get-session-id-response.dto.ts +25 -0
- package/src/dto/get-setup-data-response.dto.ts +31 -0
- package/src/dto/get-setup-data.dto.ts +75 -0
- package/src/dto/get-suspicious-activity.dto.ts +42 -0
- package/src/dto/get-user-agent-response.dto.ts +23 -0
- package/src/dto/get-user-auth-history.dto.ts +95 -0
- package/src/dto/get-user-by-email.dto.ts +61 -0
- package/src/dto/get-user-by-id.dto.ts +46 -0
- package/src/dto/get-user-devices.dto.ts +53 -0
- package/src/dto/get-user-response.dto.ts +17 -0
- package/src/dto/has-provider.dto.ts +56 -0
- package/src/dto/index.ts +57 -0
- package/src/dto/is-trusted-device-response.dto.ts +34 -0
- package/src/dto/list-providers-response.dto.ts +23 -0
- package/src/dto/login.dto.ts +95 -0
- package/src/dto/logout-all-response.dto.ts +24 -0
- package/src/dto/logout-all.dto.ts +65 -0
- package/src/dto/logout-response.dto.ts +25 -0
- package/src/dto/logout.dto.ts +64 -0
- package/src/dto/refresh-token.dto.ts +36 -0
- package/src/dto/remove-devices.dto.ts +85 -0
- package/src/dto/resend-code-response.dto.ts +32 -0
- package/src/dto/resend-code.dto.ts +51 -0
- package/src/dto/reset-password.dto.ts +115 -0
- package/src/dto/respond-challenge.dto.ts +272 -0
- package/src/dto/set-mfa-exemption.dto.ts +112 -0
- package/src/dto/set-must-change-password-response.dto.ts +27 -0
- package/src/dto/set-must-change-password.dto.ts +46 -0
- package/src/dto/set-preferred-method.dto.ts +80 -0
- package/src/dto/setup-mfa.dto.ts +98 -0
- package/src/dto/signup.dto.ts +174 -0
- package/src/dto/social-auth.dto.ts +422 -0
- package/src/dto/trust-device-response.dto.ts +30 -0
- package/src/dto/trust-device.dto.ts +9 -0
- package/src/dto/update-user-attributes-request.dto.ts +51 -0
- package/src/dto/user-response.dto.ts +138 -0
- package/src/dto/user-update.dto.ts +222 -0
- package/src/dto/verify-email.dto.ts +313 -0
- package/src/dto/verify-mfa-code.dto.ts +103 -0
- package/src/dto/verify-phone-by-sub.dto.ts +78 -0
- package/src/dto/verify-phone.dto.ts +245 -0
- package/src/entities/auth-audit.entity.ts +232 -0
- package/src/entities/challenge-session.entity.ts +116 -0
- package/src/entities/index.ts +29 -0
- package/src/entities/login-attempt.entity.ts +64 -0
- package/src/entities/mfa-device.entity.ts +151 -0
- package/src/entities/rate-limit.entity.ts +44 -0
- package/src/entities/session.entity.ts +180 -0
- package/src/entities/social-account.entity.ts +96 -0
- package/src/entities/storage-lock.entity.ts +39 -0
- package/src/entities/trusted-device.entity.ts +112 -0
- package/src/entities/user.entity.ts +243 -0
- package/src/entities/verification-token.entity.ts +141 -0
- package/src/enums/auth-audit-event-type.enum.ts +360 -0
- package/src/enums/error-codes.enum.ts +420 -0
- package/src/enums/mfa-method.enum.ts +97 -0
- package/src/enums/risk-factor.enum.ts +111 -0
- package/src/exceptions/nauth.exception.ts +231 -0
- package/src/handlers/auth.handler.ts +260 -0
- package/src/handlers/client-info.handler.ts +101 -0
- package/src/handlers/csrf.handler.ts +156 -0
- package/src/handlers/token-delivery.handler.ts +118 -0
- package/src/index.ts +118 -0
- package/src/interfaces/client-info.interface.ts +85 -0
- package/src/interfaces/config.interface.ts +2135 -0
- package/src/interfaces/entities.interface.ts +226 -0
- package/src/interfaces/index.ts +15 -0
- package/src/interfaces/logger.interface.ts +283 -0
- package/src/interfaces/mfa-provider.interface.ts +154 -0
- package/src/interfaces/oauth.interface.ts +148 -0
- package/src/interfaces/provider.interface.ts +47 -0
- package/src/interfaces/social-auth-provider.interface.ts +131 -0
- package/src/interfaces/storage-adapter.interface.ts +82 -0
- package/src/interfaces/template.interface.ts +510 -0
- package/src/interfaces/token-verifier.interface.ts +110 -0
- package/src/internal.ts +178 -0
- package/src/platform/interfaces.ts +299 -0
- package/src/schemas/auth-config.schema.ts +646 -0
- package/src/services/adaptive-mfa-decision.service.spec.ts +1058 -0
- package/src/services/adaptive-mfa-decision.service.ts +457 -0
- package/src/services/auth-audit.service.spec.ts +675 -0
- package/src/services/auth-audit.service.ts +558 -0
- package/src/services/auth-challenge-helper.service.spec.ts +3227 -0
- package/src/services/auth-challenge-helper.service.ts +825 -0
- package/src/services/auth-flow-context-builder.service.ts +520 -0
- package/src/services/auth-flow-rules.ts +202 -0
- package/src/services/auth-flow-state-definitions.ts +190 -0
- package/src/services/auth-flow-state-machine.service.ts +207 -0
- package/src/services/auth-flow-state-machine.types.ts +316 -0
- package/src/services/auth.service.spec.ts +4195 -0
- package/src/services/auth.service.ts +3727 -0
- package/src/services/challenge.service.spec.ts +1363 -0
- package/src/services/challenge.service.ts +696 -0
- package/src/services/client-info.service.spec.ts +572 -0
- package/src/services/client-info.service.ts +374 -0
- package/src/services/csrf.service.ts +54 -0
- package/src/services/email-verification.service.spec.ts +1229 -0
- package/src/services/email-verification.service.ts +578 -0
- package/src/services/geo-location.service.spec.ts +603 -0
- package/src/services/geo-location.service.ts +599 -0
- package/src/services/index.ts +13 -0
- package/src/services/jwt.service.spec.ts +882 -0
- package/src/services/jwt.service.ts +621 -0
- package/src/services/mfa-base.service.spec.ts +246 -0
- package/src/services/mfa-base.service.ts +611 -0
- package/src/services/mfa.service.spec.ts +693 -0
- package/src/services/mfa.service.ts +960 -0
- package/src/services/password.service.spec.ts +166 -0
- package/src/services/password.service.ts +309 -0
- package/src/services/phone-verification.service.spec.ts +1120 -0
- package/src/services/phone-verification.service.ts +751 -0
- package/src/services/risk-detection.service.spec.ts +1292 -0
- package/src/services/risk-detection.service.ts +1012 -0
- package/src/services/risk-scoring.service.spec.ts +204 -0
- package/src/services/risk-scoring.service.ts +131 -0
- package/src/services/session.service.spec.ts +1293 -0
- package/src/services/session.service.ts +803 -0
- package/src/services/social-account.service.spec.ts +725 -0
- package/src/services/social-auth-base.service.spec.ts +418 -0
- package/src/services/social-auth-base.service.ts +581 -0
- package/src/services/social-auth.service.spec.ts +238 -0
- package/src/services/social-auth.service.ts +436 -0
- package/src/services/social-provider-registry.service.spec.ts +238 -0
- package/src/services/social-provider-registry.service.ts +122 -0
- package/src/services/trusted-device.service.spec.ts +505 -0
- package/src/services/trusted-device.service.ts +339 -0
- package/src/storage/account-lockout-storage.service.spec.ts +310 -0
- package/src/storage/account-lockout-storage.service.ts +89 -0
- package/src/storage/index.ts +3 -0
- package/src/storage/memory-storage.adapter.ts +443 -0
- package/src/storage/rate-limit-storage.service.spec.ts +247 -0
- package/src/storage/rate-limit-storage.service.ts +38 -0
- package/src/templates/html-template.engine.spec.ts +161 -0
- package/src/templates/html-template.engine.ts +688 -0
- package/src/templates/index.ts +7 -0
- package/src/utils/common-passwords.spec.ts +230 -0
- package/src/utils/common-passwords.ts +170 -0
- package/src/utils/context-storage.ts +188 -0
- package/src/utils/cookie-names.util.ts +67 -0
- package/src/utils/cookies.util.ts +94 -0
- package/src/utils/index.ts +12 -0
- package/src/utils/ip-extractor.spec.ts +330 -0
- package/src/utils/ip-extractor.ts +220 -0
- package/src/utils/nauth-logger.spec.ts +388 -0
- package/src/utils/nauth-logger.ts +215 -0
- package/src/utils/pii-redactor.spec.ts +130 -0
- package/src/utils/pii-redactor.ts +288 -0
- package/src/utils/setup/get-repositories.ts +140 -0
- package/src/utils/setup/init-services.ts +422 -0
- package/src/utils/setup/init-social.ts +189 -0
- package/src/utils/setup/init-storage.ts +94 -0
- package/src/utils/setup/register-mfa.ts +165 -0
- package/src/utils/setup/run-nauth-migrations.ts +61 -0
- package/src/utils/token-delivery-policy.ts +38 -0
- package/src/validators/template.validator.ts +219 -0
- package/tsconfig.json +37 -0
- package/tsconfig.lint.json +6 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DTO for verifying MFA code
|
|
3
|
+
*
|
|
4
|
+
* Used to verify MFA code using the appropriate provider.
|
|
5
|
+
* Routes verification to the correct provider based on method name.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const isValid = await mfaService.verifyCode({
|
|
10
|
+
* sub: 'user-uuid',
|
|
11
|
+
* methodName: 'totp',
|
|
12
|
+
* code: '123456',
|
|
13
|
+
* deviceId: 1
|
|
14
|
+
* });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { IsEnum, IsString, IsUUID, IsOptional, MaxLength, IsInt } from 'class-validator';
|
|
19
|
+
import { Transform } from 'class-transformer';
|
|
20
|
+
import { MFAMethod } from '../enums/mfa-method.enum';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* DTO for verifying MFA code
|
|
24
|
+
*/
|
|
25
|
+
export class VerifyMFACodeDTO {
|
|
26
|
+
/**
|
|
27
|
+
* User's unique identifier (UUID v4)
|
|
28
|
+
*
|
|
29
|
+
* Validation:
|
|
30
|
+
* - Must be a valid UUID v4 format
|
|
31
|
+
* - Matches DB constraint: char(36) or uuid
|
|
32
|
+
*
|
|
33
|
+
* Sanitization:
|
|
34
|
+
* - Trimmed
|
|
35
|
+
* - Lowercased for consistency
|
|
36
|
+
*
|
|
37
|
+
* @example "a21b654c-2746-4168-acee-c175083a65cd"
|
|
38
|
+
*/
|
|
39
|
+
@IsUUID('4', { message: 'User sub must be a valid UUID v4 format' })
|
|
40
|
+
@Transform(({ value }) => {
|
|
41
|
+
if (typeof value === 'string') {
|
|
42
|
+
return value.trim().toLowerCase();
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
})
|
|
46
|
+
sub!: string;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* MFA method name
|
|
50
|
+
*
|
|
51
|
+
* Validation:
|
|
52
|
+
* - Must be one of: totp, sms, email, passkey, backup
|
|
53
|
+
* - Max 50 characters
|
|
54
|
+
*
|
|
55
|
+
* Sanitization:
|
|
56
|
+
* - Trimmed and lowercased
|
|
57
|
+
*
|
|
58
|
+
* @example "totp"
|
|
59
|
+
*/
|
|
60
|
+
@IsString({ message: 'Method name must be a string' })
|
|
61
|
+
@IsEnum([MFAMethod.TOTP, MFAMethod.SMS, MFAMethod.EMAIL, MFAMethod.PASSKEY, MFAMethod.BACKUP], {
|
|
62
|
+
message: 'Method name must be one of: totp, sms, email, passkey, backup',
|
|
63
|
+
})
|
|
64
|
+
@MaxLength(50, { message: 'Method name must not exceed 50 characters' })
|
|
65
|
+
@Transform(({ value }) => {
|
|
66
|
+
if (typeof value === 'string') {
|
|
67
|
+
return value.trim().toLowerCase();
|
|
68
|
+
}
|
|
69
|
+
return value;
|
|
70
|
+
})
|
|
71
|
+
methodName!: string;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Verification code or credential (provider-specific)
|
|
75
|
+
*
|
|
76
|
+
* Validation:
|
|
77
|
+
* - Must be a string or object depending on method
|
|
78
|
+
* - For TOTP/SMS/Email: string code
|
|
79
|
+
* - For Passkey: credential object
|
|
80
|
+
* - For Backup: string code
|
|
81
|
+
*/
|
|
82
|
+
code!: string | Record<string, unknown>;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Optional device ID
|
|
86
|
+
*
|
|
87
|
+
* Validation:
|
|
88
|
+
* - Must be a positive integer if provided
|
|
89
|
+
*/
|
|
90
|
+
@IsOptional()
|
|
91
|
+
@IsInt({ message: 'Device ID must be a number' })
|
|
92
|
+
deviceId?: number;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Response DTO for MFA code verification
|
|
97
|
+
*/
|
|
98
|
+
export class VerifyMFACodeResponseDTO {
|
|
99
|
+
/**
|
|
100
|
+
* Whether verification succeeded
|
|
101
|
+
*/
|
|
102
|
+
valid!: boolean;
|
|
103
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { IsUUID, IsNumberString, Length, IsOptional, IsInt, Min } from 'class-validator';
|
|
2
|
+
import { Transform } from 'class-transformer';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Verify Phone with Code by User Sub DTO
|
|
6
|
+
*
|
|
7
|
+
* Used for phone verification with 6-digit OTP code when allowing duplicate phones.
|
|
8
|
+
* Requires user sub to identify which user's phone to verify.
|
|
9
|
+
*
|
|
10
|
+
* Security:
|
|
11
|
+
* - UUID format validated (prevents injection)
|
|
12
|
+
* - Code format validated (6 digits)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* POST /auth/verify-phone/verify-by-sub
|
|
17
|
+
* {
|
|
18
|
+
* "sub": "a21b654c-2746-4168-acee-c175083a65cd",
|
|
19
|
+
* "code": "123456"
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export class VerifyPhoneWithCodeBySubDTO {
|
|
24
|
+
/**
|
|
25
|
+
* User's external identifier (sub/UUID v4)
|
|
26
|
+
*
|
|
27
|
+
* Validation:
|
|
28
|
+
* - Must be a valid UUID v4 format
|
|
29
|
+
* - Matches DB constraint: char(36) or uuid
|
|
30
|
+
*
|
|
31
|
+
* Sanitization:
|
|
32
|
+
* - Trimmed and lowercased for consistency
|
|
33
|
+
*
|
|
34
|
+
* @example "a21b654c-2746-4168-acee-c175083a65cd"
|
|
35
|
+
*/
|
|
36
|
+
@IsUUID('4', { message: 'Sub must be a valid UUID v4 format' })
|
|
37
|
+
@Transform(({ value }) => {
|
|
38
|
+
if (typeof value === 'string') {
|
|
39
|
+
return value.trim().toLowerCase();
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
})
|
|
43
|
+
sub!: string;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* 6-digit verification code
|
|
47
|
+
*
|
|
48
|
+
* Validation:
|
|
49
|
+
* - Must be a numeric string
|
|
50
|
+
* - Exactly 6 digits
|
|
51
|
+
*
|
|
52
|
+
* @example "123456"
|
|
53
|
+
*/
|
|
54
|
+
@IsNumberString({}, { message: 'Code must contain only digits' })
|
|
55
|
+
@Length(6, 6, { message: 'Code must be exactly 6 digits' })
|
|
56
|
+
@Transform(({ value }) => {
|
|
57
|
+
if (typeof value === 'string') {
|
|
58
|
+
const cleaned = value.replace(/\D/g, '');
|
|
59
|
+
return cleaned.length === 6 ? cleaned : value;
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
})
|
|
63
|
+
code!: string;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Challenge session ID (internal use)
|
|
67
|
+
* Optional - used internally to link verification to specific challenge session.
|
|
68
|
+
* Provides security by ensuring codes are only valid for the session they were created for.
|
|
69
|
+
*
|
|
70
|
+
* Validation:
|
|
71
|
+
* - Must be a positive integer if provided
|
|
72
|
+
* - Optional (for backward compatibility and direct verification flows)
|
|
73
|
+
*/
|
|
74
|
+
@IsOptional()
|
|
75
|
+
@IsInt({ message: 'challengeSessionId must be an integer' })
|
|
76
|
+
@Min(1, { message: 'challengeSessionId must be a positive integer' })
|
|
77
|
+
challengeSessionId?: number;
|
|
78
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IsString,
|
|
3
|
+
IsNotEmpty,
|
|
4
|
+
Length,
|
|
5
|
+
Matches,
|
|
6
|
+
MaxLength,
|
|
7
|
+
IsNumberString,
|
|
8
|
+
IsUUID,
|
|
9
|
+
IsOptional,
|
|
10
|
+
IsBoolean,
|
|
11
|
+
IsInt,
|
|
12
|
+
Min,
|
|
13
|
+
} from 'class-validator';
|
|
14
|
+
import { Transform } from 'class-transformer';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Verify Phone with Code DTO
|
|
18
|
+
*
|
|
19
|
+
* Used for phone verification with 6-digit OTP code.
|
|
20
|
+
*
|
|
21
|
+
* Security:
|
|
22
|
+
* - Phone validated against E.164 format (prevents SQL injection)
|
|
23
|
+
* - Code validated for exact 6 digits
|
|
24
|
+
* - All fields match DB constraints
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* POST /auth/verify-phone/verify
|
|
29
|
+
* {
|
|
30
|
+
* "phone": "+1234567890",
|
|
31
|
+
* "code": "123456"
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class VerifyPhoneWithCodeDTO {
|
|
36
|
+
/**
|
|
37
|
+
* User's phone number in E.164 format
|
|
38
|
+
*
|
|
39
|
+
* Validation:
|
|
40
|
+
* - Must be a string
|
|
41
|
+
* - Must match E.164 format: +[country code][number]
|
|
42
|
+
* - Max 20 characters (matches DB constraint: varchar(20))
|
|
43
|
+
*
|
|
44
|
+
* Sanitization:
|
|
45
|
+
* - Trimmed
|
|
46
|
+
* - Whitespace removed
|
|
47
|
+
*
|
|
48
|
+
* @example "+1234567890"
|
|
49
|
+
*/
|
|
50
|
+
@IsString({ message: 'Phone must be a string' })
|
|
51
|
+
@IsNotEmpty({ message: 'Phone is required' })
|
|
52
|
+
@MaxLength(20, { message: 'Phone number must not exceed 20 characters' })
|
|
53
|
+
@Matches(/^\+[1-9]\d{1,14}$/, {
|
|
54
|
+
message: 'Phone must be in E.164 format (e.g., +1234567890)',
|
|
55
|
+
})
|
|
56
|
+
@Transform(({ value }) => {
|
|
57
|
+
if (typeof value === 'string') {
|
|
58
|
+
// Remove all whitespace and keep only digits and +
|
|
59
|
+
return value.replace(/\s/g, '');
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
})
|
|
63
|
+
phone!: string;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 6-digit verification code
|
|
67
|
+
*
|
|
68
|
+
* Validation:
|
|
69
|
+
* - Must be a string
|
|
70
|
+
* - Exactly 6 digits (numeric only)
|
|
71
|
+
* - No letters, spaces, or special characters
|
|
72
|
+
* - Fixed length prevents timing attacks
|
|
73
|
+
*
|
|
74
|
+
* Sanitization:
|
|
75
|
+
* - Removes all whitespace (users might copy "123 456")
|
|
76
|
+
* - Ensures only numeric string
|
|
77
|
+
*
|
|
78
|
+
* @example "123456"
|
|
79
|
+
*/
|
|
80
|
+
@IsNumberString({}, { message: 'Code must contain only digits' })
|
|
81
|
+
@Length(6, 6, { message: 'Verification code must be exactly 6 digits' })
|
|
82
|
+
@Transform(({ value }) => {
|
|
83
|
+
if (typeof value === 'string') {
|
|
84
|
+
// Remove all whitespace and non-digit characters
|
|
85
|
+
const cleaned = value.replace(/\D/g, '');
|
|
86
|
+
return cleaned.length === 6 ? cleaned : value; // Return original if not 6 digits (let validator catch it)
|
|
87
|
+
}
|
|
88
|
+
return value;
|
|
89
|
+
})
|
|
90
|
+
code!: string;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Challenge session ID (internal use)
|
|
94
|
+
* Optional - used internally to link verification to specific challenge session.
|
|
95
|
+
* Provides security by ensuring codes are only valid for the session they were created for.
|
|
96
|
+
*
|
|
97
|
+
* Validation:
|
|
98
|
+
* - Must be a positive integer if provided
|
|
99
|
+
* - Optional (for backward compatibility and direct verification flows)
|
|
100
|
+
*/
|
|
101
|
+
@IsOptional()
|
|
102
|
+
@IsInt({ message: 'challengeSessionId must be an integer' })
|
|
103
|
+
@Min(1, { message: 'challengeSessionId must be a positive integer' })
|
|
104
|
+
challengeSessionId?: number;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* DTO for sending verification SMS
|
|
109
|
+
*
|
|
110
|
+
* Security:
|
|
111
|
+
* - User sub validated as UUID v4
|
|
112
|
+
* - Skip flag is boolean (prevents injection)
|
|
113
|
+
*/
|
|
114
|
+
export class SendVerificationSMSDTO {
|
|
115
|
+
/**
|
|
116
|
+
* User identifier (UUID v4)
|
|
117
|
+
*
|
|
118
|
+
* Validation:
|
|
119
|
+
* - Must be valid UUID v4 format
|
|
120
|
+
*
|
|
121
|
+
* Sanitization:
|
|
122
|
+
* - Trimmed and lowercased
|
|
123
|
+
*/
|
|
124
|
+
@IsUUID('4', { message: 'User ID must be a valid UUID v4 format' })
|
|
125
|
+
@Transform(({ value }) => {
|
|
126
|
+
if (typeof value === 'string') {
|
|
127
|
+
return value.trim().toLowerCase();
|
|
128
|
+
}
|
|
129
|
+
return value;
|
|
130
|
+
})
|
|
131
|
+
sub!: string;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Skip the "already verified" check
|
|
135
|
+
* Used for MFA contexts where codes are needed even if phone is verified
|
|
136
|
+
*
|
|
137
|
+
* Validation:
|
|
138
|
+
* - Must be boolean
|
|
139
|
+
* - Optional (defaults to true)
|
|
140
|
+
*/
|
|
141
|
+
@IsOptional()
|
|
142
|
+
@IsBoolean({ message: 'skipAlreadyVerifiedCheck must be a boolean' })
|
|
143
|
+
skipAlreadyVerifiedCheck?: boolean;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Challenge session ID to link this verification token to
|
|
147
|
+
* Optional - for linking verification tokens to specific challenge sessions.
|
|
148
|
+
* Provides security by preventing old tokens from being used with new sessions.
|
|
149
|
+
*
|
|
150
|
+
* Validation:
|
|
151
|
+
* - Must be a positive integer
|
|
152
|
+
* - Optional (for backward compatibility and non-challenge flows)
|
|
153
|
+
*/
|
|
154
|
+
@IsOptional()
|
|
155
|
+
@IsInt({ message: 'challengeSessionId must be an integer' })
|
|
156
|
+
@Min(1, { message: 'challengeSessionId must be a positive integer' })
|
|
157
|
+
challengeSessionId?: number;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Response DTO for sendVerificationSMS
|
|
162
|
+
*/
|
|
163
|
+
export class SendVerificationSMSResponseDTO {
|
|
164
|
+
/**
|
|
165
|
+
* Verification token ID (internal integer)
|
|
166
|
+
*/
|
|
167
|
+
tokenId!: number;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Response DTO for verifyPhoneWithCode and verifyPhoneWithCodeBySub
|
|
172
|
+
*/
|
|
173
|
+
export class VerifyPhoneResponseDTO {
|
|
174
|
+
/**
|
|
175
|
+
* Success message
|
|
176
|
+
*/
|
|
177
|
+
message!: string;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* DTO for resending verification SMS
|
|
182
|
+
*
|
|
183
|
+
* Supports both sub and phone-based resend
|
|
184
|
+
*
|
|
185
|
+
* Security:
|
|
186
|
+
* - Either sub or phone must be provided (conditional validation)
|
|
187
|
+
* - Rate limiting applied in service layer
|
|
188
|
+
* - Input sanitization prevents abuse
|
|
189
|
+
*/
|
|
190
|
+
export class ResendVerificationSMSDTO {
|
|
191
|
+
/**
|
|
192
|
+
* User identifier (UUID v4) - optional if phone provided
|
|
193
|
+
*
|
|
194
|
+
* Validation:
|
|
195
|
+
* - Must be valid UUID v4 format if provided
|
|
196
|
+
* - Required if phone is not provided
|
|
197
|
+
*
|
|
198
|
+
* Sanitization:
|
|
199
|
+
* - Trimmed and lowercased
|
|
200
|
+
*/
|
|
201
|
+
@IsOptional()
|
|
202
|
+
@IsUUID('4', { message: 'User ID must be a valid UUID v4 format' })
|
|
203
|
+
@Transform(({ value }) => {
|
|
204
|
+
if (typeof value === 'string') {
|
|
205
|
+
return value.trim().toLowerCase();
|
|
206
|
+
}
|
|
207
|
+
return value;
|
|
208
|
+
})
|
|
209
|
+
sub?: string;
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* User's phone number - optional if sub provided
|
|
213
|
+
*
|
|
214
|
+
* Validation:
|
|
215
|
+
* - Must match E.164 format if provided
|
|
216
|
+
* - Max 20 characters (DB limit)
|
|
217
|
+
* - Required if sub is not provided
|
|
218
|
+
*
|
|
219
|
+
* Sanitization:
|
|
220
|
+
* - Whitespace removed
|
|
221
|
+
*/
|
|
222
|
+
@IsOptional()
|
|
223
|
+
@IsString({ message: 'Phone must be a string' })
|
|
224
|
+
@MaxLength(20, { message: 'Phone number must not exceed 20 characters' })
|
|
225
|
+
@Matches(/^\+[1-9]\d{1,14}$/, {
|
|
226
|
+
message: 'Phone must be in E.164 format (e.g., +1234567890)',
|
|
227
|
+
})
|
|
228
|
+
@Transform(({ value }) => {
|
|
229
|
+
if (typeof value === 'string') {
|
|
230
|
+
return value.replace(/\s/g, '');
|
|
231
|
+
}
|
|
232
|
+
return value;
|
|
233
|
+
})
|
|
234
|
+
phone?: string;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Response DTO for resendVerificationSMS
|
|
239
|
+
*/
|
|
240
|
+
export class ResendVerificationSMSResponseDTO {
|
|
241
|
+
/**
|
|
242
|
+
* Verification token ID (internal integer)
|
|
243
|
+
*/
|
|
244
|
+
tokenId!: number;
|
|
245
|
+
}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { AuthAuditEventType } from '../enums/auth-audit-event-type.enum';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Authentication Audit Event Status
|
|
5
|
+
*
|
|
6
|
+
* Classification of event outcomes for filtering and analysis.
|
|
7
|
+
*/
|
|
8
|
+
export type AuthAuditEventStatus = 'SUCCESS' | 'FAILURE' | 'INFO' | 'SUSPICIOUS';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Base Authentication Audit Entity
|
|
12
|
+
*
|
|
13
|
+
* Core audit record with all fields and business logic.
|
|
14
|
+
* Database adapters extend this class and add ORM-specific decorators.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* This class is database-agnostic. TypeORM, Prisma, or other ORMs
|
|
18
|
+
* extend this class in their respective packages.
|
|
19
|
+
*
|
|
20
|
+
* **Design Notes:**
|
|
21
|
+
* - Only stores `userId` (integer internal ID) - no `userSub` duplication
|
|
22
|
+
* - Risk tracking fields are infrastructure for future adaptive MFA (no business logic)
|
|
23
|
+
* - All audit integrations are non-blocking (errors logged, don't throw)
|
|
24
|
+
*/
|
|
25
|
+
export class BaseAuthAudit {
|
|
26
|
+
/**
|
|
27
|
+
* Internal audit record ID (auto-increment integer)
|
|
28
|
+
*/
|
|
29
|
+
id!: number;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Internal user ID (foreign key to users table)
|
|
33
|
+
* Uses integer for optimal performance in joins and lookups.
|
|
34
|
+
* API methods accepting userSub will resolve to userId before querying.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* No userSub field to avoid duplication. All queries use userId
|
|
38
|
+
* for efficient database operations.
|
|
39
|
+
*/
|
|
40
|
+
userId!: number;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Type of authentication/security event
|
|
44
|
+
*/
|
|
45
|
+
eventType!: AuthAuditEventType;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Event classification status
|
|
49
|
+
* - SUCCESS: Operation completed successfully
|
|
50
|
+
* - FAILURE: Operation failed (login failed, verification failed, etc.)
|
|
51
|
+
* - INFO: Informational event (profile update, device added, etc.)
|
|
52
|
+
* - SUSPICIOUS: Security violation or suspicious activity detected
|
|
53
|
+
*/
|
|
54
|
+
eventStatus!: AuthAuditEventStatus;
|
|
55
|
+
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Risk Assessment Fields (Infrastructure for Future Adaptive MFA)
|
|
58
|
+
// ============================================================================
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Risk factor score (0-100)
|
|
62
|
+
* Calculated during adaptive MFA evaluation (future implementation).
|
|
63
|
+
* null if not applicable (non-adaptive flows).
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* This is infrastructure for future adaptive MFA. The audit service
|
|
67
|
+
* records risk data but does NOT calculate risk scores. Risk calculation
|
|
68
|
+
* and adaptive MFA business logic will be implemented in future phases.
|
|
69
|
+
*/
|
|
70
|
+
riskFactor?: number | null;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Risk factors that contributed to the risk score
|
|
74
|
+
* Examples: ['new_device', 'new_ip', 'new_country', 'impossible_travel']
|
|
75
|
+
*
|
|
76
|
+
* @remarks
|
|
77
|
+
* Infrastructure field for future adaptive MFA implementation.
|
|
78
|
+
*/
|
|
79
|
+
riskFactors?: string[] | null;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Whether adaptive MFA was triggered for this event
|
|
83
|
+
* true if MFA was conditionally required based on risk (future implementation).
|
|
84
|
+
* null if not applicable.
|
|
85
|
+
*
|
|
86
|
+
* @remarks
|
|
87
|
+
* Infrastructure field for future adaptive MFA implementation.
|
|
88
|
+
*/
|
|
89
|
+
adaptiveMfaTriggered?: boolean | null;
|
|
90
|
+
|
|
91
|
+
// ============================================================================
|
|
92
|
+
// Client Information
|
|
93
|
+
// ============================================================================
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* IP address where event occurred
|
|
97
|
+
*/
|
|
98
|
+
ipAddress?: string | null;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Country from IP geolocation (optional, for geographic risk assessment)
|
|
102
|
+
*/
|
|
103
|
+
ipCountry?: string | null;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* City from IP geolocation (optional, for geographic risk assessment)
|
|
107
|
+
*/
|
|
108
|
+
ipCity?: string | null;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Latitude from IP geolocation (optional, for impossible travel detection)
|
|
112
|
+
*/
|
|
113
|
+
ipLatitude?: number | null;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Longitude from IP geolocation (optional, for impossible travel detection)
|
|
117
|
+
*/
|
|
118
|
+
ipLongitude?: number | null;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* User agent string
|
|
122
|
+
*/
|
|
123
|
+
userAgent?: string | null;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Platform extracted from user agent
|
|
127
|
+
* Examples: "iOS", "Android", "Windows", "macOS"
|
|
128
|
+
*/
|
|
129
|
+
platform?: string | null;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Browser extracted from user agent
|
|
133
|
+
* Examples: "Chrome", "Safari", "Firefox"
|
|
134
|
+
*/
|
|
135
|
+
browser?: string | null;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Device identifier (UUID)
|
|
139
|
+
* Unique identifier for the device/browser
|
|
140
|
+
*/
|
|
141
|
+
deviceId?: string | null;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* User-friendly device name
|
|
145
|
+
* Examples: "iPhone 15 Pro", "Chrome on MacBook"
|
|
146
|
+
*/
|
|
147
|
+
deviceName?: string | null;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Device type
|
|
151
|
+
* Examples: "mobile", "desktop", "tablet"
|
|
152
|
+
*/
|
|
153
|
+
deviceType?: string | null;
|
|
154
|
+
|
|
155
|
+
// ============================================================================
|
|
156
|
+
// Context Information
|
|
157
|
+
// ============================================================================
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Session ID (if event is related to a session)
|
|
161
|
+
* Foreign key to sessions table
|
|
162
|
+
*/
|
|
163
|
+
sessionId?: number | null;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Challenge session ID (if event is related to a challenge)
|
|
167
|
+
* Foreign key to challenge_sessions table
|
|
168
|
+
*/
|
|
169
|
+
challengeSessionId?: number | null;
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Authentication method used
|
|
173
|
+
* Examples: "password", "google", "apple", "facebook"
|
|
174
|
+
* Used for social login provider tracking
|
|
175
|
+
*/
|
|
176
|
+
authMethod?: string | null;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Who performed this action (for admin/CLI/automated operations)
|
|
180
|
+
* - Admin user ID or email for manual admin actions
|
|
181
|
+
* - CLI identifier for command-line operations
|
|
182
|
+
* - 'system' for automated actions
|
|
183
|
+
* - null for user-initiated actions
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* performedBy: 'admin@example.com'
|
|
187
|
+
* performedBy: 'cli-migration-2025'
|
|
188
|
+
* performedBy: 'system'
|
|
189
|
+
*/
|
|
190
|
+
performedBy?: string | null;
|
|
191
|
+
|
|
192
|
+
// ============================================================================
|
|
193
|
+
// Event Details
|
|
194
|
+
// ============================================================================
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Reason for the event (optional)
|
|
198
|
+
* Used for security events, account locks, etc.
|
|
199
|
+
*/
|
|
200
|
+
reason?: string | null;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Detailed description of the event
|
|
204
|
+
*/
|
|
205
|
+
description?: string | null;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Rich metadata (JSON)
|
|
209
|
+
* Event-specific data stored without requiring schema changes.
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```typescript
|
|
213
|
+
* // Social login
|
|
214
|
+
* metadata: { provider: 'google', isNewUser: true }
|
|
215
|
+
*
|
|
216
|
+
* // Challenge event
|
|
217
|
+
* metadata: { challengeName: 'VERIFY_EMAIL', challengeSessionId: 123 }
|
|
218
|
+
*
|
|
219
|
+
* // MFA device
|
|
220
|
+
* metadata: { deviceType: 'totp', deviceName: 'iPhone Authenticator' }
|
|
221
|
+
*
|
|
222
|
+
* // Token reuse
|
|
223
|
+
* metadata: { tokenFamily: 'abc123', action: 'token_family_revoked' }
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
metadata?: Record<string, unknown> | null;
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Timestamp when event occurred
|
|
230
|
+
*/
|
|
231
|
+
createdAt!: Date;
|
|
232
|
+
}
|