Files
setrip/lib/auth-guards.ts

19 lines
671 B
TypeScript

import { userRepo } from "@/server/repositories/user.repo";
/**
* Pastikan user session aktif (tidak suspended) sebelum lanjut aksi mutatif.
* Dipanggil di awal server action yang menulis ke DB (joinTrip, createTrip,
* createReview, dll). Lookup fresh dari DB — jangan trust JWT karena suspend
* bisa di-trigger sejak token dibuat.
*
* Throw Error dengan pesan user-friendly kalau suspended.
*/
export async function requireActiveUser(userId: string): Promise<void> {
const suspended = await userRepo.isSuspended(userId);
if (suspended) {
throw new Error(
"Akun kamu sedang ditangguhkan. Hubungi support@setrip.id untuk klarifikasi."
);
}
}