diff --git a/admin.php b/admin.php index e850f72..83959f0 100644 --- a/admin.php +++ b/admin.php @@ -41,6 +41,37 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { header('Location: /admin.php'); exit; } + if ($action === 'save-openai-api-key') { + if (!diagnostic_admin_is_authenticated()) { + diagnostic_flash_set('warning', 'Zaloguj się jako administrator, aby zapisać klucz OpenAI.'); + header('Location: /admin.php'); + exit; + } + + $openAiApiKey = preg_replace('/\s+/', '', (string)($_POST['openai_api_key'] ?? '')) ?? ''; + if (!diagnostic_openai_api_key_is_valid($openAiApiKey)) { + diagnostic_flash_set('danger', 'Podaj poprawny klucz API OpenAI. Klucz powinien być kompletny i bez spacji.'); + header('Location: /admin.php'); + exit; + } + + diagnostic_admin_setting_set('openai_api_key', $openAiApiKey); + diagnostic_flash_set('success', 'Własny klucz API OpenAI został zapisany. Nowe zapytania AI będą używały tego klucza.'); + header('Location: /admin.php'); + exit; + } + if ($action === 'remove-openai-api-key') { + if (!diagnostic_admin_is_authenticated()) { + diagnostic_flash_set('warning', 'Zaloguj się jako administrator, aby usunąć klucz OpenAI.'); + header('Location: /admin.php'); + exit; + } + + diagnostic_admin_setting_set('openai_api_key', null); + diagnostic_flash_set('info', 'Zapisany klucz API OpenAI został usunięty. System wrócił do domyślnej konfiguracji proxy.'); + header('Location: /admin.php'); + exit; + } if ($action === 'resend-report') { if (!diagnostic_admin_is_authenticated()) { diagnostic_flash_set('warning', 'Zaloguj się jako administrator, aby ponownie wysłać raport.'); @@ -91,6 +122,7 @@ if (!$selectedAttempt && !empty($attempts)) { $questionMap = diagnostic_question_map(); $credentials = diagnostic_admin_credentials(); $notificationConfig = diagnostic_admin_is_authenticated() ? diagnostic_admin_notification_config() : ['configured_email' => '', 'fallback_email' => '', 'effective_email' => '', 'source' => 'none']; +$openAiConfig = diagnostic_admin_is_authenticated() ? diagnostic_admin_openai_key_config() : ['configured' => false, 'masked_key' => '']; ?> @@ -183,36 +215,81 @@ $notificationConfig = diagnostic_admin_is_authenticated() ? diagnostic_admin_not
Gdy użytkownik poda numer telefonu po ukończeniu diagnozy, system wyśle powiadomienie e-mail właśnie na ten adres.
-