Superadmin-rajoitus: moduulit, integraatiot ja IP-asetukset vain pääkäyttäjälle + captcha-sessiokorjaus

- Moduulit, integraatiot ja IP-rajoitukset piilotetaan yritysadminilta (vain superadmin näkee)
- Saatavuus-API ja Telegram checkboxit tallentavat tilan heti muutoksessa
- session_regenerate_id(false) estää race conditionin kirjautumisen jälkeen

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 19:49:57 +02:00
parent 1ab669a490
commit 648cb949ac
3 changed files with 20 additions and 8 deletions

View File

@@ -2568,6 +2568,17 @@ async function showCompanyDetail(id) {
logoPreview.style.display = 'none';
}
// Superadmin-osiot: moduulit, integraatiot, IP-rajoitukset
const isSA = currentUser?.role === 'superadmin';
const modulesSection = document.getElementById('company-modules-section');
const integrationsSection = document.getElementById('company-integrations-section');
const zammadConfig = document.getElementById('company-zammad-config');
const ipsSection = document.getElementById('company-allowed-ips-section');
if (modulesSection) modulesSection.style.display = isSA ? '' : 'none';
if (integrationsSection) integrationsSection.style.display = isSA ? '' : 'none';
if (!isSA && zammadConfig) zammadConfig.style.display = 'none';
if (ipsSection) ipsSection.style.display = isSA ? '' : 'none';
// Moduuli-checkboxit (yhteensopivuus: vanha 'devices' → 'tekniikka')
let enabledMods = comp?.enabled_modules || [];
if (enabledMods.includes('devices') && !enabledMods.includes('tekniikka')) {
@@ -2585,8 +2596,8 @@ async function showCompanyDetail(id) {
// Vaihda aktiivinen yritys jotta API-kutsut kohdistuvat oikein
await apiCall('company_switch', 'POST', { company_id: id });
// Integraatiot — lataa tila
loadCompanyIntegrations();
// Integraatiot — lataa tila (vain superadmin)
if (isSA) loadCompanyIntegrations();
// Lataa postilaatikot
loadMailboxes();