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