Merge pull request 'refactor: exit-view and view-as routes to manage cookies directly' (#6) from refactor--cookies into main
All checks were successful
Deploy Stage / deploy (push) Successful in 2m39s
All checks were successful
Deploy Stage / deploy (push) Successful in 2m39s
Reviewed-on: #6
This commit is contained in:
commit
27dafa1c34
|
|
@ -1,10 +1,12 @@
|
|||
import { NextResponse } from 'next/server';
|
||||
import { disablePilotView, requireRole } from '../../../lib/auth/session';
|
||||
import { requireRole } from '../../../lib/auth/session';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
// Возвращаем HR к своему интерфейсу.
|
||||
// Cookie `alabuga_view_as` хранит флаг режима просмотра, удаляем его и редиректим в админку.
|
||||
await requireRole('hr');
|
||||
disablePilotView();
|
||||
return NextResponse.redirect(new URL('/admin', request.url));
|
||||
|
||||
const response = NextResponse.redirect(new URL('/admin', request.url));
|
||||
response.cookies.delete('alabuga_view_as');
|
||||
return response;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,18 @@
|
|||
import { NextResponse } from 'next/server';
|
||||
import { enablePilotView, requireRole } from '../../../lib/auth/session';
|
||||
import { requireRole } from '../../../lib/auth/session';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
// Доступно только HR: включаем режим просмотра и отправляем на дашборд кандидата.
|
||||
// Благодаря этому HR увидит интерфейс пилота без необходимости заводить отдельную учётку.
|
||||
await requireRole('hr');
|
||||
enablePilotView();
|
||||
return NextResponse.redirect(new URL('/', request.url));
|
||||
|
||||
const response = NextResponse.redirect(new URL('/', request.url));
|
||||
response.cookies.set('alabuga_view_as', 'pilot', {
|
||||
httpOnly: true,
|
||||
sameSite: 'lax',
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
path: '/',
|
||||
maxAge: 60 * 60,
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ export async function getSession(): Promise<SessionPayload | null> {
|
|||
return { ...session, viewAsPilot };
|
||||
} catch (error) {
|
||||
console.warn('Session validation failed:', error);
|
||||
store.delete(SESSION_COOKIE);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -94,19 +93,3 @@ export function destroySession() {
|
|||
store.delete(SESSION_COOKIE);
|
||||
store.delete(VIEW_COOKIE);
|
||||
}
|
||||
|
||||
export function enablePilotView(): void {
|
||||
// HR включает режим просмотра интерфейса пилота, чтобы видеть клиентские экраны.
|
||||
cookies().set(VIEW_COOKIE, 'pilot', {
|
||||
httpOnly: true,
|
||||
sameSite: 'lax',
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
path: '/',
|
||||
maxAge: 60 * 60,
|
||||
});
|
||||
}
|
||||
|
||||
export function disablePilotView(): void {
|
||||
// Возвращаем интерфейс HR к обычному виду.
|
||||
cookies().delete(VIEW_COOKIE);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user