White-label multi-domain tuki (Noxus Intra)

- CSS-muuttujat: kaikki kovakoodatut #0f3460/#16213e korvattu var(--primary-color)/var(--primary-dark)
- Uudet API-endpointit: branding (julkinen, domain-pohjainen), company_logo, company_logo_upload
- Domain-pohjainen brändäys: HTTP_HOST → yrityksen domains-arrayn matchaus
- Login: domain asettaa oletusyrityksen sessioon
- check_auth: palauttaa branding-objektin (primary_color, subtitle, logo_url)
- company_create/update: käsittelee domains, primary_color, subtitle, logo_file
- Dynaaminen login-sivu, header ja footer (logo, nimi, alaotsikko, värit)
- JS: loadBranding(), applyBranding(), yritysvaihdon brändäyspäivitys
- Admin-paneeli: brändäysasetukset (logo-upload, väri, alaotsikko, domainit)
- Git-repo siirretty intra.noxus.fi:hin

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-10 13:44:49 +02:00
parent 918a5ff120
commit 095dc90b6f
4 changed files with 381 additions and 54 deletions

View File

@@ -3,15 +3,16 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CuituNet Intra - Asiakashallinta</title>
<title>Noxus Intra</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- Login -->
<div id="login-screen" class="login-screen">
<div class="login-box">
<h1>CuituNet Intra</h1>
<p>Kirjaudu sisään</p>
<img id="login-logo" src="" alt="Logo" style="height:48px;margin-bottom:0.75rem;display:none;">
<h1 id="login-title">Noxus Intra</h1>
<p id="login-subtitle">Kirjaudu sisään</p>
<form id="login-form">
<input type="text" id="login-username" placeholder="Käyttäjätunnus" required autofocus>
<input type="password" id="login-password" placeholder="Salasana" required>
@@ -26,7 +27,7 @@
</div>
<!-- Salasanan palautuspyyntö -->
<div class="login-box" id="forgot-box" style="display:none">
<h1>CuituNet Intra</h1>
<h1 class="login-brand-title">Noxus Intra</h1>
<p>Salasanan palautus</p>
<form id="forgot-form">
<input type="text" id="forgot-username" placeholder="Käyttäjätunnus" required autofocus>
@@ -38,7 +39,7 @@
</div>
<!-- Uusi salasana (reset token) -->
<div class="login-box" id="reset-box" style="display:none">
<h1>CuituNet Intra</h1>
<h1 class="login-brand-title">Noxus Intra</h1>
<p>Aseta uusi salasana</p>
<form id="reset-form">
<input type="password" id="reset-password" placeholder="Uusi salasana" required>
@@ -55,10 +56,11 @@
<header>
<div class="header-left">
<div class="header-brand" id="brand-home" style="cursor:pointer;">
<span class="brand-icon">&#9889;</span>
<img id="header-logo" src="" alt="Logo" style="height:32px;display:none;">
<span class="brand-icon" id="header-brand-icon">&#9889;</span>
<div>
<h1>CuituNet Intra</h1>
<span class="subtitle">Kuituasiakkaiden hallinta</span>
<h1 id="header-title">Noxus Intra</h1>
<span class="subtitle" id="header-subtitle">Hallintapaneeli</span>
</div>
</div>
</div>
@@ -514,16 +516,36 @@
<div id="company-detail-view" style="display:none;">
<button class="btn-secondary" id="btn-company-back" style="color:#555;border-color:#ddd;margin-bottom:1rem;">&#8592; Takaisin yrityslistaan</button>
<div class="table-card" style="padding:1.5rem;">
<h3 style="color:#0f3460;margin-bottom:0.5rem;" id="company-detail-title">Yrityksen asetukset</h3>
<div class="form-grid" style="max-width:400px;margin-bottom:1.5rem;">
<h3 style="margin-bottom:0.5rem;" id="company-detail-title">Yrityksen asetukset</h3>
<div class="form-grid" style="max-width:600px;margin-bottom:1.5rem;">
<div class="form-group">
<label>Yrityksen nimi</label>
<input type="text" id="company-edit-nimi">
</div>
<div class="form-group">
<button class="btn-primary" id="btn-save-company-name" style="font-size:0.85rem;">Tallenna nimi</button>
<label>Alaotsikko</label>
<input type="text" id="company-edit-subtitle" placeholder="esim. Asiakashallinta">
</div>
<div class="form-group">
<label>Pääväri</label>
<div style="display:flex;align-items:center;gap:0.5rem;">
<input type="color" id="company-edit-color" value="#0f3460" style="width:50px;height:36px;border:none;cursor:pointer;">
<input type="text" id="company-edit-color-text" placeholder="#0f3460" style="width:100px;font-family:monospace;font-size:0.85rem;">
</div>
</div>
<div class="form-group">
<label>Logo</label>
<div style="display:flex;align-items:center;gap:0.75rem;">
<img id="company-logo-preview" src="" style="height:36px;display:none;border-radius:4px;">
<input type="file" id="company-logo-upload" accept="image/png,image/jpeg,image/svg+xml,image/webp" style="font-size:0.82rem;">
</div>
</div>
<div class="form-group full-width">
<label>Domainit (yksi per rivi)</label>
<textarea id="company-edit-domains" rows="3" placeholder="intra.yritys.fi&#10;intra.toinen.fi" style="font-family:monospace;font-size:0.85rem;"></textarea>
</div>
</div>
<button class="btn-primary" id="btn-save-company-settings" style="font-size:0.85rem;">Tallenna asetukset</button>
</div>
<!-- Postilaatikot -->
<div class="table-card" style="padding:1.5rem;margin-top:1rem;">
@@ -592,7 +614,7 @@
</div>
<footer>
<p>CuituNet Intra &mdash; Asiakashallintajärjestelmä</p>
<p id="footer-text">Noxus Intra &copy; 2026</p>
</footer>
</div>