setting up files
This commit is contained in:
43
lib/auth-helpers.ts
Normal file
43
lib/auth-helpers.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
import { createClient } from "@/lib/supabase/server";
|
||||
import { routes } from "@/lib/routes";
|
||||
import type { User } from "@supabase/supabase-js";
|
||||
|
||||
export function hasCompletedOnboarding(user: User) {
|
||||
return user.user_metadata?.onboarding_completed === true;
|
||||
}
|
||||
|
||||
export async function getSessionUser() {
|
||||
const supabase = await createClient();
|
||||
const {
|
||||
data: { user },
|
||||
error,
|
||||
} = await supabase.auth.getUser();
|
||||
|
||||
if (error || !user) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
export async function requireSessionUser() {
|
||||
const user = await getSessionUser();
|
||||
|
||||
if (!user) {
|
||||
redirect(routes.login);
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
export async function requireOnboardingComplete() {
|
||||
const user = await requireSessionUser();
|
||||
|
||||
if (!hasCompletedOnboarding(user)) {
|
||||
redirect(routes.onboardingQuiz);
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
Reference in New Issue
Block a user