brkpt-auth.user.delete 事件在应用删除某个用户时通知 brkpt-auth。
session 这样的功能可以响应这个事件来清理相关状态,audit 可以记录这次删除。
事件载荷定义在 src/brkpt-auth/common/interfaces/index.ts 中:
export interface UserDeleteEvent { userId: unknown; timestamp: number; metadata?: RequestMetadata;}userId 标识被删除的用户,timestamp 记录删除发生的时间,metadata 在可用时可以包含请求信息。
在你自己的用户删除流程中发出这个事件:
import { Controller, Delete, Req } from '@nestjs/common';import { EventEmitter2 } from '@nestjs/event-emitter';import { type BrkptAuthRequest, UserDeleteEvent,} from '../brkpt-auth/common/interfaces';import { extractRequestMetadata } from '../brkpt-auth/common/utils';import { MemoryUserRepository } from './repositories/memory-user.repository';
@Controller('user')export class UserController { constructor( private readonly userRepo: MemoryUserRepository, private readonly eventEmitter: EventEmitter2, ) {}
@Delete() async delete(@Req() req: BrkptAuthRequest) { const id = req.user!.sub as number; await this.eventEmitter.emitAsync('brkpt-auth.user.delete', { userId: id, timestamp: Date.now(), metadata: extractRequestMetadata(req), } satisfies UserDeleteEvent); return this.userRepo.delete(id); }}启用 session 功能时,发出这个事件会撤销该用户的所有会话,并移除对应的会话索引。如果启用了 audit 功能,这次删除也会被传给你的审计适配器。