# Správa uživatelů - Xtream Player ## Přehled Uživatelé jsou ukládáni v H2 databázi (`~/.xtream-player/users.db`). Aplikace vytvoří výchozího uživatele `admin`/`admin` při prvním spuštění, pokud žádní uživatelé neexistují. ## UserManager - Nástroj pro správu uživatelů K přidání, smazání nebo úpravě uživatelů slouží třída `UserManager`, kterou lze spustit jako standalone aplikaci. ### Spuštění interaktivního režimu ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager ``` Zobrazí menu s následujícími možnostmi: 1. Přidat uživatele 2. Smazat uživatele 3. Aktualizovat heslo 4. Vypsat všechny uživatele 5. Ověřit heslo 0. Odejít ### Použití z příkazové řádky #### Přidat uživatele ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager add username password ``` #### Smazat uživatele ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager delete username ``` #### Aktualizovat heslo ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager update username new_password ``` #### Vypsat všechny uživatele ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager list ``` #### Ověřit heslo ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager verify username password ``` ## Příklady ### Přidať nového administrátora ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager add admin123 MySecurePassword123 ``` ### Změnit heslo existujícího uživatele ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager update admin newPassword456 ``` ### Zobrazit všechny uživatele ```bash java -cp target/xtream-player-1.0.0.jar cz.kamma.xtreamplayer.UserManager list ``` Výstup: ``` ╔═══╦════════════════════╦═══════════════════════════════╦═══════════════════════════════╗ ║ ID║ Username ║ Created At ║ Updated At ║ ╠═══╬════════════════════╬═══════════════════════════════╬═══════════════════════════════╣ ║ 1║ admin ║ 2026-03-09 10:30:45.123 ║ 2026-03-09 10:30:45.123 ║ ║ 2║ admin123 ║ 2026-03-09 10:35:12.456 ║ 2026-03-09 10:35:12.456 ║ ╚═══╩════════════════════╩═══════════════════════════════╩═══════════════════════════════╝ Total: 2 user(s) ``` ## Architektura ### UserStore - **Třída**: `cz.kamma.xtreamplayer.UserStore` - **Odpovědnost**: Správa perzistentního úložiště uživatelů v H2 databázi - **Metody**: - `initialize()` - Initialisace databázové tabulky - `createUser(username, password)` - Vytvoří nového uživatele - `updatePassword(username, newPassword)` - Změní heslo - `deleteUser(username)` - Odstraní uživatele - `getUser(username)` - Retrieves uživatele - `getAllUsers()` - Načte všechny uživatele - `verifyPassword(username, password)` - Ověří heslo - `userExists(username)` - Zkontroluje existenci ### UserAuthenticator - **Třída**: `cz.kamma.xtreamplayer.UserAuthenticator` - **Odpovědnost**: Správa session tokenů a přihlašování - **Metody**: - `authenticate(username, password)` - Přihlášení a vygenerování tokenu - `validateToken(token)` - Ověření tokenu - `isTokenValid(token)` - Kontrola validity tokenu - `revokeToken(token)` - Zrušení tokenu ### UserManager - **Třída**: `cz.kamma.xtreamplayer.UserManager` - **Odpovědnost**: CLI nástroj pro správu uživatelů - **Režimy**: - Interaktivní - Menu-driven UI - Příkazová řádka - Přímá spuštění příkazů ## Bezpečnost - Hesla jsou hashována pomocí SHA-256 a zakódována v Base64 - Session tokeny jsou generovány pomocí `SecureRandom` a mají platnost 24 hodin - Databáze je chráněna stejně jako ostatní aplikační data v `~/.xtream-player/` ## Migrace ze starý verze Pokud upgradujete z verze bez databázové autentizace: 1. Aplikace automaticky vytvoří nový soubor `~/.xtream-player/users.db` 2. Výchozí uživatel `admin`/`admin` bude vytvořen automaticky 3. Můžete přidat nebo upravit uživatele pomocí `UserManager`