feat: integrate Redis for session invalidation in ClerkService
- Added RedisService to ClerkService for managing session invalidation. - Updated event handlers (eventSessionRevoked, eventSessionRemoved, eventSessionEnded, eventEmailCreated) to asynchronously delete sessions from Redis upon specific events. - Enhanced session management by ensuring sessions are properly invalidated in response to Clerk events.
This commit is contained in:
@@ -2,11 +2,14 @@ import { Injectable, Logger } from '@nestjs/common'
|
||||
|
||||
import { PrismaService } from '../Prisma/prisma.service'
|
||||
import { clerkClient, WebhookEventType } from '@clerk/express'
|
||||
|
||||
import { RedisService } from '../Redis/redis.service'
|
||||
export interface ClerkResponse {}
|
||||
@Injectable()
|
||||
export class ClerkService {
|
||||
constructor(private readonly prisma: PrismaService) {}
|
||||
constructor(
|
||||
private readonly prisma: PrismaService,
|
||||
private readonly redis: RedisService,
|
||||
) {}
|
||||
webhook(body: any) {
|
||||
// get the event type
|
||||
const eventType = body.type
|
||||
@@ -117,19 +120,25 @@ export class ClerkService {
|
||||
// to do: get session info
|
||||
}
|
||||
|
||||
eventSessionRevoked(data: any) {
|
||||
async eventSessionRevoked(data: any) {
|
||||
Logger.log(data, 'ClerkService')
|
||||
// invalidate session from redis
|
||||
await this.redis.del(`session:${data.session_id}`)
|
||||
}
|
||||
|
||||
eventSessionRemoved(data: any) {
|
||||
async eventSessionRemoved(data: any) {
|
||||
Logger.log(data, 'ClerkService')
|
||||
// invalidate session from redis
|
||||
await this.redis.del(`session:${data.session_id}`)
|
||||
}
|
||||
|
||||
eventSessionEnded(data: any) {
|
||||
async eventSessionEnded(data: any) {
|
||||
Logger.log(data, 'ClerkService')
|
||||
// invalidate session from redis
|
||||
await this.redis.del(`session:${data.session_id}`)
|
||||
}
|
||||
|
||||
eventEmailCreated(data: any) {
|
||||
async eventEmailCreated(data: any) {
|
||||
Logger.log(data, 'ClerkService')
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user