blob: d3b7a203743e97298b5d9069f0667eb1d5ac4307 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
// app/api/cron/cleanup-users/route.ts
import { deactivateInactiveUsers } from '@/lib/users/auth/partners-auth';
import { NextRequest } from 'next/server';
export async function GET(request: NextRequest) {
try {
// 보안: 헤더 또는 쿼리 파라미터로 인증
const authToken = request.headers.get('x-cron-secret') ||
request.nextUrl.searchParams.get('secret');
if (authToken !== process.env.CRON_SECRET) {
console.log('Unauthorized cron request');
return new Response('Unauthorized', { status: 401 });
}
console.log(`[${new Date().toISOString()}] Starting user cleanup job...`);
const result = await deactivateInactiveUsers(90); // 90일
const message = `User cleanup completed: ${result.deactivatedCount} users deactivated`;
console.log(`[${new Date().toISOString()}] ${message}`);
return Response.json({
success: true,
message,
deactivatedCount: result.deactivatedCount,
timestamp: new Date().toISOString()
});
} catch (error) {
const errorMessage = `User cleanup job failed: ${error.message}`;
console.error(`[${new Date().toISOString()}] ${errorMessage}`);
return Response.json({
success: false,
error: errorMessage,
timestamp: new Date().toISOString()
}, { status: 500 });
}
}
|