forked from admin/zeropost-tool
feat: zeropost-tool — Next.js 16 кабинет
- Auth: iron-session, регистрация/логин по email+password - Дашборд со списком каналов - 3-шаговая анкета создания канала (база/стиль/примеры+табу) - Страница канала с генератором постов через polling - Тёмная тема, Tailwind 3.4, accent emerald - Прокси-API к zeropost-engine с x-user-id - Совместимость с Next 16 async cookies/params
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import { cookies } from 'next/headers';
|
||||
import { getIronSession } from 'iron-session';
|
||||
|
||||
const sessionOptions = {
|
||||
cookieName: 'zeropost_session',
|
||||
password: process.env.SESSION_SECRET || 'this_is_a_dev_secret_change_in_prod_at_least_32_chars',
|
||||
cookieOptions: {
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
sameSite: 'lax',
|
||||
httpOnly: true,
|
||||
maxAge: 60 * 60 * 24 * 30,
|
||||
},
|
||||
};
|
||||
|
||||
export async function getSession() {
|
||||
const cookieStore = await cookies();
|
||||
return getIronSession(cookieStore, sessionOptions);
|
||||
}
|
||||
|
||||
export async function requireUser() {
|
||||
const s = await getSession();
|
||||
if (!s.userId) return null;
|
||||
return { id: s.userId, email: s.email, name: s.name };
|
||||
}
|
||||
Reference in New Issue
Block a user