ui: убрать вход по Bearer токену, добавить ручной ввод clientId (отладка)
This commit is contained in:
+28
-6
@@ -64,13 +64,35 @@ function createRouter({ auth, MOCK_USERS, authLimiter }) {
|
|||||||
res.redirect(returnTo || '/');
|
res.redirect(returnTo || '/');
|
||||||
});
|
});
|
||||||
|
|
||||||
// POST /login-token — вставить реальный Bearer токен
|
// GET /login-token — редирект на /login (форма вставки токена там же)
|
||||||
router.post('/login-token', authLimiter, (req, res) => {
|
router.get('/login-token', (req, res) => res.redirect('/login'));
|
||||||
const { token, returnTo } = req.body;
|
|
||||||
if (!token || !token.trim()) return res.redirect('/login?error=Токен+не+может+быть+пустым');
|
|
||||||
|
|
||||||
req.session.token = token.trim();
|
// POST /login-token — ручной вход по clientId (отладка)
|
||||||
req.session.user = null; // заполнится при первом запросе к API
|
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 || '/');
|
res.redirect(returnTo || '/');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -84,15 +84,15 @@
|
|||||||
<hr>
|
<hr>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<%# ── Блок вставки Bearer токена (всегда виден) ── %>
|
<%# ── Блок ручного ввода clientId (отладка) ── %>
|
||||||
<p class="section-title">Войти с Bearer токеном</p>
|
<p class="section-title">Ручной вход (clientId)</p>
|
||||||
<form method="POST" action="/login-token">
|
<form method="POST" action="/login-token">
|
||||||
<input type="hidden" name="returnTo" value="<%= returnTo || '/' %>">
|
<input type="hidden" name="returnTo" value="<%= returnTo || '/' %>">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>Bearer токен</label>
|
<label>Client ID (через запятую для нескольких компаний)</label>
|
||||||
<textarea name="token" placeholder="eyJ..." rows="3" autocomplete="off"></textarea>
|
<input type="text" name="clientId" placeholder="WZ88888,WZ77777" autocomplete="off">
|
||||||
</div>
|
</div>
|
||||||
<button class="btn" type="submit">Войти по токену</button>
|
<button class="btn" type="submit">Войти</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user