33 lines
825 B
TypeScript
33 lines
825 B
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
|
|
import { getAuthInfoFromCookie } from '@/lib/auth';
|
|
import { revokeRefreshToken } from '@/lib/refresh-token';
|
|
|
|
export const runtime = 'nodejs';
|
|
|
|
export async function POST(request: NextRequest) {
|
|
const authInfo = getAuthInfoFromCookie(request);
|
|
|
|
// 撤销当前设备的 Refresh Token
|
|
if (authInfo && authInfo.username && authInfo.tokenId) {
|
|
try {
|
|
await revokeRefreshToken(authInfo.username, authInfo.tokenId);
|
|
} catch (error) {
|
|
console.error('Failed to revoke refresh token:', error);
|
|
}
|
|
}
|
|
|
|
const response = NextResponse.json({ ok: true });
|
|
|
|
// 清除认证cookie
|
|
response.cookies.set('auth', '', {
|
|
path: '/',
|
|
expires: new Date(0),
|
|
sameSite: 'lax',
|
|
httpOnly: false,
|
|
secure: false,
|
|
});
|
|
|
|
return response;
|
|
}
|