Commit Graph

6 Commits

Author SHA1 Message Date
eed1ac5639 Migroi kaikki data vanhalta intra.cuitunet.fi -palvelimelta
FTP:llä haettu:
- 4 yritystä (CuituNet, Web1, Empor, Woima Services)
- 35 CuituNet-asiakasta + 1 liidi
- 1 Web1-asiakas
- 3 käyttäjää (admin, Jukka, ville)
- Brändäyskentät lisätty companies.json:iin

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 14:26:11 +02:00
52bf1bd300 Päivitä CuituNetin data vanhalta palvelimelta (intra.cuitunet.fi)
Haettu API:n kautta: 2 asiakasta, 1 liidi.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 14:24:44 +02:00
78af39b252 Lisää CuituNetin asiakasdata gittiin
Asiakkaat, liidit, tiketit, asetukset, arkisto ja changelog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 14:19:59 +02:00
712e9a1222 Lisää data-tiedostot gittiin + dynaaminen SITE_URL
- companies.json, users.json, config.json gitin seurantaan
- SITE_URL dynaaminen HTTP_HOST:in mukaan
- MAIL_FROM vaihdettu noreply@noxus.fi
- CuituNet Intra → Noxus Intra sähköposteissa

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 14:18:23 +02:00
ab03eb7e61 Fix data loss: remove data files from git, add gitignore, auto-recover
- Remove data/companies.json and data/companies/cuitunet/config.json from git
  (tracked data files get overwritten on every deploy, causing data loss)
- Add data/companies/*/ and data/tickets.json to .gitignore
- Migration now auto-recovers companies.json and config.json if missing
  (handles case where git clean removes untracked data files)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:25:36 +02:00
c34b5a2c26 Add multi-tenant support with per-company data isolation
Implement full multi-company architecture:
- Per-company directory structure (data/companies/{id}/)
- Automatic migration from single-tenant to multi-tenant
- Company management admin tab (create, edit, delete companies)
- Per-company IMAP mailbox configuration (multiple mailboxes per company)
- User access control per company (companies array on users)
- Company switcher in header (shown when user has access to >1 company)
- Session-based company context with check_auth fallback for old sessions
- Ticket list shows mailbox name instead of sender
- IMAP settings moved from global config to company-specific config
- All data endpoints protected with requireCompany() guard

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:04:24 +02:00