01import { cookies } from "next/headers"
02import { redirect } from "next/navigation"
03import { refreshToken, readSession } from "./tokens"
04import { saveSession, clearSession } from "./store"
05import { validateSessionCookie } from "./validation"
06
07type User = {
08 id: string
09 email: string
10 session: string
11}
12
13export async function loadCurrentUser() {
14 const session = cookies().get("sid")?.value
15 if (!session) return null
16 return readSession(session)
17}
18
19export async function refreshSession(user: User) {
20 const token = await refreshToken(user.session)
21 saveSession(user.id, token)
22 return redirectAfterLogin(user)
23}
24
25function redirectAfterLogin(user: User) {
26 return redirect(`/account/${user.id}`)
27}
28
29export async function signOut() {
30 await clearSession()
31}