migrate to nextjs
This commit is contained in:
31
src/lib/auth/server.ts
Normal file
31
src/lib/auth/server.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { getIronSession } from 'iron-session';
|
||||
import { cookies } from 'next/headers';
|
||||
import { SessionData, sessionOptions } from '@/lib/session/config';
|
||||
import { redirect } from 'next/navigation';
|
||||
|
||||
export async function getSession() {
|
||||
const session = await getIronSession<SessionData>(await cookies(), sessionOptions);
|
||||
return session;
|
||||
}
|
||||
|
||||
export async function requireAuth() {
|
||||
const session = await getSession();
|
||||
|
||||
if (!session.token || !session.user) {
|
||||
redirect('/login');
|
||||
}
|
||||
|
||||
return session;
|
||||
}
|
||||
|
||||
export async function login(token: string, user: SessionData['user']) {
|
||||
const session = await getSession();
|
||||
session.token = token;
|
||||
session.user = user;
|
||||
await session.save();
|
||||
}
|
||||
|
||||
export async function logout() {
|
||||
const session = await getSession();
|
||||
session.destroy();
|
||||
}
|
||||
Reference in New Issue
Block a user