Nest Authbeta

Events

Every emitted event class with its payload.

This is the complete reference for events. For when to listen to an event vs override a hook, see Events & Hooks.

Setup

import { EventEmitterModule } from '@nestjs/event-emitter';
 
@Module({
  imports: [
    EventEmitterModule.forRoot(),     // <-- required, before NestAuthModule
    NestAuthModule.forRoot({ … }),
  ],
})

Without this import, every event silently no-ops.

Listening

import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import {
  NestAuthEvents,
  UserRegisteredEvent,
} from '@ackplus/nest-auth';
 
@Injectable()
export class AuthEventsListener {
  @OnEvent(NestAuthEvents.REGISTERED)
  async onRegistered(event: UserRegisteredEvent) {
    // …
  }
}

Auth lifecycle

EventConstantPayload fields
UserRegisteredEventNestAuthEvents.REGISTEREDuser, payload (the original signup body — open-ended), request
UserLoggedInEventNestAuthEvents.LOGGED_INuser, session, provider, request
UserRefreshTokenEventNestAuthEvents.REFRESH_TOKENuser, oldSession, newSession
LoggedOutEventNestAuthEvents.LOGGED_OUTuser, session, reason
LoggedOutAllEventNestAuthEvents.LOGGED_OUT_ALLuser, reason

MFA

EventConstantPayload
User2faVerifiedEventNestAuthEvents.TWO_FACTOR_VERIFIEDuser, method, trustDevice
TwoFactorCodeSentEventNestAuthEvents.TWO_FACTOR_CODE_SENTuser, method, code
User2faEnabledEventNestAuthEvents.TWO_FACTOR_ENABLEDuser
User2faDisabledEventNestAuthEvents.TWO_FACTOR_DISABLEDuser

Password

EventConstantPayload
PasswordResetRequestedEventNestAuthEvents.PASSWORD_RESET_REQUESTEDuser, code, channel
PasswordResetEventNestAuthEvents.PASSWORD_RESETuser
UserPasswordChangedEventNestAuthEvents.PASSWORD_CHANGEDuser

Verification

EventConstantPayload
EmailVerificationRequestedEventNestAuthEvents.EMAIL_VERIFICATION_REQUESTEDuser, code
EmailVerifiedEventNestAuthEvents.EMAIL_VERIFIEDuser
PhoneVerificationRequestedEventNestAuthEvents.PHONE_VERIFICATION_REQUESTEDuser, code
PhoneVerifiedEventNestAuthEvents.PHONE_VERIFIEDuser

Passwordless

EventConstantPayload
PasswordlessCodeRequestedEventNestAuthEvents.PASSWORDLESS_CODE_REQUESTEDidentifier, channel ('email' | 'sms'), code, user (if existing)

User management

EventConstantPayload
UserCreatedEventNestAuthEvents.USER_CREATEDuser
UserUpdatedEventNestAuthEvents.USER_UPDATEDuser, previous
UserDeletedEventNestAuthEvents.USER_DELETEDuser

Tenants

EventConstantPayload
TenantCreatedEventNestAuthEvents.TENANT_CREATEDtenant
TenantUpdatedEventNestAuthEvents.TENANT_UPDATEDtenant, previous
TenantDeletedEventNestAuthEvents.TENANT_DELETEDtenant

API keys

EventConstantPayload
AccessKeyCreatedEventNestAuthEvents.ACCESS_KEY_CREATEDkey, userId
AccessKeyUpdatedEventNestAuthEvents.ACCESS_KEY_UPDATEDkey
AccessKeyDeactivatedEventNestAuthEvents.ACCESS_KEY_DEACTIVATEDkey
AccessKeyDeletedEventNestAuthEvents.ACCESS_KEY_DELETEDkey, userId

Practical patterns

  • Idempotent listeners — make every listener safe to run twice. Events are fire-and-forget; if your queue retries, listeners run again.
  • Don't throw — a thrown error in a listener is logged and swallowed. If a side effect must succeed before the auth flow returns, use a hook instead.
  • Listen to the request@OnEvent listeners can access event.request (where present) for IP, user-agent, headers.

On this page