admin roadmap filter & search, user management, reopen rejected, system health

This commit is contained in:
2026-05-18 19:45:14 +07:00
parent c52b12daad
commit 6e02f2f0d7
36 changed files with 2013 additions and 339 deletions
+16
View File
@@ -63,6 +63,22 @@ export const authOptions: AuthOptions = {
strategy: "jwt",
},
callbacks: {
async signIn({ user }) {
// Block suspended user dari sign-in (Credentials + OAuth).
// Email-based lookup karena `user.id` belum tentu ada untuk first-time
// OAuth sign-in sebelum adapter persist.
const email = user.email;
if (!email) return true;
const existing = await prisma.user.findUnique({
where: { email },
select: { suspended: true },
});
if (existing?.suspended) {
// NextAuth menerjemahkan return false jadi error "AccessDenied".
return false;
}
return true;
},
async jwt({ token, user, trigger }) {
if (user) {
token.id = user.id;