diff --git a/src/lib/routes/admin-api/user/pat.ts b/src/lib/routes/admin-api/user/pat.ts index 8d4bb8606b..806766a38f 100644 --- a/src/lib/routes/admin-api/user/pat.ts +++ b/src/lib/routes/admin-api/user/pat.ts @@ -103,7 +103,7 @@ export default class PatController extends Controller { res: Response, ): Promise { const { id } = req.params; - await this.patService.deletePat(id, req.user.id); + await this.patService.deletePat(id, req.user.id, req.user); res.status(200).end(); } } diff --git a/src/lib/services/pat-service.ts b/src/lib/services/pat-service.ts index 5c0e70ac86..b9d33680c0 100644 --- a/src/lib/services/pat-service.ts +++ b/src/lib/services/pat-service.ts @@ -2,7 +2,7 @@ import { IUnleashConfig, IUnleashStores } from '../types'; import { Logger } from '../logger'; import { IPatStore } from '../types/stores/pat-store'; import { IEventStore } from '../types/stores/event-store'; -import { PAT_CREATED } from '../types/events'; +import { PAT_CREATED, PAT_DELETED } from '../types/events'; import { IPat } from '../types/models/pat'; import crypto from 'crypto'; import User from '../types/user'; @@ -33,11 +33,7 @@ export default class PatService { this.eventStore = eventStore; } - async createPat( - pat: IPat, - forUserId: number, - creator: User, - ): Promise { + async createPat(pat: IPat, forUserId: number, editor: User): Promise { await this.validatePat(pat, forUserId); pat.secret = this.generateSecretKey(); pat.userId = forUserId; @@ -46,7 +42,7 @@ export default class PatService { pat.secret = '***'; await this.eventStore.store({ type: PAT_CREATED, - createdBy: creator.email || creator.username, + createdBy: editor.email || editor.username, data: pat, }); @@ -57,8 +53,21 @@ export default class PatService { return this.patStore.getAllByUser(userId); } - async deletePat(id: number, userId: number): Promise { - return this.patStore.deleteForUser(id, userId); + async deletePat( + id: number, + forUserId: number, + editor: User, + ): Promise { + const pat = await this.patStore.get(id); + + pat.secret = '***'; + await this.eventStore.store({ + type: PAT_DELETED, + createdBy: editor.email || editor.username, + data: pat, + }); + + return this.patStore.deleteForUser(id, forUserId); } async validatePat( diff --git a/src/lib/types/events.ts b/src/lib/types/events.ts index dc4d539770..521742d187 100644 --- a/src/lib/types/events.ts +++ b/src/lib/types/events.ts @@ -80,6 +80,7 @@ export const CLIENT_METRICS = 'client-metrics'; export const CLIENT_REGISTER = 'client-register'; export const PAT_CREATED = 'pat-created'; +export const PAT_DELETED = 'pat-deleted'; export const PUBLIC_SIGNUP_TOKEN_CREATED = 'public-signup-token-created'; export const PUBLIC_SIGNUP_TOKEN_USER_ADDED = 'public-signup-token-user-added';