42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
"use server";
|
|
import { cookies } from "next/headers";
|
|
import { redirect } from "next/navigation";
|
|
|
|
import { createUser, loginUser } from "../api/helpers/users";
|
|
import { Token } from "../api/types";
|
|
|
|
export async function login(formData: FormData) {
|
|
"use server";
|
|
const token = await loginUser(formData);
|
|
console.log(`Fetched following token for login: ${token}`);
|
|
await createSession(token);
|
|
redirect("/Admin/Overview");
|
|
}
|
|
|
|
export async function signup(formData: FormData) {
|
|
// Technically same code as login for now but will do different stuff with it later so separating it early on
|
|
"use server";
|
|
const token = await createUser(formData);
|
|
await createSession(token);
|
|
redirect("/Admin/Overview");
|
|
}
|
|
|
|
export async function createSession(token: Token) {
|
|
const access_token = token.access_token;
|
|
const cookieStore = await cookies();
|
|
|
|
cookieStore.set("access_token", access_token, {
|
|
httpOnly: true,
|
|
secure: process.env.NODE_ENV === "production",
|
|
sameSite: "lax",
|
|
path: "/",
|
|
});
|
|
}
|
|
|
|
export async function getSessionToken() {
|
|
const cookieStore = await cookies();
|
|
console.log(cookieStore.getAll());
|
|
const token = cookieStore.get("access_token")?.value;
|
|
|
|
return token ? token : null;
|
|
}
|