Yrityskohtainen IP-rajoitus kirjautumiseen
Lisätty allowed_ips kenttä yrityksiin. Tyhjä = ei rajoitusta, muuten vain listatut IP:t/CIDR-alueet pääsevät kirjautumaan. Superadmin ohittaa aina IP-tarkistuksen (backdoor). Tarkistus tehdään login, check_auth ja company_switch -endpointeissa. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
9
db.php
9
db.php
@@ -447,6 +447,7 @@ function initDatabase(): void {
|
||||
"ALTER TABLE tickets ADD COLUMN ticket_number INT DEFAULT NULL AFTER id",
|
||||
"ALTER TABLE mailboxes ADD COLUMN auto_reply_enabled BOOLEAN DEFAULT FALSE AFTER aktiivinen",
|
||||
"ALTER TABLE mailboxes ADD COLUMN auto_reply_body TEXT AFTER auto_reply_enabled",
|
||||
"ALTER TABLE companies ADD COLUMN allowed_ips TEXT DEFAULT '' AFTER enabled_modules",
|
||||
];
|
||||
foreach ($alters as $sql) {
|
||||
try { $db->query($sql); } catch (\Throwable $e) { /* sarake on jo olemassa / jo ajettu */ }
|
||||
@@ -473,6 +474,7 @@ function dbLoadCompanies(): array {
|
||||
// enabled_modules: JSON-array tai tyhjä (= kaikki päällä)
|
||||
$raw = $c['enabled_modules'] ?? '';
|
||||
$c['enabled_modules'] = $raw ? (json_decode($raw, true) ?: []) : [];
|
||||
$c['allowed_ips'] = $c['allowed_ips'] ?? '';
|
||||
}
|
||||
return $companies;
|
||||
}
|
||||
@@ -484,13 +486,13 @@ function dbSaveCompany(array $company): void {
|
||||
$enabledModules = $company['enabled_modules'] ?? [];
|
||||
$enabledModulesJson = is_array($enabledModules) ? json_encode($enabledModules) : ($enabledModules ?: '');
|
||||
_dbExecute("
|
||||
INSERT INTO companies (id, nimi, luotu, aktiivinen, primary_color, subtitle, logo_file, api_key, cors_origins, enabled_modules)
|
||||
VALUES (:id, :nimi, :luotu, :aktiivinen, :primary_color, :subtitle, :logo_file, :api_key, :cors_origins, :enabled_modules)
|
||||
INSERT INTO companies (id, nimi, luotu, aktiivinen, primary_color, subtitle, logo_file, api_key, cors_origins, enabled_modules, allowed_ips)
|
||||
VALUES (:id, :nimi, :luotu, :aktiivinen, :primary_color, :subtitle, :logo_file, :api_key, :cors_origins, :enabled_modules, :allowed_ips)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
nimi = VALUES(nimi), aktiivinen = VALUES(aktiivinen),
|
||||
primary_color = VALUES(primary_color), subtitle = VALUES(subtitle),
|
||||
logo_file = VALUES(logo_file), api_key = VALUES(api_key), cors_origins = VALUES(cors_origins),
|
||||
enabled_modules = VALUES(enabled_modules)
|
||||
enabled_modules = VALUES(enabled_modules), allowed_ips = VALUES(allowed_ips)
|
||||
", [
|
||||
'id' => $company['id'],
|
||||
'nimi' => $company['nimi'],
|
||||
@@ -502,6 +504,7 @@ function dbSaveCompany(array $company): void {
|
||||
'api_key' => $company['api_key'] ?? '',
|
||||
'cors_origins' => $company['cors_origins'] ?? '',
|
||||
'enabled_modules' => $enabledModulesJson,
|
||||
'allowed_ips' => $company['allowed_ips'] ?? '',
|
||||
]);
|
||||
|
||||
// Päivitä domainit
|
||||
|
||||
Reference in New Issue
Block a user