This commit is contained in:
Tomáš Dvořák
2025-10-16 13:32:05 +02:00
commit 12cba639b9
663 changed files with 168914 additions and 0 deletions
+119
View File
@@ -0,0 +1,119 @@
# 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í