This commit is contained in:
danilgryaznev 2025-09-23 20:40:25 +02:00
parent 746e62d617
commit ac7ead09c9
3 changed files with 26 additions and 8 deletions

View File

@ -26,6 +26,8 @@ services:
NEXT_PUBLIC_API_URL: http://backend:8000 NEXT_PUBLIC_API_URL: http://backend:8000
NEXT_PUBLIC_DEMO_EMAIL: candidate@alabuga.space NEXT_PUBLIC_DEMO_EMAIL: candidate@alabuga.space
NEXT_PUBLIC_DEMO_PASSWORD: orbita123 NEXT_PUBLIC_DEMO_PASSWORD: orbita123
NEXT_PUBLIC_DEMO_HR_EMAIL: hr@alabuga.space
NEXT_PUBLIC_DEMO_HR_PASSWORD: orbita123
volumes: volumes:
- ./frontend:/app - ./frontend:/app
- /app/node_modules - /app/node_modules

View File

@ -12,7 +12,7 @@ interface Submission {
} }
async function fetchModerationQueue() { async function fetchModerationQueue() {
const token = await getDemoToken(); const token = await getDemoToken('hr');
const submissions = await apiFetch<Submission[]>('/api/admin/submissions', { authToken: token }); const submissions = await apiFetch<Submission[]>('/api/admin/submissions', { authToken: token });
return submissions; return submissions;
} }

View File

@ -1,20 +1,36 @@
import { apiFetch } from './api'; import { apiFetch } from './api';
let cachedToken: string | null = null; type DemoRole = 'pilot' | 'hr';
export async function getDemoToken() { const tokenCache: Partial<Record<DemoRole, string>> = {};
function resolveCredentials(role: DemoRole) {
if (role === 'hr') {
const email = process.env.NEXT_PUBLIC_DEMO_HR_EMAIL ?? 'hr@alabuga.space';
const password =
process.env.NEXT_PUBLIC_DEMO_HR_PASSWORD ?? process.env.NEXT_PUBLIC_DEMO_PASSWORD ?? 'orbita123';
return { email, password };
}
return {
email: process.env.NEXT_PUBLIC_DEMO_EMAIL ?? 'candidate@alabuga.space',
password: process.env.NEXT_PUBLIC_DEMO_PASSWORD ?? 'orbita123'
};
}
export async function getDemoToken(role: DemoRole = 'pilot') {
const cachedToken = tokenCache[role];
if (cachedToken) { if (cachedToken) {
return cachedToken; return cachedToken;
} }
const email = process.env.NEXT_PUBLIC_DEMO_EMAIL ?? 'candidate@alabuga.space'; const credentials = resolveCredentials(role);
const password = process.env.NEXT_PUBLIC_DEMO_PASSWORD ?? 'orbita123';
const data = await apiFetch<{ access_token: string }>('/auth/login', { const data = await apiFetch<{ access_token: string }>('/auth/login', {
method: 'POST', method: 'POST',
body: JSON.stringify({ email, password }) body: JSON.stringify(credentials)
}); });
cachedToken = data.access_token; tokenCache[role] = data.access_token;
return cachedToken; return data.access_token;
} }