koperasi/services/frontend/app/lib/middleware.ts
2025-08-08 14:12:40 +07:00

39 lines
1.5 KiB
TypeScript

import { jwtDecode } from "jwt-decode";
import { authenticator } from "~/sessions/auth.server";
import type { AuthJwtPayload } from "~/types/constants/jwt-payload";
export async function isAdmin(request: Request) {
const user = await authenticator.isAuthenticated(request);
if (!user) return false;
const decoded = jwtDecode<AuthJwtPayload>(user);
return decoded?.role === "ADMIN" && decoded?.status === "AKTIF";
}
export async function isMemberNotActive(request: Request) {
const user = await authenticator.isAuthenticated(request);
if (!user) return false;
const decoded = jwtDecode<AuthJwtPayload>(user);
return decoded?.role === "BASIC" && decoded?.status === "TIDAK AKTIF";
}
export async function isMemberBasic(request: Request) {
const user = await authenticator.isAuthenticated(request);
if (!user) return false;
const decoded = jwtDecode<AuthJwtPayload>(user);
return decoded?.role === "BASIC" && decoded?.status === "AKTIF";
}
export async function isMemberPlatinum(request: Request) {
const user = await authenticator.isAuthenticated(request);
if (!user) return false;
const decoded = jwtDecode<AuthJwtPayload>(user);
return decoded?.role === "PLATINUM" && decoded?.status === "AKTIF";
}
export async function isMemberHasOTP(request: Request) {
const user = await authenticator.isAuthenticated(request);
if (!user) return false;
const decoded = jwtDecode<AuthJwtPayload>(user);
return decoded?.role === "BASIC" && decoded?.status === "OTP TERKIRIM";
}