@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
47 lines (38 loc) • 1.28 kB
text/typescript
import { NextResponse } from 'next/server';
import { authEnv } from '@/config/auth';
import { pino } from '@/libs/logger';
import { NextAuthUserService } from '@/server/services/nextAuthUser';
import { validateRequest } from './validateRequest';
export const POST = async (req: Request): Promise<NextResponse> => {
const payload = await validateRequest(req, authEnv.LOGTO_WEBHOOK_SIGNING_KEY!);
if (!payload) {
return NextResponse.json(
{ error: 'webhook verification failed or payload was malformed' },
{ status: 400 },
);
}
const { event, data } = payload;
pino.trace(`logto webhook payload: ${{ data, event }}`);
const nextAuthUserService = new NextAuthUserService();
switch (event) {
case 'User.Data.Updated': {
return nextAuthUserService.safeUpdateUser(
{
provider: 'logto',
providerAccountId: data.id,
},
{
avatar: data?.avatar,
email: data?.primaryEmail,
fullName: data?.name,
},
);
}
default: {
pino.warn(
`${req.url} received event type "${event}", but no handler is defined for this type`,
);
return NextResponse.json({ error: `unrecognised payload type: ${event}` }, { status: 400 });
}
}
};