import { LoaderFunctionArgs } from "@remix-run/node"; import { json, Outlet, redirect } from "@remix-run/react"; import { Recycle, Leaf } from "lucide-react"; import { getUserSession, SessionData } from "~/sessions.server"; interface LoaderData { isAuthenticated: boolean; user?: SessionData; } export async function loader({ request }: LoaderFunctionArgs) { const userSession = await getUserSession(request); // Jika user sudah ada session dan role adalah pengelola if (userSession && userSession.role === "pengelola") { // Jika registration status sudah complete, redirect ke dashboard if (userSession.registrationStatus === "complete") { return redirect("/pengelola/dashboard"); } // Jika belum complete, redirect ke step yang sesuai berdasarkan status const url = new URL(request.url); const currentPath = url.pathname; // Jangan redirect jika sudah ada di step yang benar const correctPaths = [ "/authpengelola/completingcompanyprofile", "/authpengelola/waitingapprovalfromadministrator", "/authpengelola/createanewpin" ]; if (!correctPaths.includes(currentPath)) { switch (userSession.registrationStatus) { case "uncomplete": return redirect("/authpengelola/completingcompanyprofile"); case "awaiting_approval": return redirect("/authpengelola/waitingapprovalfromadministrator"); case "approved": return redirect("/authpengelola/createanewpin"); default: break; } } } // Jika user sudah ada session tapi bukan pengelola (misalnya admin) if (userSession && userSession.role === "administrator") { return redirect("/sys-rijig-adminpanel/dashboard"); } return json({ isAuthenticated: !!userSession, user: userSession || undefined }); } export default function AuthPengelolaLayout() { return (
{/* Background Pattern */}
{/* Header */}

WasteFlow

Pengelola Portal

{/* Main Content */}
{/* Footer */}
); }