First commit

This commit is contained in:
mdares
2026-02-07 18:08:42 -06:00
commit b7a86a2d1c
57 changed files with 9188 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
import { redirect } from "next/navigation";
import { requireUser } from "@/lib/auth/requireUser";
const readTeacherEmails = (): string[] =>
(process.env.TEACHER_EMAILS ?? "")
.split(",")
.map((email) => email.trim().toLowerCase())
.filter(Boolean);
export const requireTeacher = async () => {
const user = await requireUser("/teacher");
if (!user?.email) {
redirect("/");
}
const allowed = readTeacherEmails();
if (allowed.length === 0) {
redirect("/");
}
if (!allowed.includes(user.email.toLowerCase())) {
redirect("/");
}
return user;
};

16
lib/auth/requireUser.ts Normal file
View File

@@ -0,0 +1,16 @@
import { redirect } from "next/navigation";
import { supabaseServer } from "@/lib/supabase/server";
export const requireUser = async (redirectTo: string) => {
const supabase = await supabaseServer();
if (!supabase) {
return null;
}
const { data } = await supabase.auth.getUser();
if (!data.user) {
redirect(`/auth/login?redirectTo=${encodeURIComponent(redirectTo)}`);
}
return data.user;
};