prepare("SELECT * FROM integrations WHERE user_id = ? AND provider = 'JIRA'"); $stmtExisting->execute([$userId]); $existing = $stmtExisting->fetch(); $existingSettings = json_decode($existing['settings'] ?? '{}', true) ?: []; if (($jiraToken === '' || $jiraToken === '••••••••••••••••') && !empty($existingSettings['jira_api_token']) && $existingSettings['jira_api_token'] !== '••••••••••••••••') { $jiraToken = $existingSettings['jira_api_token']; } $accountName = $existingSettings['account_name'] ?? ''; $accountId = $existingSettings['account_id'] ?? ''; if (!empty($jiraDomain) && !empty($jiraEmail) && !empty($jiraToken)) { $testRes = jira_test_connection($jiraDomain, $jiraEmail, $jiraToken); if (!$testRes['success']) { $message = "Jira Verbindingsfout: " . $testRes['error']; $messageType = 'error'; } else { $accountName = $testRes['user']['displayName'] ?? 'Jira Gebruiker'; $accountId = $testRes['user']['accountId'] ?? ''; $message = "Verbinding met Jira geslaagd! Ingelogd als: {$accountName}"; $messageType = 'success'; } } else { $message = "Jira instellingen opgeslagen."; $messageType = 'success'; } $newSettings = [ 'jira_domain' => $jiraDomain, 'jira_email' => $jiraEmail, 'jira_api_token' => $jiraToken, 'account_name' => $accountName, 'account_id' => $accountId, ]; $stmt = $db->prepare(" INSERT INTO integrations (user_id, provider, is_enabled, is_demo_mode, settings, last_sync_at) VALUES (?, 'JIRA', 1, 0, ?, NOW()) ON DUPLICATE KEY UPDATE is_demo_mode = 0, settings = VALUES(settings), last_sync_at = NOW() "); $stmt->execute([$userId, json_encode($newSettings)]); unset($_SESSION["jira_issues_user_{$userId}"]); } // 4. Jira ontkoppelen elseif ($action === 'disconnect_jira') { jira_disconnect($userId); header('Location: /profile.php?success=' . urlencode('Atlassian Jira is succesvol ontkoppeld.')); exit; } // 5. Notificatievoorkeuren opslaan elseif ($action === 'save_notifications') { $settings = [ 'enabled' => isset($_POST['notif_enabled']) ? 1 : 0, 'lead_time_minutes' => (int)($_POST['lead_time_minutes'] ?? 5), 'repeat_count' => (int)($_POST['repeat_count'] ?? 2), 'repeat_interval_minutes' => (int)($_POST['repeat_interval_minutes'] ?? 2), 'sound_enabled' => isset($_POST['sound_enabled']) ? 1 : 0, ]; update_user_notification_settings($userId, $settings); $message = "Uw persoonlijke notificatievoorkeuren zijn succesvol opgeslagen."; $messageType = 'success'; } // 6. Profielnaam bijwerken elseif ($action === 'update_profile') { $name = trim($_POST['name'] ?? ''); if (strlen($name) < 2) { $message = "Voer een geldige naam in van minimaal 2 tekens."; $messageType = 'error'; } else { $stmt = $db->prepare("UPDATE users SET name = ? WHERE id = ?"); $stmt->execute([$name, $userId]); $_SESSION['user_name'] = $name; $user['name'] = $name; $message = "Uw profielnaam is succesvol bijgewerkt."; $messageType = 'success'; } } // 7. Wachtwoord wijzigen elseif ($action === 'change_password') { $currentPassword = $_POST['current_password'] ?? ''; $newPassword = $_POST['new_password'] ?? ''; $confirmPassword = $_POST['confirm_password'] ?? ''; $stmtU = $db->prepare("SELECT password_hash FROM users WHERE id = ?"); $stmtU->execute([$userId]); $storedHash = $stmtU->fetchColumn(); if (!password_verify($currentPassword, $storedHash)) { $message = "Uw huidige wachtwoord is niet correct ingevoerd."; $messageType = 'error'; } elseif (strlen($newPassword) < 8) { $message = "Het nieuwe wachtwoord moet minimaal 8 tekens lang zijn."; $messageType = 'error'; } elseif ($newPassword !== $confirmPassword) { $message = "Het nieuwe wachtwoord en de bevestiging komen niet overeen."; $messageType = 'error'; } else { $newHash = password_hash($newPassword, PASSWORD_DEFAULT); $stmtUp = $db->prepare("UPDATE users SET password_hash = ? WHERE id = ?"); $stmtUp->execute([$newHash, $userId]); $message = "Uw wachtwoord is succesvol gewijzigd."; $messageType = 'success'; } } } // Actuele gegevens ophalen $stmtUser = $db->prepare("SELECT * FROM users WHERE id = ?"); $stmtUser->execute([$userId]); $userProfile = $stmtUser->fetch(); // Outlook status ophalen $stmtOutlook = $db->prepare("SELECT * FROM integrations WHERE user_id = ? AND provider = 'OUTLOOK'"); $stmtOutlook->execute([$userId]); $outlookRow = $stmtOutlook->fetch(); $isOutlookConnected = !empty($outlookRow['access_token']) && empty($outlookRow['is_demo_mode']); $outlookSettings = json_decode($outlookRow['settings'] ?? '{}', true) ?: []; // Jira status ophalen $stmtJira = $db->prepare("SELECT * FROM integrations WHERE user_id = ? AND provider = 'JIRA'"); $stmtJira->execute([$userId]); $jiraRow = $stmtJira->fetch(); $jiraSettings = json_decode($jiraRow['settings'] ?? '{}', true) ?: []; $isJiraConnected = !empty($jiraSettings['jira_api_token']); $companyJiraDomain = jira_get_company_domain(); $activeJiraDomain = !empty($jiraSettings['jira_domain']) ? $jiraSettings['jira_domain'] : $companyJiraDomain; // Centrale Azure App configuratie status $appConfig = microsoft_get_app_config(); // Notificatie-instellingen $notifSettings = get_user_notification_settings($userId); $pageTitle = 'Mijn Profiel & Koppelingen — Fociz'; require_once __DIR__ . '/includes/header.php'; ?>

Beheerder Collega 2FA Beveiligd

• Lid sinds

Mijn Microsoft 365 Agenda

Live Verbonden Niet Gekoppeld

Synchroniseer uw agenda-afspraken automatisch met uw dagplanning

Gekoppeld Microsoft Account
Microsoft Teams Koppeling Automatische Meeting Links Vergaderlinks in uw agenda worden direct klikbaar in uw dagplanning
Uw agenda synchroniseert live. Afspraken van vandaag verschijnen direct in uw Dagplanning.
Naar Dagplanning →

Verbind uw Microsoft Outlook Agenda

Krijg uw dagelijkse afspraken automatisch te zien in Fociz en ontvang herinneringen vóórdat uw vergaderingen beginnen.

U wordt veilig doorgestuurd naar Microsoft om in te loggen
Microsoft 365 koppeling is nog niet geconfigureerd door de beheerder. Stel Azure in via Systeembeheer → Vraag uw beheerder om dit in te schakelen.

Mijn Atlassian Jira Koppeling

Verbonden Niet Gekoppeld

Importeer uw toegewezen Jira issues direct naar uw dagelijkse takenlijst

Standaard ingevuld door beheerder indien beschikbaar
API Token Aanmaken
Verbonden als: Verbinding wordt automatisch gevalideerd bij het opslaan

Mijn Meldingen & Agenda Herinneringen

Krijg realtime meldingen vanuit uw browser zodra een afspraak nadert

Toestemming van Browser Vereist Klik op de knop om pushmeldingen in te schakelen voor Fociz.
Meldingen Actief Automatisch waarschuwen bij naderende afspraken
Subtiel Geluidssignaal Speel een zachte chime af bij binnenkomst van de herinnering

Persoonlijke Gegevens

E-mailadres is gekoppeld aan uw account en 2FA.

Wachtwoord Wijzigen