@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,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Challenge Session Entity
|
|
3
|
+
*
|
|
4
|
+
* Stores temporary authentication challenge sessions.
|
|
5
|
+
* These are short-lived sessions used to track pending challenges
|
|
6
|
+
* that must be completed before full authentication is granted.
|
|
7
|
+
* Database adapters extend this class and add ORM-specific decorators.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Similar to AWS Cognito's challenge sessions, these are NOT full JWT tokens.
|
|
11
|
+
* They expire quickly (typically 15 minutes) and are deleted after completion.
|
|
12
|
+
* This class is database-agnostic. TypeORM, Prisma, or other ORMs
|
|
13
|
+
* extend this class in their respective packages.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Creating a challenge session after signup
|
|
18
|
+
* const challengeSession = new ChallengeSession();
|
|
19
|
+
* challengeSession.userId = user.id;
|
|
20
|
+
* challengeSession.challengeName = 'VERIFY_EMAIL';
|
|
21
|
+
* challengeSession.sessionToken = randomUUID();
|
|
22
|
+
* challengeSession.expiresAt = new Date(Date.now() + 15 * 60 * 1000);
|
|
23
|
+
* challengeSession.metadata = { email: user.email };
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export class BaseChallengeSession {
|
|
27
|
+
/**
|
|
28
|
+
* Primary key
|
|
29
|
+
*/
|
|
30
|
+
id!: number;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* User ID foreign key
|
|
34
|
+
* References the user this challenge session belongs to
|
|
35
|
+
*/
|
|
36
|
+
userId!: number;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Challenge type that must be completed
|
|
40
|
+
*
|
|
41
|
+
* @example 'VERIFY_EMAIL', 'VERIFY_PHONE', 'MFA_REQUIRED', 'FORCE_CHANGE_PASSWORD'
|
|
42
|
+
*/
|
|
43
|
+
challengeName!: string;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Temporary session token (UUID)
|
|
47
|
+
* This is returned to the client and must be submitted when responding to challenge
|
|
48
|
+
*/
|
|
49
|
+
sessionToken!: string;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Session expiration time
|
|
53
|
+
* Challenge sessions are short-lived (typically 15 minutes)
|
|
54
|
+
*/
|
|
55
|
+
expiresAt!: Date;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Whether this challenge has been completed successfully
|
|
59
|
+
* Completed challenges cannot be attempted again
|
|
60
|
+
*/
|
|
61
|
+
isCompleted?: boolean;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* When the challenge was completed successfully
|
|
65
|
+
* NULL if not yet completed
|
|
66
|
+
*/
|
|
67
|
+
completedAt?: Date | null;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Number of failed attempts to complete this challenge
|
|
71
|
+
* Used to prevent brute-force attacks on verification codes
|
|
72
|
+
*/
|
|
73
|
+
attempts!: number;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Maximum allowed attempts before session is invalidated
|
|
77
|
+
*/
|
|
78
|
+
maxAttempts!: number;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Challenge-specific metadata
|
|
82
|
+
* Stores information needed for challenge completion
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* {
|
|
87
|
+
* email: 'user@example.com',
|
|
88
|
+
* phone: '+1234567890',
|
|
89
|
+
* verificationTokenId: 123
|
|
90
|
+
* }
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
challengeParameters?: Record<string, unknown> | null;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Additional metadata (alias for challengeParameters for backwards compatibility)
|
|
97
|
+
*/
|
|
98
|
+
metadata?: Record<string, unknown> | null;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* IP address where the challenge session was created
|
|
102
|
+
* For security auditing
|
|
103
|
+
*/
|
|
104
|
+
ipAddress?: string | null;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* User agent where the challenge session was created
|
|
108
|
+
* For security auditing
|
|
109
|
+
*/
|
|
110
|
+
userAgent?: string | null;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Creation timestamp
|
|
114
|
+
*/
|
|
115
|
+
createdAt!: Date;
|
|
116
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Entity Classes
|
|
3
|
+
*
|
|
4
|
+
* Database-agnostic entity classes containing all fields and business logic.
|
|
5
|
+
* Database adapters (TypeORM, Prisma, etc.) extend these classes and add ORM-specific decorators.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* These base classes provide:
|
|
9
|
+
* - Field definitions
|
|
10
|
+
* - Business logic methods
|
|
11
|
+
* - JSDoc documentation
|
|
12
|
+
* - Type safety
|
|
13
|
+
*
|
|
14
|
+
* Database packages add:
|
|
15
|
+
* - ORM decorators (@Entity, @Column, etc.)
|
|
16
|
+
* - Database-specific configuration
|
|
17
|
+
* - Indexes and constraints
|
|
18
|
+
*/
|
|
19
|
+
export { BaseUser } from './user.entity';
|
|
20
|
+
export { BaseSession } from './session.entity';
|
|
21
|
+
export { BaseTrustedDevice } from './trusted-device.entity';
|
|
22
|
+
export { BaseLoginAttempt } from './login-attempt.entity';
|
|
23
|
+
export { BaseVerificationToken } from './verification-token.entity';
|
|
24
|
+
export { BaseSocialAccount } from './social-account.entity';
|
|
25
|
+
export { BaseChallengeSession } from './challenge-session.entity';
|
|
26
|
+
export { BaseMFADevice } from './mfa-device.entity';
|
|
27
|
+
export { BaseAuthAudit, type AuthAuditEventStatus } from './auth-audit.entity';
|
|
28
|
+
export { BaseRateLimit } from './rate-limit.entity';
|
|
29
|
+
export { BaseStorageLock } from './storage-lock.entity';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Login Attempt Entity
|
|
3
|
+
*
|
|
4
|
+
* Failed login tracking for security auditing and rate limiting.
|
|
5
|
+
* Database adapters extend this class and add ORM-specific decorators.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This class is database-agnostic. TypeORM, Prisma, or other ORMs
|
|
9
|
+
* extend this class in their respective packages.
|
|
10
|
+
*/
|
|
11
|
+
export class BaseLoginAttempt {
|
|
12
|
+
/**
|
|
13
|
+
* Internal login attempt ID
|
|
14
|
+
*/
|
|
15
|
+
id!: number;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Email/username used in login attempt
|
|
19
|
+
* May be NULL for malformed requests
|
|
20
|
+
*/
|
|
21
|
+
email?: string | null;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Internal user ID (foreign key to users table)
|
|
25
|
+
* Nullable since login attempt might be for non-existent user
|
|
26
|
+
*/
|
|
27
|
+
userId?: number | null;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* IP address of login attempt
|
|
31
|
+
*/
|
|
32
|
+
ipAddress?: string | null;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* User agent string
|
|
36
|
+
*/
|
|
37
|
+
userAgent?: string | null;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Whether login was successful
|
|
41
|
+
*/
|
|
42
|
+
success!: boolean;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Reason for login failure
|
|
46
|
+
* Examples: "invalid_credentials", "account_locked", "mfa_required"
|
|
47
|
+
*/
|
|
48
|
+
failureReason?: string | null;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Whether MFA was required for this attempt
|
|
52
|
+
*/
|
|
53
|
+
mfaRequired!: boolean;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Additional metadata (JSON)
|
|
57
|
+
*/
|
|
58
|
+
metadata?: Record<string, unknown> | null;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Login attempt timestamp
|
|
62
|
+
*/
|
|
63
|
+
createdAt!: Date;
|
|
64
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { MFADeviceMethod } from '../enums/mfa-method.enum';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Base MFA Device Entity
|
|
5
|
+
*
|
|
6
|
+
* Stores multi-factor authentication device registrations.
|
|
7
|
+
* Supports multiple MFA methods: TOTP (authenticator apps), SMS, Email, and Passkeys (WebAuthn).
|
|
8
|
+
* Database adapters extend this class and add ORM-specific decorators.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* Each user can register multiple MFA devices of different types for redundancy.
|
|
12
|
+
* Devices can be enabled/disabled without deletion for security audit purposes.
|
|
13
|
+
* This class is database-agnostic. TypeORM, Prisma, or other ORMs
|
|
14
|
+
* extend this class in their respective packages.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Create TOTP device
|
|
19
|
+
* const totpDevice = new MFADevice();
|
|
20
|
+
* totpDevice.userId = user.id;
|
|
21
|
+
* totpDevice.type = 'totp';
|
|
22
|
+
* totpDevice.name = 'Google Authenticator';
|
|
23
|
+
* totpDevice.secret = encryptedSecret;
|
|
24
|
+
* totpDevice.isActive = true;
|
|
25
|
+
*
|
|
26
|
+
* // Create Passkey device
|
|
27
|
+
* const passkeyDevice = new MFADevice();
|
|
28
|
+
* passkeyDevice.userId = user.id;
|
|
29
|
+
* passkeyDevice.type = 'passkey';
|
|
30
|
+
* passkeyDevice.name = 'iPhone 15 Pro';
|
|
31
|
+
* passkeyDevice.credentialId = 'credential-id-here';
|
|
32
|
+
* passkeyDevice.publicKey = 'public-key-here';
|
|
33
|
+
* passkeyDevice.counter = 0;
|
|
34
|
+
* passkeyDevice.isActive = true;
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export class BaseMFADevice {
|
|
38
|
+
/**
|
|
39
|
+
* Internal device ID (auto-increment integer)
|
|
40
|
+
*/
|
|
41
|
+
id!: number;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Internal user ID (foreign key to users table)
|
|
45
|
+
* References the user who owns this MFA device
|
|
46
|
+
*/
|
|
47
|
+
userId!: number;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* MFA method type
|
|
51
|
+
*
|
|
52
|
+
* - 'totp': Time-based One-Time Password (Google Authenticator, Authy, etc.)
|
|
53
|
+
* - 'sms': SMS-based verification codes
|
|
54
|
+
* - 'email': Email-based verification codes
|
|
55
|
+
* - 'passkey': WebAuthn/FIDO2 passkeys (biometric, security keys)
|
|
56
|
+
*/
|
|
57
|
+
type!: MFADeviceMethod;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* User-friendly device name
|
|
61
|
+
* Helps users identify their devices (e.g., "iPhone 15 Pro", "Google Authenticator")
|
|
62
|
+
*/
|
|
63
|
+
name!: string;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* TOTP secret (encrypted)
|
|
67
|
+
* Used only for TOTP devices
|
|
68
|
+
* ⚠️ SECURITY: Must be encrypted at rest
|
|
69
|
+
*/
|
|
70
|
+
secret?: string | null;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Phone number for SMS MFA
|
|
74
|
+
* Used only for SMS devices
|
|
75
|
+
* Must be in E.164 format (e.g., +1234567890)
|
|
76
|
+
*/
|
|
77
|
+
phoneNumber?: string | null;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Email address for Email MFA
|
|
81
|
+
* Used only for Email devices
|
|
82
|
+
* Must be a valid email address format
|
|
83
|
+
*/
|
|
84
|
+
email?: string | null;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* WebAuthn credential ID (base64url encoded)
|
|
88
|
+
* Unique identifier for this passkey
|
|
89
|
+
* Used only for passkey devices
|
|
90
|
+
*/
|
|
91
|
+
credentialId?: string | null;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* WebAuthn public key (base64url encoded)
|
|
95
|
+
* Used to verify passkey signatures
|
|
96
|
+
* Used only for passkey devices
|
|
97
|
+
*/
|
|
98
|
+
publicKey?: string | null;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* WebAuthn signature counter
|
|
102
|
+
* Incremented with each authentication to prevent replay attacks
|
|
103
|
+
* Used only for passkey devices
|
|
104
|
+
*/
|
|
105
|
+
counter?: number | null;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* WebAuthn transports (USB, NFC, BLE, internal)
|
|
109
|
+
* Helps browser suggest the right authentication method
|
|
110
|
+
* Used only for passkey devices
|
|
111
|
+
*/
|
|
112
|
+
transports?: string[] | null;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Whether this device is currently active
|
|
116
|
+
* Inactive devices cannot be used for authentication but remain in database for audit
|
|
117
|
+
*/
|
|
118
|
+
isActive!: boolean;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Whether this is the user's preferred/primary MFA method
|
|
122
|
+
* Used to pre-select MFA method during authentication
|
|
123
|
+
*/
|
|
124
|
+
isPrimary!: boolean;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Last time this device was used for authentication
|
|
128
|
+
*/
|
|
129
|
+
lastUsedAt?: Date | null;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Number of times this device has been used
|
|
133
|
+
* Useful for analytics and detecting suspicious patterns
|
|
134
|
+
*/
|
|
135
|
+
usageCount!: number;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Additional device metadata (browser, OS, IP on registration, etc.)
|
|
139
|
+
*/
|
|
140
|
+
metadata?: Record<string, unknown> | null;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Device registration timestamp
|
|
144
|
+
*/
|
|
145
|
+
createdAt!: Date;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Last update timestamp
|
|
149
|
+
*/
|
|
150
|
+
updatedAt!: Date;
|
|
151
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Rate Limit Entity
|
|
3
|
+
*
|
|
4
|
+
* Stores rate limiting counters for transient state management.
|
|
5
|
+
* Used by DatabaseStorageAdapter to track rate limits across multiple servers.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This class is database-agnostic. TypeORM, Prisma, or other ORMs
|
|
9
|
+
* extend this class in their respective packages.
|
|
10
|
+
*/
|
|
11
|
+
export class BaseRateLimit {
|
|
12
|
+
/**
|
|
13
|
+
* Internal rate limit record ID (auto-increment integer)
|
|
14
|
+
*/
|
|
15
|
+
id!: number;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Unique key identifier for the rate limit counter
|
|
19
|
+
* Format: <endpoint>:<identifier> (e.g., "email-verification:user:123")
|
|
20
|
+
*/
|
|
21
|
+
key!: string;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Counter value (stored as string, parsed as integer)
|
|
25
|
+
*/
|
|
26
|
+
value!: string;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Expiration timestamp
|
|
30
|
+
* Used for TTL-based cleanup via scheduled jobs
|
|
31
|
+
* Can be null for records that don't expire immediately
|
|
32
|
+
*/
|
|
33
|
+
expiresAt!: Date | null;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Record creation timestamp
|
|
37
|
+
*/
|
|
38
|
+
createdAt!: Date;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Record last update timestamp
|
|
42
|
+
*/
|
|
43
|
+
updatedAt!: Date;
|
|
44
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Session Entity
|
|
3
|
+
*
|
|
4
|
+
* JWT session tracking with device information and security features.
|
|
5
|
+
* Database adapters extend this class and add ORM-specific decorators.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This class is database-agnostic. TypeORM, Prisma, or other ORMs
|
|
9
|
+
* extend this class in their respective packages.
|
|
10
|
+
*/
|
|
11
|
+
export class BaseSession {
|
|
12
|
+
/**
|
|
13
|
+
* Internal session ID (auto-increment integer)
|
|
14
|
+
*/
|
|
15
|
+
id!: number;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Version for optimistic locking
|
|
19
|
+
* Automatically incremented on each update by the ORM
|
|
20
|
+
* Used to detect race conditions and concurrent modifications
|
|
21
|
+
*
|
|
22
|
+
* ⚠️ SECURITY CRITICAL: Prevents TOCTOU vulnerabilities
|
|
23
|
+
*/
|
|
24
|
+
version!: number;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Internal user ID (foreign key to users table)
|
|
28
|
+
* Uses integer for optimal performance in joins and lookups
|
|
29
|
+
*/
|
|
30
|
+
userId!: number;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Access token hash (SHA-256)
|
|
34
|
+
* Used for token revocation and session tracking
|
|
35
|
+
*/
|
|
36
|
+
accessTokenHash!: string;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Refresh token hash (SHA-256)
|
|
40
|
+
* Used for token rotation and reuse detection
|
|
41
|
+
*/
|
|
42
|
+
refreshTokenHash!: string;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Token family identifier
|
|
46
|
+
* Used for refresh token rotation and reuse detection
|
|
47
|
+
*/
|
|
48
|
+
tokenFamily?: string | null;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Device identifier (UUID)
|
|
52
|
+
* Unique identifier for the device/browser
|
|
53
|
+
*/
|
|
54
|
+
deviceId?: string | null;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* User-friendly device name
|
|
58
|
+
* Examples: "iPhone 15 Pro", "Chrome on MacBook"
|
|
59
|
+
*/
|
|
60
|
+
deviceName?: string | null;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Device type
|
|
64
|
+
* Examples: "mobile", "desktop", "tablet"
|
|
65
|
+
*/
|
|
66
|
+
deviceType?: string | null;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Device fingerprint hash
|
|
70
|
+
* Combination of device characteristics for additional security
|
|
71
|
+
*/
|
|
72
|
+
deviceFingerprint?: string | null;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* IP address when session was created
|
|
76
|
+
*/
|
|
77
|
+
ipAddress?: string | null;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Country from IP geolocation (optional)
|
|
81
|
+
*/
|
|
82
|
+
ipCountry?: string | null;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* City from IP geolocation (optional)
|
|
86
|
+
*/
|
|
87
|
+
ipCity?: string | null;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Latitude from IP geolocation (optional)
|
|
91
|
+
* Used for impossible travel detection
|
|
92
|
+
*/
|
|
93
|
+
ipLatitude?: number | null;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Longitude from IP geolocation (optional)
|
|
97
|
+
* Used for impossible travel detection
|
|
98
|
+
*/
|
|
99
|
+
ipLongitude?: number | null;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* ISP from IP geolocation (optional)
|
|
103
|
+
*/
|
|
104
|
+
ipIsp?: string | null;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* User agent string
|
|
108
|
+
*/
|
|
109
|
+
userAgent?: string | null;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Platform extracted from user agent
|
|
113
|
+
* Examples: "iOS", "Android", "Windows", "macOS"
|
|
114
|
+
*/
|
|
115
|
+
platform?: string | null;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Browser extracted from user agent
|
|
119
|
+
* Examples: "Chrome", "Safari", "Firefox"
|
|
120
|
+
*/
|
|
121
|
+
browser?: string | null;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Authentication method used to create this session
|
|
125
|
+
* Examples: "password", "google", "facebook", "github", "apple"
|
|
126
|
+
* null for legacy sessions
|
|
127
|
+
*/
|
|
128
|
+
authMethod?: string | null;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* "Remember me" flag
|
|
132
|
+
* Longer expiration for remembered sessions
|
|
133
|
+
*/
|
|
134
|
+
isRemembered!: boolean;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Trusted device flag
|
|
138
|
+
* Trusted devices may skip MFA
|
|
139
|
+
*/
|
|
140
|
+
isTrustedDevice!: boolean;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Session expiration timestamp
|
|
144
|
+
* After this time, session is invalid
|
|
145
|
+
*/
|
|
146
|
+
expiresAt!: Date;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Last activity timestamp
|
|
150
|
+
* Updated on each API request
|
|
151
|
+
*/
|
|
152
|
+
lastActivityAt?: Date | null;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Session revocation status
|
|
156
|
+
* Revoked sessions cannot be used
|
|
157
|
+
*/
|
|
158
|
+
isRevoked!: boolean;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* When session was revoked
|
|
162
|
+
*/
|
|
163
|
+
revokedAt?: Date | null;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Reason for session revocation
|
|
167
|
+
* Examples: "user_logout", "token_reuse_detected", "admin_revoked"
|
|
168
|
+
*/
|
|
169
|
+
revokeReason?: string | null;
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Additional session metadata (JSON)
|
|
173
|
+
*/
|
|
174
|
+
metadata?: Record<string, unknown> | null;
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Session creation timestamp
|
|
178
|
+
*/
|
|
179
|
+
createdAt!: Date;
|
|
180
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Social Account Entity
|
|
3
|
+
*
|
|
4
|
+
* Stores OAuth provider linkage (no token storage, one-time attribute import).
|
|
5
|
+
* Each record represents a user's account linked to a specific social provider.
|
|
6
|
+
* Database adapters extend this class and add ORM-specific decorators.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* This class is database-agnostic. TypeORM, Prisma, or other ORMs
|
|
10
|
+
* extend this class in their respective packages.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // User has Google and Apple accounts linked
|
|
15
|
+
* const socialAccounts = [
|
|
16
|
+
* { provider: 'google', providerId: 'google_123', providerEmail: 'user@gmail.com' },
|
|
17
|
+
* { provider: 'apple', providerId: 'apple_456', providerEmail: 'user@icloud.com' }
|
|
18
|
+
* ];
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export class BaseSocialAccount {
|
|
22
|
+
/**
|
|
23
|
+
* Internal database ID (auto-increment integer)
|
|
24
|
+
* Used for foreign key relationships and internal queries
|
|
25
|
+
* NOT exposed externally
|
|
26
|
+
*/
|
|
27
|
+
id!: number;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Foreign key to users table
|
|
31
|
+
* References the user who owns this social account
|
|
32
|
+
*/
|
|
33
|
+
userId!: number;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Social provider name
|
|
37
|
+
* Examples: 'google', 'apple', 'facebook'
|
|
38
|
+
*/
|
|
39
|
+
provider!: string;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Provider's unique identifier for this user
|
|
43
|
+
* This is the ID that the OAuth provider uses to identify the user
|
|
44
|
+
* Examples: Google sub, Apple user ID, Facebook ID
|
|
45
|
+
*/
|
|
46
|
+
providerId!: string;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Email address from the provider (for audit/debugging)
|
|
50
|
+
* May be different from user's primary email if they have multiple emails
|
|
51
|
+
* Used for account linking by email verification
|
|
52
|
+
*/
|
|
53
|
+
providerEmail?: string | null;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* When this social account was linked to the user
|
|
57
|
+
* Used for audit trails and account management
|
|
58
|
+
*/
|
|
59
|
+
linkedAt!: Date;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* When this social account was last used for authentication
|
|
63
|
+
* Updated on each successful social login
|
|
64
|
+
* Used for analytics and account cleanup
|
|
65
|
+
*/
|
|
66
|
+
lastUsedAt?: Date | null;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Raw OAuth profile data from provider (for debugging)
|
|
70
|
+
* Contains the full response from the OAuth provider
|
|
71
|
+
* Useful for troubleshooting and attribute mapping
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```json
|
|
75
|
+
* {
|
|
76
|
+
* "sub": "google_123",
|
|
77
|
+
* "email": "user@gmail.com",
|
|
78
|
+
* "given_name": "John",
|
|
79
|
+
* "family_name": "Doe",
|
|
80
|
+
* "picture": "https://...",
|
|
81
|
+
* "locale": "en"
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
metadata?: Record<string, unknown> | null;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Account creation timestamp
|
|
89
|
+
*/
|
|
90
|
+
createdAt!: Date;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Last account update timestamp
|
|
94
|
+
*/
|
|
95
|
+
updatedAt!: Date;
|
|
96
|
+
}
|