simplify: toggle adminMode, canAdminMode flag, remove getOrCreateCompany fallback
- ui/index.js: canAdminMode = isAdmin AND WZ01112 (временно || WZ01112) - views/index.ejs: checkbox → toggle с JS fetch, условие canAdminMode - ui/routes/entries.js: убран getOrCreateCompany-фоллбек для админа - Админ без ?company= видит список компаний, без автозагрузки - isAdmin теперь чисто из IAM (без || WZ01112)
This commit is contained in:
+6
-2
@@ -58,8 +58,11 @@ function createUiRouter({ auth, MOCK_USERS, authLimiter }) {
|
||||
? sessionActive
|
||||
: (allClientIds[0] || rawClientId);
|
||||
|
||||
// 🔮 isAdmin через IAM, временно: || clientId === WZ01112
|
||||
// 🔮 isAdmin через IAM
|
||||
const iamAdmin = req.session && req.session.user && req.session.user.isAdmin;
|
||||
// ВРЕМЕННО: WZ01112 без isAdmin тоже видит toggle (для тестов)
|
||||
const canAdminMode = !!(iamAdmin && activeClientId === ADMIN_CLIENT_ID)
|
||||
|| activeClientId === ADMIN_CLIENT_ID; // ← убрать после тестов
|
||||
req.user = {
|
||||
clientId: rawClientId,
|
||||
allClientIds,
|
||||
@@ -67,7 +70,8 @@ function createUiRouter({ auth, MOCK_USERS, authLimiter }) {
|
||||
companyId: payload.company_id || payload.companyId || null,
|
||||
companyName: payload.company_name || payload.companyName || activeClientId,
|
||||
email: payload.email || activeClientId + '@unknown',
|
||||
isAdmin: iamAdmin || activeClientId === ADMIN_CLIENT_ID,
|
||||
isAdmin: iamAdmin,
|
||||
canAdminMode,
|
||||
adminMode: !!(req.session && req.session.adminMode),
|
||||
};
|
||||
} catch (e) {
|
||||
|
||||
+10
-22
@@ -83,29 +83,17 @@ function createRouter() {
|
||||
|
||||
const companyId = req.query.company ? parseInt(req.query.company, 10) : null;
|
||||
|
||||
if (!companyId) {
|
||||
// Админ без ?company= — показываем свою компанию
|
||||
let ownCo = companies.find(c => c.client_id === req.user.clientId) || null;
|
||||
if (!ownCo) {
|
||||
await api.get('/api/v1/entries', token); // создаст компанию через getOrCreateCompany
|
||||
const cr2 = await api.get('/api/v1/companies', token);
|
||||
ownCo = (cr2.data.companies || []).find(c => c.client_id === req.user.clientId) || null;
|
||||
}
|
||||
if (ownCo) {
|
||||
const includeDeleted = req.query.includeDeleted === 'true' ? '&includeDeleted=true' : '';
|
||||
const er = await api.get('/api/v1/entries?company=' + ownCo.id + includeDeleted, token);
|
||||
entries = er.data.entries || [];
|
||||
limit = er.data.limit || 15;
|
||||
selectedCompany = ownCo;
|
||||
}
|
||||
} else {
|
||||
if (companyId) {
|
||||
selectedCompany = companies.find(c => c.id === companyId) || null;
|
||||
if (selectedCompany) {
|
||||
const includeDeleted = req.query.includeDeleted === 'true' ? '&includeDeleted=true' : '';
|
||||
const er = await api.get('/api/v1/entries?company=' + companyId + includeDeleted, token);
|
||||
entries = er.data.entries || [];
|
||||
limit = er.data.limit || 15;
|
||||
}
|
||||
}
|
||||
// Если компания не выбрана — показываем список компаний, без записей
|
||||
// (админ выбирает компанию из выпадающего списка)
|
||||
|
||||
if (selectedCompany) {
|
||||
const includeDeleted = req.query.includeDeleted === 'true' ? '&includeDeleted=true' : '';
|
||||
const er = await api.get('/api/v1/entries?company=' + selectedCompany.id + includeDeleted, token);
|
||||
entries = er.data.entries || [];
|
||||
limit = er.data.limit || 15;
|
||||
}
|
||||
} else {
|
||||
// Обычный пользователь: запрашиваем записи для активной компании
|
||||
|
||||
Reference in New Issue
Block a user