Browse Source

feat(api): track apiKey usage

pull/8/head
isra el 2 years ago
parent
commit
838dcf4248
  1. 14
      api/src/auth/auth.service.ts
  2. 3
      api/src/auth/guards/auth.guard.ts
  3. 6
      api/src/auth/schemas/api-key.schema.ts

14
api/src/auth/auth.service.ts

@ -196,4 +196,18 @@ export class AuthService {
await this.apiKeyModel.deleteOne({ _id: apiKeyId })
}
async trackApiKeyUsage(apiKeyId: string) {
this.apiKeyModel
.findByIdAndUpdate(
apiKeyId,
{ $inc: { usageCount: 1 }, lastUsedAt: new Date() },
{ new: true },
)
.exec()
.catch((e) => {
console.log('Failed to track api key usage')
console.log(e)
})
}
}

3
api/src/auth/guards/auth.guard.ts

@ -46,6 +46,9 @@ export class AuthGuard implements CanActivate {
const user = await this.usersService.findOne({ _id: userId })
if (user) {
request.user = user
if (request.query.apiKey) {
this.authService.trackApiKeyUsage(user._id)
}
return true
}
}

6
api/src/auth/schemas/api-key.schema.ts

@ -16,6 +16,12 @@ export class ApiKey {
@Prop({ type: Types.ObjectId, ref: User.name })
user: User
@Prop({ type: Number, default: 0 })
usageCount: number
@Prop({ type: Date })
lastUsedAt: Date
}
export const ApiKeySchema = SchemaFactory.createForClass(ApiKey)
Loading…
Cancel
Save