@nauth-toolkit/core 0.1.14 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/database-columns.d.ts +70 -0
- package/dist/adapters/database-columns.d.ts.map +1 -1
- package/dist/adapters/database-columns.js +76 -2
- package/dist/adapters/database-columns.js.map +1 -1
- package/dist/adapters/express.adapter.d.ts +66 -0
- package/dist/adapters/express.adapter.d.ts.map +1 -1
- package/dist/adapters/express.adapter.js +80 -0
- package/dist/adapters/express.adapter.js.map +1 -1
- package/dist/adapters/fastify.adapter.d.ts +42 -0
- package/dist/adapters/fastify.adapter.d.ts.map +1 -1
- package/dist/adapters/fastify.adapter.js +86 -0
- package/dist/adapters/fastify.adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/storage.factory.d.ts +107 -0
- package/dist/adapters/storage.factory.d.ts.map +1 -1
- package/dist/adapters/storage.factory.js +114 -0
- package/dist/adapters/storage.factory.js.map +1 -1
- package/dist/adapters.d.ts +8 -0
- package/dist/adapters.d.ts.map +1 -1
- package/dist/adapters.js +8 -0
- package/dist/adapters.js.map +1 -1
- package/dist/bootstrap.d.ts +82 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +106 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/dto/admin-set-password.dto.d.ts +90 -0
- package/dist/dto/admin-set-password.dto.d.ts.map +1 -1
- package/dist/dto/admin-set-password.dto.js +91 -0
- package/dist/dto/admin-set-password.dto.js.map +1 -1
- package/dist/dto/auth-challenge.dto.d.ts +170 -0
- package/dist/dto/auth-challenge.dto.d.ts.map +1 -1
- package/dist/dto/auth-challenge.dto.js +170 -0
- package/dist/dto/auth-challenge.dto.js.map +1 -1
- package/dist/dto/auth-response.dto.d.ts +196 -0
- package/dist/dto/auth-response.dto.d.ts.map +1 -1
- package/dist/dto/auth-response.dto.js +149 -0
- package/dist/dto/auth-response.dto.js.map +1 -1
- package/dist/dto/challenge-response.dto.d.ts +155 -0
- package/dist/dto/challenge-response.dto.d.ts.map +1 -1
- package/dist/dto/challenge-response.dto.js +8 -0
- package/dist/dto/challenge-response.dto.js.map +1 -1
- package/dist/dto/change-password-request.dto.d.ts +35 -0
- package/dist/dto/change-password-request.dto.d.ts.map +1 -1
- package/dist/dto/change-password-request.dto.js +35 -0
- package/dist/dto/change-password-request.dto.js.map +1 -1
- package/dist/dto/change-password-response.dto.d.ts +25 -0
- package/dist/dto/change-password-response.dto.d.ts.map +1 -1
- package/dist/dto/change-password-response.dto.js +25 -0
- package/dist/dto/change-password-response.dto.js.map +1 -1
- package/dist/dto/change-password.dto.d.ts +45 -0
- package/dist/dto/change-password.dto.d.ts.map +1 -1
- package/dist/dto/change-password.dto.js +45 -0
- package/dist/dto/change-password.dto.js.map +1 -1
- package/dist/dto/confirm-forgot-password.dto.d.ts +59 -0
- package/dist/dto/confirm-forgot-password.dto.d.ts.map +1 -1
- package/dist/dto/confirm-forgot-password.dto.js +59 -0
- package/dist/dto/confirm-forgot-password.dto.js.map +1 -1
- package/dist/dto/error-response.dto.d.ts +103 -0
- package/dist/dto/error-response.dto.d.ts.map +1 -1
- package/dist/dto/error-response.dto.js +103 -0
- package/dist/dto/error-response.dto.js.map +1 -1
- package/dist/dto/forgot-password.dto.d.ts +58 -0
- package/dist/dto/forgot-password.dto.d.ts.map +1 -1
- package/dist/dto/forgot-password.dto.js +58 -0
- package/dist/dto/forgot-password.dto.js.map +1 -1
- package/dist/dto/get-available-methods.dto.d.ts +37 -0
- package/dist/dto/get-available-methods.dto.d.ts.map +1 -1
- package/dist/dto/get-available-methods.dto.js +37 -0
- package/dist/dto/get-available-methods.dto.js.map +1 -1
- package/dist/dto/get-challenge-data-response.dto.d.ts +24 -0
- package/dist/dto/get-challenge-data-response.dto.d.ts.map +1 -1
- package/dist/dto/get-challenge-data-response.dto.js +24 -0
- package/dist/dto/get-challenge-data-response.dto.js.map +1 -1
- package/dist/dto/get-challenge-data.dto.d.ts +46 -0
- package/dist/dto/get-challenge-data.dto.d.ts.map +1 -1
- package/dist/dto/get-challenge-data.dto.js +46 -0
- package/dist/dto/get-challenge-data.dto.js.map +1 -1
- package/dist/dto/get-client-info.dto.d.ts +74 -0
- package/dist/dto/get-client-info.dto.d.ts.map +1 -1
- package/dist/dto/get-client-info.dto.js +74 -0
- package/dist/dto/get-client-info.dto.js.map +1 -1
- package/dist/dto/get-device-token-response.dto.d.ts +21 -0
- package/dist/dto/get-device-token-response.dto.d.ts.map +1 -1
- package/dist/dto/get-device-token-response.dto.js +21 -0
- package/dist/dto/get-device-token-response.dto.js.map +1 -1
- package/dist/dto/get-events-by-type.dto.d.ts +50 -0
- package/dist/dto/get-events-by-type.dto.d.ts.map +1 -1
- package/dist/dto/get-events-by-type.dto.js +50 -0
- package/dist/dto/get-events-by-type.dto.js.map +1 -1
- package/dist/dto/get-ip-address-response.dto.d.ts +20 -0
- package/dist/dto/get-ip-address-response.dto.d.ts.map +1 -1
- package/dist/dto/get-ip-address-response.dto.js +20 -0
- package/dist/dto/get-ip-address-response.dto.js.map +1 -1
- package/dist/dto/get-mfa-status.dto.d.ts +59 -0
- package/dist/dto/get-mfa-status.dto.d.ts.map +1 -1
- package/dist/dto/get-mfa-status.dto.js +59 -0
- package/dist/dto/get-mfa-status.dto.js.map +1 -1
- package/dist/dto/get-risk-assessment-history.dto.d.ts +28 -0
- package/dist/dto/get-risk-assessment-history.dto.d.ts.map +1 -1
- package/dist/dto/get-risk-assessment-history.dto.js +28 -0
- package/dist/dto/get-risk-assessment-history.dto.js.map +1 -1
- package/dist/dto/get-session-id-response.dto.d.ts +21 -0
- package/dist/dto/get-session-id-response.dto.d.ts.map +1 -1
- package/dist/dto/get-session-id-response.dto.js +21 -0
- package/dist/dto/get-session-id-response.dto.js.map +1 -1
- package/dist/dto/get-setup-data-response.dto.d.ts +27 -0
- package/dist/dto/get-setup-data-response.dto.d.ts.map +1 -1
- package/dist/dto/get-setup-data-response.dto.js +27 -0
- package/dist/dto/get-setup-data-response.dto.js.map +1 -1
- package/dist/dto/get-setup-data.dto.d.ts +51 -0
- package/dist/dto/get-setup-data.dto.d.ts.map +1 -1
- package/dist/dto/get-setup-data.dto.js +51 -0
- package/dist/dto/get-setup-data.dto.js.map +1 -1
- package/dist/dto/get-suspicious-activity.dto.d.ts +31 -0
- package/dist/dto/get-suspicious-activity.dto.d.ts.map +1 -1
- package/dist/dto/get-suspicious-activity.dto.js +31 -0
- package/dist/dto/get-suspicious-activity.dto.js.map +1 -1
- package/dist/dto/get-user-agent-response.dto.d.ts +19 -0
- package/dist/dto/get-user-agent-response.dto.d.ts.map +1 -1
- package/dist/dto/get-user-agent-response.dto.js +19 -0
- package/dist/dto/get-user-agent-response.dto.js.map +1 -1
- package/dist/dto/get-user-auth-history.dto.d.ts +64 -0
- package/dist/dto/get-user-auth-history.dto.d.ts.map +1 -1
- package/dist/dto/get-user-auth-history.dto.js +64 -0
- package/dist/dto/get-user-auth-history.dto.js.map +1 -1
- package/dist/dto/get-user-by-email.dto.d.ts +42 -0
- package/dist/dto/get-user-by-email.dto.d.ts.map +1 -1
- package/dist/dto/get-user-by-email.dto.js +42 -0
- package/dist/dto/get-user-by-email.dto.js.map +1 -1
- package/dist/dto/get-user-by-id.dto.d.ts +32 -0
- package/dist/dto/get-user-by-id.dto.d.ts.map +1 -1
- package/dist/dto/get-user-by-id.dto.js +32 -0
- package/dist/dto/get-user-by-id.dto.js.map +1 -1
- package/dist/dto/get-user-devices.dto.d.ts +34 -0
- package/dist/dto/get-user-devices.dto.d.ts.map +1 -1
- package/dist/dto/get-user-devices.dto.js +34 -0
- package/dist/dto/get-user-devices.dto.js.map +1 -1
- package/dist/dto/get-user-response.dto.d.ts +14 -0
- package/dist/dto/get-user-response.dto.d.ts.map +1 -1
- package/dist/dto/get-user-response.dto.js +15 -0
- package/dist/dto/get-user-response.dto.js.map +1 -1
- package/dist/dto/has-provider.dto.d.ts +33 -0
- package/dist/dto/has-provider.dto.d.ts.map +1 -1
- package/dist/dto/has-provider.dto.js +33 -0
- package/dist/dto/has-provider.dto.js.map +1 -1
- package/dist/dto/index.js +5 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/dto/is-trusted-device-response.dto.d.ts +28 -0
- package/dist/dto/is-trusted-device-response.dto.d.ts.map +1 -1
- package/dist/dto/is-trusted-device-response.dto.js +28 -0
- package/dist/dto/is-trusted-device-response.dto.js.map +1 -1
- package/dist/dto/list-providers-response.dto.d.ts +19 -0
- package/dist/dto/list-providers-response.dto.d.ts.map +1 -1
- package/dist/dto/list-providers-response.dto.js +19 -0
- package/dist/dto/list-providers-response.dto.js.map +1 -1
- package/dist/dto/login.dto.d.ts +48 -0
- package/dist/dto/login.dto.d.ts.map +1 -1
- package/dist/dto/login.dto.js +50 -1
- package/dist/dto/login.dto.js.map +1 -1
- package/dist/dto/logout-all-response.dto.d.ts +20 -0
- package/dist/dto/logout-all-response.dto.d.ts.map +1 -1
- package/dist/dto/logout-all-response.dto.js +20 -0
- package/dist/dto/logout-all-response.dto.js.map +1 -1
- package/dist/dto/logout-all.dto.d.ts +42 -0
- package/dist/dto/logout-all.dto.d.ts.map +1 -1
- package/dist/dto/logout-all.dto.js +42 -0
- package/dist/dto/logout-all.dto.js.map +1 -1
- package/dist/dto/logout-response.dto.d.ts +21 -0
- package/dist/dto/logout-response.dto.d.ts.map +1 -1
- package/dist/dto/logout-response.dto.js +21 -0
- package/dist/dto/logout-response.dto.js.map +1 -1
- package/dist/dto/logout.dto.d.ts +45 -0
- package/dist/dto/logout.dto.d.ts.map +1 -1
- package/dist/dto/logout.dto.js +45 -0
- package/dist/dto/logout.dto.js.map +1 -1
- package/dist/dto/refresh-token.dto.d.ts +28 -0
- package/dist/dto/refresh-token.dto.d.ts.map +1 -1
- package/dist/dto/refresh-token.dto.js +28 -0
- package/dist/dto/refresh-token.dto.js.map +1 -1
- package/dist/dto/remove-devices.dto.d.ts +51 -0
- package/dist/dto/remove-devices.dto.d.ts.map +1 -1
- package/dist/dto/remove-devices.dto.js +51 -0
- package/dist/dto/remove-devices.dto.js.map +1 -1
- package/dist/dto/resend-code-response.dto.d.ts +28 -0
- package/dist/dto/resend-code-response.dto.d.ts.map +1 -1
- package/dist/dto/resend-code-response.dto.js +28 -0
- package/dist/dto/resend-code-response.dto.js.map +1 -1
- package/dist/dto/resend-code.dto.d.ts +37 -0
- package/dist/dto/resend-code.dto.d.ts.map +1 -1
- package/dist/dto/resend-code.dto.js +37 -0
- package/dist/dto/resend-code.dto.js.map +1 -1
- package/dist/dto/reset-password.dto.d.ts +74 -0
- package/dist/dto/reset-password.dto.d.ts.map +1 -1
- package/dist/dto/reset-password.dto.js +76 -1
- package/dist/dto/reset-password.dto.js.map +1 -1
- package/dist/dto/respond-challenge.dto.d.ts +147 -0
- package/dist/dto/respond-challenge.dto.d.ts.map +1 -1
- package/dist/dto/respond-challenge.dto.js +162 -0
- package/dist/dto/respond-challenge.dto.js.map +1 -1
- package/dist/dto/set-mfa-exemption.dto.d.ts +65 -0
- package/dist/dto/set-mfa-exemption.dto.d.ts.map +1 -1
- package/dist/dto/set-mfa-exemption.dto.js +65 -0
- package/dist/dto/set-mfa-exemption.dto.js.map +1 -1
- package/dist/dto/set-must-change-password-response.dto.d.ts +23 -0
- package/dist/dto/set-must-change-password-response.dto.d.ts.map +1 -1
- package/dist/dto/set-must-change-password-response.dto.js +23 -0
- package/dist/dto/set-must-change-password-response.dto.js.map +1 -1
- package/dist/dto/set-must-change-password.dto.d.ts +32 -0
- package/dist/dto/set-must-change-password.dto.d.ts.map +1 -1
- package/dist/dto/set-must-change-password.dto.js +32 -0
- package/dist/dto/set-must-change-password.dto.js.map +1 -1
- package/dist/dto/set-preferred-method.dto.d.ts +48 -0
- package/dist/dto/set-preferred-method.dto.d.ts.map +1 -1
- package/dist/dto/set-preferred-method.dto.js +48 -0
- package/dist/dto/set-preferred-method.dto.js.map +1 -1
- package/dist/dto/setup-mfa.dto.d.ts +62 -0
- package/dist/dto/setup-mfa.dto.d.ts.map +1 -1
- package/dist/dto/setup-mfa.dto.js +62 -0
- package/dist/dto/setup-mfa.dto.js.map +1 -1
- package/dist/dto/signup.dto.d.ts +92 -0
- package/dist/dto/signup.dto.d.ts.map +1 -1
- package/dist/dto/signup.dto.js +93 -0
- package/dist/dto/signup.dto.js.map +1 -1
- package/dist/dto/social-auth.dto.d.ts +234 -0
- package/dist/dto/social-auth.dto.d.ts.map +1 -1
- package/dist/dto/social-auth.dto.js +234 -0
- package/dist/dto/social-auth.dto.js.map +1 -1
- package/dist/dto/trust-device-response.dto.d.ts +26 -0
- package/dist/dto/trust-device-response.dto.d.ts.map +1 -1
- package/dist/dto/trust-device-response.dto.js +26 -0
- package/dist/dto/trust-device-response.dto.js.map +1 -1
- package/dist/dto/trust-device.dto.d.ts +9 -0
- package/dist/dto/trust-device.dto.d.ts.map +1 -1
- package/dist/dto/trust-device.dto.js +9 -0
- package/dist/dto/trust-device.dto.js.map +1 -1
- package/dist/dto/update-user-attributes-request.dto.d.ts +36 -0
- package/dist/dto/update-user-attributes-request.dto.d.ts.map +1 -1
- package/dist/dto/update-user-attributes-request.dto.js +36 -0
- package/dist/dto/update-user-attributes-request.dto.js.map +1 -1
- package/dist/dto/user-response.dto.d.ts +81 -0
- package/dist/dto/user-response.dto.d.ts.map +1 -1
- package/dist/dto/user-response.dto.js +84 -2
- package/dist/dto/user-response.dto.js.map +1 -1
- package/dist/dto/user-update.dto.d.ts +132 -0
- package/dist/dto/user-update.dto.d.ts.map +1 -1
- package/dist/dto/user-update.dto.js +133 -0
- package/dist/dto/user-update.dto.js.map +1 -1
- package/dist/dto/verify-email.dto.d.ts +171 -0
- package/dist/dto/verify-email.dto.d.ts.map +1 -1
- package/dist/dto/verify-email.dto.js +173 -1
- package/dist/dto/verify-email.dto.js.map +1 -1
- package/dist/dto/verify-mfa-code.dto.d.ts +65 -0
- package/dist/dto/verify-mfa-code.dto.d.ts.map +1 -1
- package/dist/dto/verify-mfa-code.dto.js +65 -0
- package/dist/dto/verify-mfa-code.dto.js.map +1 -1
- package/dist/dto/verify-phone-by-sub.dto.d.ts +49 -0
- package/dist/dto/verify-phone-by-sub.dto.d.ts.map +1 -1
- package/dist/dto/verify-phone-by-sub.dto.js +49 -0
- package/dist/dto/verify-phone-by-sub.dto.js.map +1 -1
- package/dist/dto/verify-phone.dto.d.ts +139 -0
- package/dist/dto/verify-phone.dto.d.ts.map +1 -1
- package/dist/dto/verify-phone.dto.js +142 -1
- package/dist/dto/verify-phone.dto.js.map +1 -1
- package/dist/dto.d.ts +10 -0
- package/dist/dto.d.ts.map +1 -1
- package/dist/dto.js +10 -0
- package/dist/dto.js.map +1 -1
- package/dist/entities/auth-audit.entity.d.ts +159 -0
- package/dist/entities/auth-audit.entity.d.ts.map +1 -1
- package/dist/entities/auth-audit.entity.js +166 -0
- package/dist/entities/auth-audit.entity.js.map +1 -1
- package/dist/entities/challenge-session.entity.d.ts +87 -0
- package/dist/entities/challenge-session.entity.d.ts.map +1 -1
- package/dist/entities/challenge-session.entity.js +87 -0
- package/dist/entities/challenge-session.entity.js.map +1 -1
- package/dist/entities/index.d.ts +18 -0
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +18 -0
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/login-attempt.entity.d.ts +43 -0
- package/dist/entities/login-attempt.entity.d.ts.map +1 -1
- package/dist/entities/login-attempt.entity.js +43 -0
- package/dist/entities/login-attempt.entity.js.map +1 -1
- package/dist/entities/mfa-device.entity.d.ts +112 -0
- package/dist/entities/mfa-device.entity.d.ts.map +1 -1
- package/dist/entities/mfa-device.entity.js +112 -0
- package/dist/entities/mfa-device.entity.js.map +1 -1
- package/dist/entities/rate-limit.entity.d.ts +31 -0
- package/dist/entities/rate-limit.entity.d.ts.map +1 -1
- package/dist/entities/rate-limit.entity.js +31 -0
- package/dist/entities/rate-limit.entity.js.map +1 -1
- package/dist/entities/session.entity.d.ts +121 -0
- package/dist/entities/session.entity.d.ts.map +1 -1
- package/dist/entities/session.entity.js +121 -0
- package/dist/entities/session.entity.js.map +1 -1
- package/dist/entities/social-account.entity.d.ts +75 -0
- package/dist/entities/social-account.entity.d.ts.map +1 -1
- package/dist/entities/social-account.entity.js +75 -0
- package/dist/entities/social-account.entity.js.map +1 -1
- package/dist/entities/storage-lock.entity.d.ts +28 -0
- package/dist/entities/storage-lock.entity.d.ts.map +1 -1
- package/dist/entities/storage-lock.entity.js +28 -0
- package/dist/entities/storage-lock.entity.js.map +1 -1
- package/dist/entities/trusted-device.entity.d.ts +83 -0
- package/dist/entities/trusted-device.entity.d.ts.map +1 -1
- package/dist/entities/trusted-device.entity.js +83 -0
- package/dist/entities/trusted-device.entity.js.map +1 -1
- package/dist/entities/user.entity.d.ts +166 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +166 -0
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/verification-token.entity.d.ts +102 -0
- package/dist/entities/verification-token.entity.d.ts.map +1 -1
- package/dist/entities/verification-token.entity.js +102 -0
- package/dist/entities/verification-token.entity.js.map +1 -1
- package/dist/entities.d.ts +8 -0
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +8 -0
- package/dist/entities.js.map +1 -1
- package/dist/enums/auth-audit-event-type.enum.d.ts +211 -0
- package/dist/enums/auth-audit-event-type.enum.d.ts.map +1 -1
- package/dist/enums/auth-audit-event-type.enum.js +244 -0
- package/dist/enums/auth-audit-event-type.enum.js.map +1 -1
- package/dist/enums/error-codes.enum.d.ts +296 -0
- package/dist/enums/error-codes.enum.d.ts.map +1 -1
- package/dist/enums/error-codes.enum.js +332 -0
- package/dist/enums/error-codes.enum.js.map +1 -1
- package/dist/enums/mfa-method.enum.d.ts +74 -0
- package/dist/enums/mfa-method.enum.d.ts.map +1 -1
- package/dist/enums/mfa-method.enum.js +64 -0
- package/dist/enums/mfa-method.enum.js.map +1 -1
- package/dist/enums/risk-factor.enum.d.ts +91 -0
- package/dist/enums/risk-factor.enum.d.ts.map +1 -1
- package/dist/enums/risk-factor.enum.js +97 -0
- package/dist/enums/risk-factor.enum.js.map +1 -1
- package/dist/exceptions/nauth.exception.d.ts +149 -0
- package/dist/exceptions/nauth.exception.d.ts.map +1 -1
- package/dist/exceptions/nauth.exception.js +159 -0
- package/dist/exceptions/nauth.exception.js.map +1 -1
- package/dist/handlers/auth.handler.d.ts +32 -0
- package/dist/handlers/auth.handler.d.ts.map +1 -1
- package/dist/handlers/auth.handler.js +47 -1
- package/dist/handlers/auth.handler.js.map +1 -1
- package/dist/handlers/client-info.handler.d.ts +25 -0
- package/dist/handlers/client-info.handler.d.ts.map +1 -1
- package/dist/handlers/client-info.handler.js +36 -2
- package/dist/handlers/client-info.handler.js.map +1 -1
- package/dist/handlers/csrf.handler.d.ts +32 -0
- package/dist/handlers/csrf.handler.d.ts.map +1 -1
- package/dist/handlers/csrf.handler.js +49 -1
- package/dist/handlers/csrf.handler.js.map +1 -1
- package/dist/handlers/token-delivery.handler.d.ts +16 -0
- package/dist/handlers/token-delivery.handler.d.ts.map +1 -1
- package/dist/handlers/token-delivery.handler.js +22 -1
- package/dist/handlers/token-delivery.handler.js.map +1 -1
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/client-info.interface.d.ts +58 -0
- package/dist/interfaces/client-info.interface.d.ts.map +1 -1
- package/dist/interfaces/config.interface.d.ts +1780 -0
- package/dist/interfaces/config.interface.d.ts.map +1 -1
- package/dist/interfaces/config.interface.js +16 -0
- package/dist/interfaces/config.interface.js.map +1 -1
- package/dist/interfaces/entities.interface.d.ts +48 -0
- package/dist/interfaces/entities.interface.d.ts.map +1 -1
- package/dist/interfaces/entities.interface.js +8 -0
- package/dist/interfaces/entities.interface.js.map +1 -1
- package/dist/interfaces/index.js +5 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/logger.interface.d.ts +213 -0
- package/dist/interfaces/logger.interface.d.ts.map +1 -1
- package/dist/interfaces/logger.interface.js +35 -0
- package/dist/interfaces/logger.interface.js.map +1 -1
- package/dist/interfaces/mfa-provider.interface.d.ts +134 -0
- package/dist/interfaces/mfa-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/oauth.interface.d.ts +110 -0
- package/dist/interfaces/oauth.interface.d.ts.map +1 -1
- package/dist/interfaces/provider.interface.d.ts +83 -0
- package/dist/interfaces/provider.interface.d.ts.map +1 -1
- package/dist/interfaces/sms-template.interface.d.ts +246 -0
- package/dist/interfaces/sms-template.interface.d.ts.map +1 -1
- package/dist/interfaces/sms-template.interface.js +26 -0
- package/dist/interfaces/sms-template.interface.js.map +1 -1
- package/dist/interfaces/social-auth-provider.interface.d.ts +115 -0
- package/dist/interfaces/social-auth-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/storage-adapter.interface.d.ts +37 -0
- package/dist/interfaces/storage-adapter.interface.d.ts.map +1 -1
- package/dist/interfaces/template.interface.d.ts +351 -0
- package/dist/interfaces/template.interface.d.ts.map +1 -1
- package/dist/interfaces/template.interface.js +13 -0
- package/dist/interfaces/template.interface.js.map +1 -1
- package/dist/interfaces/token-verifier.interface.d.ts +101 -0
- package/dist/interfaces/token-verifier.interface.d.ts.map +1 -1
- package/dist/interfaces.d.ts +8 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +8 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/internal.d.ts +120 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +138 -0
- package/dist/internal.js.map +1 -1
- package/dist/platform/interfaces.d.ts +187 -0
- package/dist/platform/interfaces.d.ts.map +1 -1
- package/dist/platform/interfaces.js +11 -0
- package/dist/platform/interfaces.js.map +1 -1
- package/dist/schemas/auth-config.schema.d.ts +62 -0
- package/dist/schemas/auth-config.schema.d.ts.map +1 -1
- package/dist/schemas/auth-config.schema.js +189 -9
- package/dist/schemas/auth-config.schema.js.map +1 -1
- package/dist/services/adaptive-mfa-decision.service.d.ts +144 -0
- package/dist/services/adaptive-mfa-decision.service.d.ts.map +1 -1
- package/dist/services/adaptive-mfa-decision.service.js +151 -5
- package/dist/services/adaptive-mfa-decision.service.js.map +1 -1
- package/dist/services/auth-audit.service.d.ts +195 -0
- package/dist/services/auth-audit.service.d.ts.map +1 -1
- package/dist/services/auth-audit.service.js +228 -1
- package/dist/services/auth-audit.service.js.map +1 -1
- package/dist/services/auth-challenge-helper.service.d.ts +144 -1
- package/dist/services/auth-challenge-helper.service.d.ts.map +1 -1
- package/dist/services/auth-challenge-helper.service.js +295 -16
- package/dist/services/auth-challenge-helper.service.js.map +1 -1
- package/dist/services/auth-flow-context-builder.service.d.ts +120 -1
- package/dist/services/auth-flow-context-builder.service.d.ts.map +1 -1
- package/dist/services/auth-flow-context-builder.service.js +184 -5
- package/dist/services/auth-flow-context-builder.service.js.map +1 -1
- package/dist/services/auth-flow-rules.d.ts +136 -0
- package/dist/services/auth-flow-rules.d.ts.map +1 -1
- package/dist/services/auth-flow-rules.js +137 -0
- package/dist/services/auth-flow-rules.js.map +1 -1
- package/dist/services/auth-flow-state-definitions.d.ts +40 -0
- package/dist/services/auth-flow-state-definitions.d.ts.map +1 -1
- package/dist/services/auth-flow-state-definitions.js +98 -0
- package/dist/services/auth-flow-state-definitions.js.map +1 -1
- package/dist/services/auth-flow-state-machine.service.d.ts +91 -0
- package/dist/services/auth-flow-state-machine.service.d.ts.map +1 -1
- package/dist/services/auth-flow-state-machine.service.js +102 -0
- package/dist/services/auth-flow-state-machine.service.js.map +1 -1
- package/dist/services/auth-flow-state-machine.types.d.ts +221 -0
- package/dist/services/auth-flow-state-machine.types.d.ts.map +1 -1
- package/dist/services/auth-flow-state-machine.types.js +47 -0
- package/dist/services/auth-flow-state-machine.types.js.map +1 -1
- package/dist/services/auth.service.d.ts +397 -1
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +943 -27
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/challenge.service.d.ts +255 -1
- package/dist/services/challenge.service.d.ts.map +1 -1
- package/dist/services/challenge.service.js +327 -3
- package/dist/services/challenge.service.js.map +1 -1
- package/dist/services/client-info.service.d.ts +143 -0
- package/dist/services/client-info.service.d.ts.map +1 -1
- package/dist/services/client-info.service.js +161 -0
- package/dist/services/client-info.service.js.map +1 -1
- package/dist/services/csrf.service.d.ts +15 -0
- package/dist/services/csrf.service.d.ts.map +1 -1
- package/dist/services/csrf.service.js +16 -0
- package/dist/services/csrf.service.js.map +1 -1
- package/dist/services/email-verification.service.d.ts +52 -0
- package/dist/services/email-verification.service.d.ts.map +1 -1
- package/dist/services/email-verification.service.js +152 -12
- package/dist/services/email-verification.service.js.map +1 -1
- package/dist/services/geo-location.service.d.ts +105 -0
- package/dist/services/geo-location.service.d.ts.map +1 -1
- package/dist/services/geo-location.service.js +188 -2
- package/dist/services/geo-location.service.js.map +1 -1
- package/dist/services/jwt.service.d.ts +257 -0
- package/dist/services/jwt.service.d.ts.map +1 -1
- package/dist/services/jwt.service.js +284 -1
- package/dist/services/jwt.service.js.map +1 -1
- package/dist/services/mfa-base.service.d.ts +179 -1
- package/dist/services/mfa-base.service.d.ts.map +1 -1
- package/dist/services/mfa-base.service.js +256 -2
- package/dist/services/mfa-base.service.js.map +1 -1
- package/dist/services/mfa.service.d.ts +304 -0
- package/dist/services/mfa.service.d.ts.map +1 -1
- package/dist/services/mfa.service.js +380 -0
- package/dist/services/mfa.service.js.map +1 -1
- package/dist/services/password-reset.service.d.ts +46 -0
- package/dist/services/password-reset.service.d.ts.map +1 -1
- package/dist/services/password-reset.service.js +79 -0
- package/dist/services/password-reset.service.js.map +1 -1
- package/dist/services/password.service.d.ts +139 -0
- package/dist/services/password.service.d.ts.map +1 -1
- package/dist/services/password.service.js +167 -9
- package/dist/services/password.service.js.map +1 -1
- package/dist/services/phone-verification.service.d.ts +75 -0
- package/dist/services/phone-verification.service.d.ts.map +1 -1
- package/dist/services/phone-verification.service.js +188 -6
- package/dist/services/phone-verification.service.js.map +1 -1
- package/dist/services/risk-detection.service.d.ts +198 -0
- package/dist/services/risk-detection.service.d.ts.map +1 -1
- package/dist/services/risk-detection.service.js +358 -11
- package/dist/services/risk-detection.service.js.map +1 -1
- package/dist/services/risk-scoring.service.d.ts +84 -0
- package/dist/services/risk-scoring.service.d.ts.map +1 -1
- package/dist/services/risk-scoring.service.js +87 -0
- package/dist/services/risk-scoring.service.js.map +1 -1
- package/dist/services/session.service.d.ts +204 -0
- package/dist/services/session.service.d.ts.map +1 -1
- package/dist/services/session.service.js +289 -4
- package/dist/services/session.service.js.map +1 -1
- package/dist/services/social-auth-base.service.d.ts +123 -1
- package/dist/services/social-auth-base.service.d.ts.map +1 -1
- package/dist/services/social-auth-base.service.js +155 -2
- package/dist/services/social-auth-base.service.js.map +1 -1
- package/dist/services/social-auth.service.d.ts +191 -0
- package/dist/services/social-auth.service.d.ts.map +1 -1
- package/dist/services/social-auth.service.js +215 -2
- package/dist/services/social-auth.service.js.map +1 -1
- package/dist/services/social-provider-registry.service.d.ts +86 -0
- package/dist/services/social-provider-registry.service.d.ts.map +1 -1
- package/dist/services/social-provider-registry.service.js +86 -0
- package/dist/services/social-provider-registry.service.js.map +1 -1
- package/dist/services/trusted-device.service.d.ts +105 -0
- package/dist/services/trusted-device.service.d.ts.map +1 -1
- package/dist/services/trusted-device.service.js +133 -4
- package/dist/services/trusted-device.service.js.map +1 -1
- package/dist/storage/account-lockout-storage.service.d.ts +35 -0
- package/dist/storage/account-lockout-storage.service.d.ts.map +1 -1
- package/dist/storage/account-lockout-storage.service.js +35 -0
- package/dist/storage/account-lockout-storage.service.js.map +1 -1
- package/dist/storage/memory-storage.adapter.d.ts +148 -0
- package/dist/storage/memory-storage.adapter.d.ts.map +1 -1
- package/dist/storage/memory-storage.adapter.js +201 -6
- package/dist/storage/memory-storage.adapter.js.map +1 -1
- package/dist/storage/rate-limit-storage.service.d.ts +3 -0
- package/dist/storage/rate-limit-storage.service.d.ts.map +1 -1
- package/dist/storage/rate-limit-storage.service.js +4 -0
- package/dist/storage/rate-limit-storage.service.js.map +1 -1
- package/dist/storage.d.ts +8 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -0
- package/dist/storage.js.map +1 -1
- package/dist/templates/html-template.engine.d.ts +110 -0
- package/dist/templates/html-template.engine.d.ts.map +1 -1
- package/dist/templates/html-template.engine.js +147 -0
- package/dist/templates/html-template.engine.js.map +1 -1
- package/dist/templates/index.d.ts +5 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +5 -0
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/sms-template.engine.d.ts +151 -0
- package/dist/templates/sms-template.engine.d.ts.map +1 -1
- package/dist/templates/sms-template.engine.js +171 -0
- package/dist/templates/sms-template.engine.js.map +1 -1
- package/dist/templates.d.ts +8 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +8 -0
- package/dist/templates.js.map +1 -1
- package/dist/utils/common-passwords.d.ts +42 -0
- package/dist/utils/common-passwords.d.ts.map +1 -1
- package/dist/utils/common-passwords.js +88 -0
- package/dist/utils/common-passwords.js.map +1 -1
- package/dist/utils/context-storage.d.ts +129 -0
- package/dist/utils/context-storage.d.ts.map +1 -1
- package/dist/utils/context-storage.js +129 -0
- package/dist/utils/context-storage.js.map +1 -1
- package/dist/utils/cookie-names.util.d.ts +35 -0
- package/dist/utils/cookie-names.util.d.ts.map +1 -1
- package/dist/utils/cookie-names.util.js +37 -0
- package/dist/utils/cookie-names.util.js.map +1 -1
- package/dist/utils/cookies.util.d.ts +19 -0
- package/dist/utils/cookies.util.d.ts.map +1 -1
- package/dist/utils/cookies.util.js +30 -3
- package/dist/utils/cookies.util.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ip-extractor.d.ts +88 -0
- package/dist/utils/ip-extractor.d.ts.map +1 -1
- package/dist/utils/ip-extractor.js +109 -16
- package/dist/utils/ip-extractor.js.map +1 -1
- package/dist/utils/nauth-logger.d.ts +70 -0
- package/dist/utils/nauth-logger.d.ts.map +1 -1
- package/dist/utils/nauth-logger.js +82 -4
- package/dist/utils/nauth-logger.js.map +1 -1
- package/dist/utils/pii-redactor.d.ts +70 -0
- package/dist/utils/pii-redactor.d.ts.map +1 -1
- package/dist/utils/pii-redactor.js +102 -0
- package/dist/utils/pii-redactor.js.map +1 -1
- package/dist/utils/setup/get-repositories.d.ts +16 -0
- package/dist/utils/setup/get-repositories.d.ts.map +1 -1
- package/dist/utils/setup/get-repositories.js +21 -0
- package/dist/utils/setup/get-repositories.js.map +1 -1
- package/dist/utils/setup/init-services.d.ts +40 -1
- package/dist/utils/setup/init-services.d.ts.map +1 -1
- package/dist/utils/setup/init-services.js +98 -0
- package/dist/utils/setup/init-services.js.map +1 -1
- package/dist/utils/setup/init-social.d.ts +27 -0
- package/dist/utils/setup/init-social.d.ts.map +1 -1
- package/dist/utils/setup/init-social.js +49 -0
- package/dist/utils/setup/init-social.js.map +1 -1
- package/dist/utils/setup/init-storage.d.ts +22 -0
- package/dist/utils/setup/init-storage.d.ts.map +1 -1
- package/dist/utils/setup/init-storage.js +36 -0
- package/dist/utils/setup/init-storage.js.map +1 -1
- package/dist/utils/setup/register-mfa.d.ts +22 -0
- package/dist/utils/setup/register-mfa.d.ts.map +1 -1
- package/dist/utils/setup/register-mfa.js +41 -0
- package/dist/utils/setup/register-mfa.js.map +1 -1
- package/dist/utils/setup/run-nauth-migrations.d.ts +7 -0
- package/dist/utils/setup/run-nauth-migrations.d.ts.map +1 -1
- package/dist/utils/setup/run-nauth-migrations.js +8 -0
- package/dist/utils/setup/run-nauth-migrations.js.map +1 -1
- package/dist/utils/token-delivery-policy.d.ts +17 -0
- package/dist/utils/token-delivery-policy.d.ts.map +1 -1
- package/dist/utils/token-delivery-policy.js +17 -0
- package/dist/utils/token-delivery-policy.js.map +1 -1
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +8 -0
- package/dist/utils.js.map +1 -1
- package/dist/validators/template.validator.d.ts +80 -0
- package/dist/validators/template.validator.d.ts.map +1 -1
- package/dist/validators/template.validator.js +94 -0
- package/dist/validators/template.validator.js.map +1 -1
- package/package.json +7 -2
|
@@ -1,14 +1,157 @@
|
|
|
1
1
|
import { GetClientInfoResponseDTO, GetIpAddressResponseDTO, GetUserAgentResponseDTO, GetDeviceTokenResponseDTO, GetSessionIdResponseDTO } from '../dto';
|
|
2
|
+
/**
|
|
3
|
+
* Client Info Service
|
|
4
|
+
*
|
|
5
|
+
* Provides transparent access to client information (IP address, user agent, device info)
|
|
6
|
+
* from the current request context using async local storage.
|
|
7
|
+
*
|
|
8
|
+
* This service eliminates the need to pass IP addresses and user agents as parameters
|
|
9
|
+
* to authentication methods. The library handles this automatically, just like AWS Cognito.
|
|
10
|
+
*
|
|
11
|
+
* **Key Features:**
|
|
12
|
+
* - Transparent access to client metadata
|
|
13
|
+
* - No parameters needed in service methods
|
|
14
|
+
* - Works across async boundaries
|
|
15
|
+
* - Type-safe with TypeScript
|
|
16
|
+
* - Thread-safe with async local storage
|
|
17
|
+
* - Platform-agnostic (no framework dependencies)
|
|
18
|
+
*
|
|
19
|
+
* **Usage:**
|
|
20
|
+
* ```typescript
|
|
21
|
+
* export class AuthService {
|
|
22
|
+
* constructor(private clientInfoService: ClientInfoService) {}
|
|
23
|
+
*
|
|
24
|
+
* async login(dto: LoginDTO) {
|
|
25
|
+
* // Get client info from context (no parameters needed!)
|
|
26
|
+
* const clientInfo = this.clientInfoService.get();
|
|
27
|
+
*
|
|
28
|
+
* // Use it
|
|
29
|
+
* logger.debug('IP Address:', clientInfo.ipAddress);
|
|
30
|
+
* logger.debug('User Agent:', clientInfo.userAgent);
|
|
31
|
+
* }
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* **Note:**
|
|
36
|
+
* This service must be called within the context of an HTTP request.
|
|
37
|
+
* If called outside a request context (e.g., cron jobs, CLI), it will
|
|
38
|
+
* return a default ClientInfo object with 'unknown' values.
|
|
39
|
+
*/
|
|
2
40
|
export declare class ClientInfoService {
|
|
3
41
|
constructor();
|
|
42
|
+
/**
|
|
43
|
+
* Get client information from the current request context
|
|
44
|
+
*
|
|
45
|
+
* This method retrieves client metadata that was automatically extracted
|
|
46
|
+
* by ClientInfoInterceptor and stored in async local storage.
|
|
47
|
+
*
|
|
48
|
+
* @returns Response DTO with client information
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const result = this.clientInfoService.get();
|
|
53
|
+
* logger.debug('IP Address:', result.ipAddress); // 192.168.1.100
|
|
54
|
+
* logger.debug('User Agent:', result.userAgent); // Mozilla/5.0 ...
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // If called outside request context (e.g., cron job)
|
|
60
|
+
* const result = this.clientInfoService.get();
|
|
61
|
+
* logger.debug('IP Address:', result.ipAddress); // 'unknown'
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
4
64
|
get(): GetClientInfoResponseDTO;
|
|
65
|
+
/**
|
|
66
|
+
* Get IP address from the current request context
|
|
67
|
+
*
|
|
68
|
+
* Convenience method to get just the IP address without the full ClientInfo object.
|
|
69
|
+
*
|
|
70
|
+
* @returns Response DTO with IP address
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const result = this.clientInfoService.getIpAddress();
|
|
75
|
+
* logger.debug('IP Address:', result.ipAddress); // 192.168.1.100
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
5
78
|
getIpAddress(): GetIpAddressResponseDTO;
|
|
79
|
+
/**
|
|
80
|
+
* Get user agent from the current request context
|
|
81
|
+
*
|
|
82
|
+
* Convenience method to get just the user agent without the full ClientInfo object.
|
|
83
|
+
*
|
|
84
|
+
* @returns Response DTO with user agent
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const result = this.clientInfoService.getUserAgent();
|
|
89
|
+
* logger.debug('User Agent:', result.userAgent); // Mozilla/5.0 (Windows NT 10.0; Win64; x64)...
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
6
92
|
getUserAgent(): GetUserAgentResponseDTO;
|
|
93
|
+
/**
|
|
94
|
+
* Get device token from the current request context
|
|
95
|
+
*
|
|
96
|
+
* Convenience method to get just the device token (for trusted device feature).
|
|
97
|
+
*
|
|
98
|
+
* @returns Response DTO with device token
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* const result = this.clientInfoService.getDeviceToken();
|
|
103
|
+
* if (result.deviceToken) {
|
|
104
|
+
* logger.debug('Device token:', result.deviceToken);
|
|
105
|
+
* }
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
7
108
|
getDeviceToken(): GetDeviceTokenResponseDTO;
|
|
109
|
+
/**
|
|
110
|
+
* Get session ID from the current request context
|
|
111
|
+
*
|
|
112
|
+
* Convenience method to get just the session ID (extracted from JWT token after authentication).
|
|
113
|
+
*
|
|
114
|
+
* @returns Response DTO with session ID
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const result = this.clientInfoService.getSessionId();
|
|
119
|
+
* if (result.sessionId) {
|
|
120
|
+
* logger.debug('Session ID:', result.sessionId);
|
|
121
|
+
* }
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
8
124
|
getSessionId(): GetSessionIdResponseDTO;
|
|
125
|
+
/**
|
|
126
|
+
* Get response object from the current request context
|
|
127
|
+
*
|
|
128
|
+
* Returns the HTTP response object that was stored by the framework interceptor.
|
|
129
|
+
* Used internally by services to perform response operations like clearing cookies.
|
|
130
|
+
*
|
|
131
|
+
* @returns Response object with cookie manipulation methods, or null if not available
|
|
132
|
+
* @internal - Used by core services, not by application code
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* const response = this.clientInfoService.getResponse();
|
|
137
|
+
* if (response?.clearCookie) {
|
|
138
|
+
* response.clearCookie('my_cookie');
|
|
139
|
+
* }
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
9
142
|
getResponse(): {
|
|
10
143
|
clearCookie?: (name: string, options?: unknown) => void;
|
|
11
144
|
} | null;
|
|
145
|
+
/**
|
|
146
|
+
* Parse user-agent string to extract browser, platform, and device information
|
|
147
|
+
*
|
|
148
|
+
* This method is used internally by interceptors to populate ClientInfo.
|
|
149
|
+
* Services should use ClientInfoService.get() to access parsed information.
|
|
150
|
+
*
|
|
151
|
+
* @param userAgent - User-agent string from HTTP request
|
|
152
|
+
* @returns Parsed user-agent information
|
|
153
|
+
* @internal - Used by interceptors, not by application code
|
|
154
|
+
*/
|
|
12
155
|
parseUserAgent(userAgent?: string | null): {
|
|
13
156
|
browser: string | null;
|
|
14
157
|
platform: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-info.service.d.ts","sourceRoot":"","sources":["../../src/services/client-info.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"client-info.service.d.ts","sourceRoot":"","sources":["../../src/services/client-info.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,QAAQ,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,iBAAiB;;IAK5B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,GAAG,IAAI,wBAAwB;IAc/B;;;;;;;;;;;;OAYG;IACH,YAAY,IAAI,uBAAuB;IAMvC;;;;;;;;;;;;OAYG;IACH,YAAY,IAAI,uBAAuB;IAMvC;;;;;;;;;;;;;;OAcG;IACH,cAAc,IAAI,yBAAyB;IAM3C;;;;;;;;;;;;;;OAcG;IACH,YAAY,IAAI,uBAAuB;IAMvC;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,IAAI;QAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI;IAIjF;;;;;;;;;OASG;IACH,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;QACzC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,UAAU,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;QACnD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B;CAuJF"}
|
|
@@ -2,11 +2,73 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClientInfoService = void 0;
|
|
4
4
|
const context_storage_1 = require("../utils/context-storage");
|
|
5
|
+
/**
|
|
6
|
+
* Client Info Service
|
|
7
|
+
*
|
|
8
|
+
* Provides transparent access to client information (IP address, user agent, device info)
|
|
9
|
+
* from the current request context using async local storage.
|
|
10
|
+
*
|
|
11
|
+
* This service eliminates the need to pass IP addresses and user agents as parameters
|
|
12
|
+
* to authentication methods. The library handles this automatically, just like AWS Cognito.
|
|
13
|
+
*
|
|
14
|
+
* **Key Features:**
|
|
15
|
+
* - Transparent access to client metadata
|
|
16
|
+
* - No parameters needed in service methods
|
|
17
|
+
* - Works across async boundaries
|
|
18
|
+
* - Type-safe with TypeScript
|
|
19
|
+
* - Thread-safe with async local storage
|
|
20
|
+
* - Platform-agnostic (no framework dependencies)
|
|
21
|
+
*
|
|
22
|
+
* **Usage:**
|
|
23
|
+
* ```typescript
|
|
24
|
+
* export class AuthService {
|
|
25
|
+
* constructor(private clientInfoService: ClientInfoService) {}
|
|
26
|
+
*
|
|
27
|
+
* async login(dto: LoginDTO) {
|
|
28
|
+
* // Get client info from context (no parameters needed!)
|
|
29
|
+
* const clientInfo = this.clientInfoService.get();
|
|
30
|
+
*
|
|
31
|
+
* // Use it
|
|
32
|
+
* logger.debug('IP Address:', clientInfo.ipAddress);
|
|
33
|
+
* logger.debug('User Agent:', clientInfo.userAgent);
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* **Note:**
|
|
39
|
+
* This service must be called within the context of an HTTP request.
|
|
40
|
+
* If called outside a request context (e.g., cron jobs, CLI), it will
|
|
41
|
+
* return a default ClientInfo object with 'unknown' values.
|
|
42
|
+
*/
|
|
5
43
|
class ClientInfoService {
|
|
6
44
|
constructor() {
|
|
45
|
+
// No dependencies - uses static ContextStorage
|
|
7
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Get client information from the current request context
|
|
49
|
+
*
|
|
50
|
+
* This method retrieves client metadata that was automatically extracted
|
|
51
|
+
* by ClientInfoInterceptor and stored in async local storage.
|
|
52
|
+
*
|
|
53
|
+
* @returns Response DTO with client information
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const result = this.clientInfoService.get();
|
|
58
|
+
* logger.debug('IP Address:', result.ipAddress); // 192.168.1.100
|
|
59
|
+
* logger.debug('User Agent:', result.userAgent); // Mozilla/5.0 ...
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* // If called outside request context (e.g., cron job)
|
|
65
|
+
* const result = this.clientInfoService.get();
|
|
66
|
+
* logger.debug('IP Address:', result.ipAddress); // 'unknown'
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
8
69
|
get() {
|
|
9
70
|
const clientInfo = context_storage_1.ContextStorage.get('CLIENT_INFO');
|
|
71
|
+
// If no client info in context (e.g., cron job, CLI), return default
|
|
10
72
|
if (!clientInfo) {
|
|
11
73
|
return {
|
|
12
74
|
ipAddress: 'unknown',
|
|
@@ -15,29 +77,112 @@ class ClientInfoService {
|
|
|
15
77
|
}
|
|
16
78
|
return clientInfo;
|
|
17
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Get IP address from the current request context
|
|
82
|
+
*
|
|
83
|
+
* Convenience method to get just the IP address without the full ClientInfo object.
|
|
84
|
+
*
|
|
85
|
+
* @returns Response DTO with IP address
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const result = this.clientInfoService.getIpAddress();
|
|
90
|
+
* logger.debug('IP Address:', result.ipAddress); // 192.168.1.100
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
18
93
|
getIpAddress() {
|
|
19
94
|
return {
|
|
20
95
|
ipAddress: this.get().ipAddress,
|
|
21
96
|
};
|
|
22
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Get user agent from the current request context
|
|
100
|
+
*
|
|
101
|
+
* Convenience method to get just the user agent without the full ClientInfo object.
|
|
102
|
+
*
|
|
103
|
+
* @returns Response DTO with user agent
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const result = this.clientInfoService.getUserAgent();
|
|
108
|
+
* logger.debug('User Agent:', result.userAgent); // Mozilla/5.0 (Windows NT 10.0; Win64; x64)...
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
23
111
|
getUserAgent() {
|
|
24
112
|
return {
|
|
25
113
|
userAgent: this.get().userAgent,
|
|
26
114
|
};
|
|
27
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Get device token from the current request context
|
|
118
|
+
*
|
|
119
|
+
* Convenience method to get just the device token (for trusted device feature).
|
|
120
|
+
*
|
|
121
|
+
* @returns Response DTO with device token
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* const result = this.clientInfoService.getDeviceToken();
|
|
126
|
+
* if (result.deviceToken) {
|
|
127
|
+
* logger.debug('Device token:', result.deviceToken);
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
28
131
|
getDeviceToken() {
|
|
29
132
|
return {
|
|
30
133
|
deviceToken: this.get().deviceToken,
|
|
31
134
|
};
|
|
32
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Get session ID from the current request context
|
|
138
|
+
*
|
|
139
|
+
* Convenience method to get just the session ID (extracted from JWT token after authentication).
|
|
140
|
+
*
|
|
141
|
+
* @returns Response DTO with session ID
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* const result = this.clientInfoService.getSessionId();
|
|
146
|
+
* if (result.sessionId) {
|
|
147
|
+
* logger.debug('Session ID:', result.sessionId);
|
|
148
|
+
* }
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
33
151
|
getSessionId() {
|
|
34
152
|
return {
|
|
35
153
|
sessionId: this.get().sessionId,
|
|
36
154
|
};
|
|
37
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Get response object from the current request context
|
|
158
|
+
*
|
|
159
|
+
* Returns the HTTP response object that was stored by the framework interceptor.
|
|
160
|
+
* Used internally by services to perform response operations like clearing cookies.
|
|
161
|
+
*
|
|
162
|
+
* @returns Response object with cookie manipulation methods, or null if not available
|
|
163
|
+
* @internal - Used by core services, not by application code
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* const response = this.clientInfoService.getResponse();
|
|
168
|
+
* if (response?.clearCookie) {
|
|
169
|
+
* response.clearCookie('my_cookie');
|
|
170
|
+
* }
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
38
173
|
getResponse() {
|
|
39
174
|
return context_storage_1.ContextStorage.get('HTTP_RESPONSE') || null;
|
|
40
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Parse user-agent string to extract browser, platform, and device information
|
|
178
|
+
*
|
|
179
|
+
* This method is used internally by interceptors to populate ClientInfo.
|
|
180
|
+
* Services should use ClientInfoService.get() to access parsed information.
|
|
181
|
+
*
|
|
182
|
+
* @param userAgent - User-agent string from HTTP request
|
|
183
|
+
* @returns Parsed user-agent information
|
|
184
|
+
* @internal - Used by interceptors, not by application code
|
|
185
|
+
*/
|
|
41
186
|
parseUserAgent(userAgent) {
|
|
42
187
|
if (!userAgent || typeof userAgent !== 'string' || userAgent.trim() === '') {
|
|
43
188
|
return {
|
|
@@ -48,8 +193,13 @@ class ClientInfoService {
|
|
|
48
193
|
};
|
|
49
194
|
}
|
|
50
195
|
const ua = userAgent.toLowerCase();
|
|
196
|
+
// ============================================================================
|
|
197
|
+
// Detect Device Type
|
|
198
|
+
// ============================================================================
|
|
51
199
|
let deviceType = null;
|
|
200
|
+
// Mobile devices
|
|
52
201
|
if (/mobile|android|iphone|ipod|blackberry|opera|mini|windows\s+phone|palm|iemobile/i.test(ua)) {
|
|
202
|
+
// Tablets
|
|
53
203
|
if (/tablet|ipad|playbook|silk|kindle/i.test(ua)) {
|
|
54
204
|
deviceType = 'tablet';
|
|
55
205
|
}
|
|
@@ -60,6 +210,9 @@ class ClientInfoService {
|
|
|
60
210
|
else {
|
|
61
211
|
deviceType = 'desktop';
|
|
62
212
|
}
|
|
213
|
+
// ============================================================================
|
|
214
|
+
// Detect Platform/OS
|
|
215
|
+
// ============================================================================
|
|
63
216
|
let platform = null;
|
|
64
217
|
if (/windows/i.test(ua)) {
|
|
65
218
|
if (/windows nt 10/i.test(ua)) {
|
|
@@ -85,6 +238,7 @@ class ClientInfoService {
|
|
|
85
238
|
const match = ua.match(/mac os x (\d+)[._](\d+)/);
|
|
86
239
|
if (match) {
|
|
87
240
|
const major = parseInt(match[1], 10);
|
|
241
|
+
// Convert to macOS version names (approximate)
|
|
88
242
|
if (major >= 13) {
|
|
89
243
|
platform = 'macOS Ventura+';
|
|
90
244
|
}
|
|
@@ -132,6 +286,9 @@ class ClientInfoService {
|
|
|
132
286
|
else {
|
|
133
287
|
platform = null;
|
|
134
288
|
}
|
|
289
|
+
// ============================================================================
|
|
290
|
+
// Detect Browser
|
|
291
|
+
// ============================================================================
|
|
135
292
|
let browser = null;
|
|
136
293
|
if (/edg/i.test(ua)) {
|
|
137
294
|
browser = 'Edge';
|
|
@@ -160,6 +317,9 @@ class ClientInfoService {
|
|
|
160
317
|
else {
|
|
161
318
|
browser = null;
|
|
162
319
|
}
|
|
320
|
+
// ============================================================================
|
|
321
|
+
// Generate Device Name
|
|
322
|
+
// ============================================================================
|
|
163
323
|
let deviceName = null;
|
|
164
324
|
if (browser && platform) {
|
|
165
325
|
deviceName = `${browser} on ${platform}`;
|
|
@@ -170,6 +330,7 @@ class ClientInfoService {
|
|
|
170
330
|
else if (platform) {
|
|
171
331
|
deviceName = platform;
|
|
172
332
|
}
|
|
333
|
+
// Special cases for mobile devices
|
|
173
334
|
if (deviceType === 'mobile' || deviceType === 'tablet') {
|
|
174
335
|
if (/iphone/i.test(ua)) {
|
|
175
336
|
const modelMatch = ua.match(/iphone(\d+),?(\d+)?/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-info.service.js","sourceRoot":"","sources":["../../src/services/client-info.service.ts"],"names":[],"mappings":";;;AACA,8DAA0D;
|
|
1
|
+
{"version":3,"file":"client-info.service.js","sourceRoot":"","sources":["../../src/services/client-info.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSRF Protection Service
|
|
3
|
+
*
|
|
4
|
+
* Handles CSRF token generation and validation for cookie-based authentication.
|
|
5
|
+
* Uses cryptographically secure random tokens.
|
|
6
|
+
*/
|
|
1
7
|
import { NAuthConfig } from '../index';
|
|
2
8
|
import { NAuthCookieOptions } from '../platform/interfaces';
|
|
3
9
|
export declare class CsrfService {
|
|
@@ -5,7 +11,16 @@ export declare class CsrfService {
|
|
|
5
11
|
private readonly headerName;
|
|
6
12
|
private readonly cookieOptions;
|
|
7
13
|
constructor(config: NAuthConfig);
|
|
14
|
+
/**
|
|
15
|
+
* Generate a new CSRF token
|
|
16
|
+
* @returns Random 32-byte token as hex string
|
|
17
|
+
*/
|
|
8
18
|
generateToken(): string;
|
|
19
|
+
/**
|
|
20
|
+
* Validate CSRF token
|
|
21
|
+
* Compares token from request header with token from cookie.
|
|
22
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
23
|
+
*/
|
|
9
24
|
validateToken(headerToken: string, cookieToken: string): boolean;
|
|
10
25
|
getCookieName(): string;
|
|
11
26
|
getHeaderName(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csrf.service.d.ts","sourceRoot":"","sources":["../../src/services/csrf.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"csrf.service.d.ts","sourceRoot":"","sources":["../../src/services/csrf.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,MAAM,EAAE,WAAW;IAM/B;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAQhE,aAAa,IAAI,MAAM;IAIvB,aAAa,IAAI,MAAM;IAIvB,gBAAgB,IAAI,kBAAkB;CAGvC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CSRF Protection Service
|
|
4
|
+
*
|
|
5
|
+
* Handles CSRF token generation and validation for cookie-based authentication.
|
|
6
|
+
* Uses cryptographically secure random tokens.
|
|
7
|
+
*/
|
|
2
8
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
9
|
if (k2 === undefined) k2 = k;
|
|
4
10
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -44,13 +50,23 @@ class CsrfService {
|
|
|
44
50
|
this.headerName = config.security?.csrf?.headerName || 'x-csrf-token';
|
|
45
51
|
this.cookieOptions = config.security?.csrf?.cookieOptions || {};
|
|
46
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Generate a new CSRF token
|
|
55
|
+
* @returns Random 32-byte token as hex string
|
|
56
|
+
*/
|
|
47
57
|
generateToken() {
|
|
48
58
|
return crypto.randomBytes(32).toString('hex');
|
|
49
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Validate CSRF token
|
|
62
|
+
* Compares token from request header with token from cookie.
|
|
63
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
64
|
+
*/
|
|
50
65
|
validateToken(headerToken, cookieToken) {
|
|
51
66
|
if (!headerToken || !cookieToken) {
|
|
52
67
|
return false;
|
|
53
68
|
}
|
|
69
|
+
// Constant-time comparison
|
|
54
70
|
return crypto.timingSafeEqual(Buffer.from(headerToken), Buffer.from(cookieToken));
|
|
55
71
|
}
|
|
56
72
|
getCookieName() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csrf.service.js","sourceRoot":"","sources":["../../src/services/csrf.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"csrf.service.js","sourceRoot":"","sources":["../../src/services/csrf.service.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAAiC;AAIjC,MAAa,WAAW;IACL,UAAU,CAAS;IACnB,UAAU,CAAS;IACnB,aAAa,CAAqB;IAEnD,YAAY,MAAmB;QAC7B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,IAAI,kBAAkB,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,IAAI,cAAc,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,WAAmB,EAAE,WAAmB;QACpD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,2BAA2B;QAC3B,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF;AA3CD,kCA2CC"}
|
|
@@ -7,6 +7,17 @@ import { ClientInfoService } from './client-info.service';
|
|
|
7
7
|
import { InternalAuthAuditService as AuthAuditService } from './auth-audit.service';
|
|
8
8
|
import { NAuthLogger } from '../utils/nauth-logger';
|
|
9
9
|
import { SendVerificationEmailDTO, SendVerificationEmailResponseDTO, VerifyEmailWithCodeDTO, VerifyEmailWithTokenDTO, ResendVerificationEmailDTO, ResendVerificationEmailResponseDTO, VerifyEmailResponseDTO } from '../dto/verify-email.dto';
|
|
10
|
+
/**
|
|
11
|
+
* Email Verification Service
|
|
12
|
+
*
|
|
13
|
+
* Handles email verification workflow:
|
|
14
|
+
* - Generate verification codes
|
|
15
|
+
* - Send verification emails
|
|
16
|
+
* - Verify codes with token generation
|
|
17
|
+
* - Resend with rate limiting
|
|
18
|
+
*
|
|
19
|
+
* Supports both code-based (6-digit OTP) and link-based verification.
|
|
20
|
+
*/
|
|
10
21
|
export declare class EmailVerificationService {
|
|
11
22
|
private readonly verificationTokenRepo;
|
|
12
23
|
private readonly userRepo;
|
|
@@ -17,14 +28,55 @@ export declare class EmailVerificationService {
|
|
|
17
28
|
private readonly logger;
|
|
18
29
|
private readonly auditService?;
|
|
19
30
|
constructor(verificationTokenRepo: Repository<BaseVerificationToken>, userRepo: Repository<BaseUser>, emailProvider: EmailProvider, storageAdapter: StorageAdapter, config: NAuthConfig, clientInfoService: ClientInfoService, logger: NAuthLogger, auditService?: AuthAuditService | undefined);
|
|
31
|
+
/**
|
|
32
|
+
* Send verification email to user
|
|
33
|
+
* Generates a new verification code and sends it via email
|
|
34
|
+
*
|
|
35
|
+
* @param dto - Request DTO containing sub, baseUrl, and skipAlreadyVerifiedCheck
|
|
36
|
+
* @returns Response DTO with verification token ID
|
|
37
|
+
*/
|
|
20
38
|
sendVerificationEmail(dto: SendVerificationEmailDTO): Promise<SendVerificationEmailResponseDTO>;
|
|
39
|
+
/**
|
|
40
|
+
* Verify email with code (6-digit OTP)
|
|
41
|
+
* Marks email as verified and activates user account
|
|
42
|
+
*
|
|
43
|
+
* @param dto - Request DTO containing email and code
|
|
44
|
+
* @returns Response DTO with success message
|
|
45
|
+
*/
|
|
21
46
|
verifyEmailWithCode(dto: VerifyEmailWithCodeDTO): Promise<VerifyEmailResponseDTO>;
|
|
47
|
+
/**
|
|
48
|
+
* Verify email with link token
|
|
49
|
+
* Marks email as verified and activates user account
|
|
50
|
+
*
|
|
51
|
+
* @param dto - Request DTO containing token
|
|
52
|
+
* @returns Response DTO with success message
|
|
53
|
+
*/
|
|
22
54
|
verifyEmailWithToken(dto: VerifyEmailWithTokenDTO): Promise<VerifyEmailResponseDTO>;
|
|
55
|
+
/**
|
|
56
|
+
* Resend verification email
|
|
57
|
+
* Supports both sub and email-based resend
|
|
58
|
+
*
|
|
59
|
+
* @param dto - Request DTO containing sub or email, and optional baseUrl
|
|
60
|
+
* @returns Response DTO with verification token ID
|
|
61
|
+
*/
|
|
23
62
|
resendVerificationEmail(dto: ResendVerificationEmailDTO): Promise<ResendVerificationEmailResponseDTO>;
|
|
24
63
|
private resendVerificationEmailBySub;
|
|
25
64
|
private resendVerificationEmailByEmail;
|
|
65
|
+
/**
|
|
66
|
+
* Generate 6-digit verification code
|
|
67
|
+
* @returns 6-digit numeric code
|
|
68
|
+
*/
|
|
26
69
|
private generateCode;
|
|
70
|
+
/**
|
|
71
|
+
* Generate secure random token
|
|
72
|
+
* @returns Random token (32 bytes, hex encoded)
|
|
73
|
+
*/
|
|
27
74
|
private generateToken;
|
|
75
|
+
/**
|
|
76
|
+
* Hash token with SHA-256
|
|
77
|
+
* @param token - Plain token
|
|
78
|
+
* @returns Hashed token
|
|
79
|
+
*/
|
|
28
80
|
private hashToken;
|
|
29
81
|
}
|
|
30
82
|
//# sourceMappingURL=email-verification.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-verification.service.d.ts","sourceRoot":"","sources":["../../src/services/email-verification.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAU,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIpF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EAChC,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,kCAAkC,EAClC,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-verification.service.d.ts","sourceRoot":"","sources":["../../src/services/email-verification.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAU,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIpF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EAChC,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,kCAAkC,EAClC,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;;GAUG;AACH,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAPb,qBAAqB,EAAE,UAAU,CAAC,qBAAqB,CAAC,EACxD,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC9B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,WAAW,EACnB,YAAY,CAAC,EAAE,gBAAgB,YAAA;IAGlD;;;;;;OAMG;IACG,qBAAqB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAsJrG;;;;;;OAMG;IACG,mBAAmB,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgMvF;;;;;;OAMG;IACG,oBAAoB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAuEzF;;;;;;OAMG;IACG,uBAAuB,CAAC,GAAG,EAAE,0BAA0B,GAAG,OAAO,CAAC,kCAAkC,CAAC;YAa7F,4BAA4B;YA0C5B,8BAA8B;IAY5C;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;OAIG;IACH,OAAO,CAAC,SAAS;CAGlB"}
|