"use server"; import { cookies } from "next/headers"; import { redirect } from "next/navigation"; import { createUser, loginUser } from "../api/helpers/users"; import { Token } from "../api/types"; import logger from "../logging/logger"; export async function login(formData: FormData) { "use server"; const token = await loginUser(formData); logger.log("debug", `Fetched following token for login: ${token}`); // token check for backend debugging 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); logger.log("debug", `Fetched following token for login: ${token}`); // token check for backend debugging 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(); logger.log("debug", cookieStore.getAll()); // debug: log cookies when checking for session token, ideally logs session token too const token = cookieStore.get("access_token")?.value; return token ? token : null; }