# SMTP Autentizace - Vylepšení Chybových Hlášení

## Problém
SMTP selhalo s chybou `535 Authentication Failed` bez jasného upozornění na kontrolu hesla.

## Řešení
Implementovány lepší chybové zprávy a upozornění při selhání SMTP autentizace.

## Provedené změny

### 1. Backend (`internal/controllers/base_controller.go`)
**Endpoint:** `POST /api/v1/setup/validate-smtp`

Vylepšeno rozpoznávání a hlášení běžných SMTP chyb:
- **535 / Authentication Failed**: Upozornění na kontrolu uživatelského jména a hesla
- **530**: Upozornění, že server vyžaduje autentizaci
- **Connection refused**: Upozornění na kontrolu hostu a portu
- **TLS/Certificate errors**: Upozornění na kontrolu nastavení šifrování

### 2. Frontend - Setup Page (`frontend/src/pages/SetupPage.tsx`)

#### Vylepšený Test SMTP tlačítko:
- **Barevné označení**: Tlačítko má modrou barvu (`colorScheme="blue"`)
- **Podrobnější úspěšná zpráva**: Zobrazí se konkrétní potvrzení
- **Specifická chybová zpráva pro 535**: 
  - Titulek: `⚠️ Chyba autentizace (535)`
  - Popis: Jasné upozornění zkontrolovat heslo a ujistit se, že je zkopírováno bez mezer
- **Delší doba zobrazení**: Chybové zprávy se zobrazují 10 sekund místo 7

#### Nový info alert:
Přidán modře orámovaný informační box pod tlačítkem "Otestovat SMTP":
```
ℹ️ Před dokončením nastavení otestujte SMTP připojení.
Nejčastější chyba: nesprávné heslo. Ujistěte se, že heslo je zkopírováno přesně bez mezer.
```

### 3. Frontend - Admin Settings (`frontend/src/pages/admin/SettingsAdminPage.tsx`)

Vylepšeno hlášení chyb při testu e-mailu v administraci:
- Detekce 535 chyby autentizace
- Specifické upozornění na aplikační hesla pro některé poskytovatele
- Delší doba zobrazení chybových zpráv (10 sekund)

## Testování

### Test 1: Správné přihlašovací údaje
1. Otevřete setup stránku (`/setup`)
2. Vyplňte správné SMTP údaje
3. Klikněte na "Otestovat SMTP"
4. **Očekávaný výsledek**: Zelená notifikace "✓ SMTP ověřeno" s potvrzením

### Test 2: Chybné heslo (535)
1. Vyplňte správný host, port, username
2. Zadejte **záměrně špatné heslo**
3. Klikněte na "Otestovat SMTP"
4. **Očekávaný výsledek**: 
   - Červená notifikace s titulem `⚠️ Chyba autentizace (535)`
   - Text: "Zkontrolujte uživatelské jméno a zejména heslo. Ujistěte se, že heslo je správně zkopírované bez mezer."
   - Zobrazí se na 10 sekund

### Test 3: Chybný host/port
1. Zadejte neexistující SMTP server
2. Klikněte na "Otestovat SMTP"
3. **Očekávaný výsledek**: Chybová zpráva s upozorněním na kontrolu hostu a portu

### Test 4: Admin settings test
1. Přihlaste se do administrace
2. Přejděte na Nastavení → Systém
3. V sekci SMTP zadejte špatné heslo
4. Klikněte "Odeslat test"
5. **Očekávaný výsledek**: Podobné upozornění jako v setupu, včetně zmínky o aplikačních heslech

## Běžné příčiny 535 chyby

1. **Špatné heslo**: Nejčastější příčina
2. **Mezery v hesle**: Kopírování z PDF nebo webové stránky může přidat skryté mezery
3. **Aplikační hesla**: Gmail, Outlook.com a další vyžadují speciální aplikační heslo místo běžného
4. **2FA povoleno**: Pokud je zapnuta dvoufázová autentizace, běžné heslo nefunguje
5. **Uzamčený účet**: Přílišné pokusy o přihlášení mohou dočasně uzamknout účet

## Doporučení pro uživatele

1. **Vždy otestujte SMTP před dokončením setupu**
2. Zkopírujte heslo pomocí "zobrazit heslo" funkce a přímého označení (ne triple-click)
3. U Gmailu použijte [aplikační heslo](https://support.google.com/accounts/answer/185833)
4. U Outlooku/Office 365 použijte [aplikační heslo](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9)
5. Zkontrolujte, že port odpovídá typu šifrování:
   - Port 465: SSL (zaškrtněte "Použít TLS")
   - Port 587: STARTTLS (zaškrtněte "Použít TLS")

## Technické detaily

### Backend validace
```go
// Rozpoznává tyto chyby:
- "535" nebo "authentication failed" → Chyba autentizace
- "530" → Vyžadována autentizace  
- "connection refused" nebo "no route to host" → Problém s připojením
- "certificate" nebo "tls" → Problém s TLS/SSL
```

### Frontend detekce
```typescript
const isAuthError = errorMsg.includes('535') || 
                   errorMsg.toLowerCase().includes('authentication');
```

## Související soubory

- `internal/controllers/base_controller.go` - Backend SMTP validace
- `frontend/src/pages/SetupPage.tsx` - Setup stránka s SMTP testem
- `frontend/src/pages/admin/SettingsAdminPage.tsx` - Admin nastavení s testem e-mailu
- `frontend/src/services/setup.ts` - TypeScript typy a API volání

---

**Vytvořeno:** 2025-01-12  
**Verze:** 1.0  
**Status:** ✅ Implementováno a připraveno k testování
