跳转到内容

用户删除事件

在用户被删除时通知 brkpt-auth。

brkpt-auth.user.delete 事件在应用删除某个用户时通知 brkpt-auth。

session 这样的功能可以响应这个事件来清理相关状态,audit 可以记录这次删除。

事件载荷定义在 src/brkpt-auth/common/interfaces/index.ts 中:

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 功能,这次删除也会被传给你的审计适配器。