xtream-player/USERS_MANAGEMENT.md
2026-03-09 21:07:34 +01:00

123 lines
4.7 KiB
Markdown

# 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`