diff --git a/ui/routes/auth.js b/ui/routes/auth.js index fba14d6..84207ab 100644 --- a/ui/routes/auth.js +++ b/ui/routes/auth.js @@ -64,13 +64,35 @@ function createRouter({ auth, MOCK_USERS, authLimiter }) { res.redirect(returnTo || '/'); }); - // POST /login-token — вставить реальный Bearer токен - router.post('/login-token', authLimiter, (req, res) => { - const { token, returnTo } = req.body; - if (!token || !token.trim()) return res.redirect('/login?error=Токен+не+может+быть+пустым'); + // GET /login-token — редирект на /login (форма вставки токена там же) + router.get('/login-token', (req, res) => res.redirect('/login')); - req.session.token = token.trim(); - req.session.user = null; // заполнится при первом запросе к API + // POST /login-token — ручной вход по clientId (отладка) + router.post('/login-token', authLimiter, (req, res) => { + const { clientId, returnTo } = req.body; + if (!clientId || !clientId.trim()) return res.redirect('/login?error=Введите+clientId'); + + const trimmed = clientId.trim(); + const allClientIds = trimmed.split(',').map(s => s.trim()).filter(Boolean); + const activeClientId = allClientIds[0]; + + const token = auth.issueMockToken({ + clientId: trimmed, + companyId: '00000000-0000-0000-0000-000000000001', + companyName: activeClientId, + email: activeClientId + '@debug.local', + }); + + req.session.token = token; + req.session.user = { + clientId: trimmed, + allClientIds, + activeClientId, + email: activeClientId + '@debug.local', + companyId: '00000000-0000-0000-0000-000000000001', + companyName: activeClientId, + isAdmin: activeClientId === (process.env.ADMIN_CLIENT_ID || 'WZ01112'), + }; res.redirect(returnTo || '/'); }); diff --git a/views/ui-login.ejs b/views/ui-login.ejs index 5222326..2936380 100644 --- a/views/ui-login.ejs +++ b/views/ui-login.ejs @@ -84,15 +84,15 @@
Войти с Bearer токеном
+ <%# ── Блок ручного ввода clientId (отладка) ── %> +Ручной вход (clientId)