# Galileo Kanban - Administrator Manual / Administrátorská příručka

[English Version](#english) | [Česká verze](#čeština)

---

<a id="english"></a>
## 🇬🇧 English: Administrator Manual (Detailed)

This document provides a highly detailed explanation of deploying, configuring, and managing the Galileo Kanban platform.

### 1. File Structure & Setup Scripts
When you unzip the application, you will notice several root files designed to help you manage the environment initially.

- **`database.sql` & `new_database.sql`**: Contains the raw MySQL/MariaDB database schema. Use this to import tables manually via phpMyAdmin or Adminer.
- **`setup_reset_db.php`**: A utility script used to re-initialize or reset the database environment. *Warning: Ensure this is deleted or secured in production to prevent unauthorized resets!*
- **`fix_db.php`**: In case of structure updates, this script helps patch the database schema automatically.
- **`export_db.php`**: A backup script that exports the current database state.

### 2. Configuration (`api/config.php`)
The heart of the application settings resides in `api/config.php`. It dictates how the backend connects to its resources and integrates with your corporate network.

**Core Constants:**
- `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME`: Database credentials.
- `DB_CHARSET`: Defines the encoding (default `utf8mb4` for full emoji support).

**Security Configuration:**
- `session.cookie_httponly` & `session.use_only_cookies`: Active by default to prevent XSS session hijacking.
- `session.cookie_secure`: Uncomment this line if you are running exclusively on HTTPS (highly recommended).

**LDAP & Active Directory Integration:**
- `USE_LDAP_AUTH` (bool): Toggles the integration. If `true`, the standard database password check is bypassed for the Windows AD check format.
- `LDAP_SERVER`: Point this to your domain controller (e.g. `ldap://domain.local`).
- `LDAP_DOMAIN`: Appended to the username. (e.g. `@domain.local`).
- `REQUIRE_ADMIN_APPROVAL`: If `true`, automatically recognized AD users must remain inactive until an admin manually activates them in the Admin Panel.

**SMTP / Email Delivery:**
- Used strictly for the "Forgot Password" functionality.
- Requires standard `SMTP_HOST`, `SMTP_PORT` (e.g., 465 for SSL), `SMTP_USER`, and `SMTP_PASS`. 

### 3. Application Security
The backend relies on secure Session Cookies (`PHPSESSID`). Ensure your web server has `session.save_path` correctly configured. 
- *Mobile App Support:* The backend includes an integration token mechanism (`mobile_token`) so that mobile wrappers (like the Android App) can bypass session loss and properly authenticate into the WebView.

### 4. Admin Panel Capabilities
The first registered user is automatically granted `admin` privileges. From the Admin View, you manage user lifecycles:
- **Activate / Deactivate:** Prevents a user from logging in without purging their task history and message logs. 
- **Force Password Reset:** Generates/assigns a new password for standard users. (Not applicable if AD/LDAP is actively hooked).
- **Transfer Ownership:** If an employee leaves, their boards are likely critical. You must elect a new owner from the board's team before deleting the user.
- **Delete User:** Eradicates the user footprint entirely from the database.

---

<a id="čeština"></a>
## 🇨🇿 Čeština: Administrátorská příručka (Podrobná)

Tento dokument poskytuje velmi detailní pohled na nasazení, konfiguraci a dlouhodobou správu instance Galileo Kanban.

### 1. Struktura a údržbové skripty
V hlavním adresáři projektu najdete po instalaci sadu servisních skriptů, které pomáhají udržovat systém.

- **`database.sql` & `new_database.sql`**: Čistá databázová struktura pro MySQL/MariaDB. Pokud narazíte na problémy s automatickým sestavením, použijte tyto pro import databáze přes nástroje jako phpMyAdmin.
- **`setup_reset_db.php`**: Nástrojový skript pro tvrdý restart a nahození tabulek databáze. *Varování: Skript na produkci bezpodmínečně vymažte nebo zaheslujte, aby nedošlo ke ztrátě dat neoprávněným spuštěním!*
- **`fix_db.php`**: Automatický migrační fix, který se používá pro aktualizace (patchování) chybějících struktur.
- **`export_db.php`**: Servisní zálohovací pomůcka pro export současných dat.

### 2. Konfigurační soubor (`api/config.php`)
Základním mozkem veškeré komunikace je soubor konfigurací s konstantami.

**Databázové jádro:**
- `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME`: Identifikační údaje k databázi na vašem NAS/Serveru.
- `DB_CHARSET`: Kódování databáze (z důvodu plné podpory emotikonů vždy `utf8mb4`).

**Nastavení zabezpečení (Sessions):**
- Proti krádežím sezení zásahem JavaScriptu (XSS) se spoléhá na `session.cookie_httponly`.
- Máte-li podepsaný SSL certifikát, na řádku 19 byste měli povinně odkomentovat pravidlo `session.cookie_secure = 1`.

**Propojení na Active Directory (LDAP):**
Aplikace má fantastickou podporu pro korporátní nasazení a Windows domény.
- `USE_LDAP_AUTH`: Nastavte na `true` pro aktivní přepnutí do AD ověřování.
- `LDAP_SERVER` a `LDAP_DOMAIN`: IP adresa doménového řadiče a sufix, který se nalepí za uživatelské ID.
- `REQUIRE_ADMIN_APPROVAL`: Při `true` se zaměstnanec sice platně připojí skrz doménu, ale systém mu nedovolí pracovat, dokud ho v Administraci neschválíte ručním přepnutím do aktivity. Skvělý bezpečnostní prvek.

**Emaily a SMTP (Obnova hesla):**
- `ENABLE_PASSWORD_RESET`: Aktivuje nebo skrývá odkaz Zapomenuté heslo. Vyžaduje nastavení `SMTP_HOST`, portu a ověřovacích schránkových udajů.

### 3. Vztah k mobilní aplikaci a relacím
Kanban nepoužívá JWT tokeny, ale tradiční serverové relace s vylepšením: aby mohl bezpečně běžet i uvnitř Android (*Capacitor WebView*) aplikace, backend podporuje zprostředkovatelský token `mobile_token`. Mobilní aplikace zavolá ověření, obdrží jednorázový token a ten použije načtením `index.php?mobile_token=...`, čímž se vnitřnímu jádru Androidu spolehlivě nastaví `PHPSESSID`.

### 4. Co zvládne Administrátor v aplikaci?
První účet vytvořený po instalaci je rovnou prohlášen za pána systému (`role: admin`). 
Přes červené tlačítko `Správa uživatelů` kontrolujete firemní životní cyklus:
- **Aktivovat / Deaktivovat:** V ideálním případě při odchodu člověka z oddělení pouze deaktivujete ("zamrazíte"). Nedostane se dovnitř, ale jeho chaty, jména dotažených úkolů a historie plně svítí u jeho avataru dále.
- **Změna hesla:** V případě potřeby (a bez SMTP) mu nastavíte nové provizorní heslo. Neplatí, pokud je spuštěn LDAP, tam si hesla spravuje AD politikou.
- **Přenos vlastnictví nástěnky:** Než uživateli účet nevratně zlikvidujete (`Smazat`), musíte jeho hlavní nástěnky přeprofilovat na jiného nového majitele, jinak by zmizely spolu s ním.
- **Smazání uživatele:** Finální řešení. Trvale fyzicky vyčistí databázi.
