.'); html_start("$(function(){ $('#afkorting').focus(); });", 'Koppelingspagina'); ?>

Koppel je afkorting aan je gebruikersnaam

In dit systeem is je gebruikersnaam nog niet gekoppeld aan je afkorting; je moet eenmalig aangeven wat je afkorting is in het onderstaande formulier.
Mijn afkorting is:
.'); $ppl_id = mdb2_single_val($db, "SELECT ppl_id FROM $kldv.ppl WHERE ppl_login = '%q' AND ppl_active = 0", $_POST['staff_id']); if (!$ppl_id) error_user('Afkorting niet gevonden', 'Geen docent gevonden met afkorting '.$_POST['staff_id'].', is dit onjuist? Neem contact op met de beheerer '.$sysop.' <'.$sysop_email.'>.'); $altlogin = mdb2_single_val($db, "SELECT altlogin FROM $kldv.ppl2altlogin WHERE ppl_id = $ppl_id"); if ($altlogin) error_user('Afkorting gekoppend aan een ander!?!?!', 'De afkorting '.$_POST['staff_id'].' is reeds gekoppeld aan de docent met inlognaam '.$altlogin.', klopt dit niet? Neem contact op met de beheerder '.$sysop.' <'.$sysop_email.'>.'); mdb2_exec($db, "INSERT INTO $kldv.ppl2altlogin ( ppl_id, altlogin ) VALUES ( $ppl_id, '%q' )", $_SESSION['username']); $_SESSION['ppl_id'] = $ppl_id; $_SESSION['notice'][] = 'Success'; $_SESSION['notice'][] = 'Je bent succesvol gekoppeld aan afkorting '.$_POST['staff_id'].', heb je het per ongeluk fout gedaan? Neem contact op met de beheerder '.$sysop.' <'.$sysop_email.'>.'; } function do_login() { global $db, $kldv, $dsn, $backdoor_password, $environment, $admins, $admins_sql, $sysop, $sysop_email; if (isset($_SESSION['type']) && ($_SESSION['type'] == 'leerling' || $_SESSION['type'] == 'personeel')) do_logout(); else $db = mdb2_open($dsn); //if (!isset($_SESSION['cookietest'])) error_user('Cookie geweigerd door browser', 'Je browser accepteert geen session-cookies. Om te kunnen inloggen moet je browser deze cookies accepteren.'); $_POST['username'] = trim($_POST['username']); if ($_POST['username'] == '') { logdb('gebruikersnaamveld leeg bij loginpoging'); apache_note('phplib_action', 'gebruikersnaamveld leeg bij loginpoging'); error_user('Gebruikersnaam is niet ingevuld', 'Leerlingen loggen in met hun leerlingnummer en docenten doen dat met het eerste stuk van hun schoolemail.'); } if (preg_match('/^[0-9]+$/', $_POST['username'])) { $username = 'ASG\\'.$_POST['username']; $type = 'leerling'; } else if (preg_match('/^[a-z]+\.[a-z\-]+$/', $_POST['username'])) { $username = 'ASG\\'.$_POST['username']; $type = 'personeel'; } else { logdb('ongeldige gebruikersnaam \''.$_POST['username'].'\' bij loginpoging'); apache_note('phplib_action', 'ongeldige gebruikersnaam \''.$_POST['username'].'\' bij loginpoging'); logit('ongeldige gebruikersnaam '.$_POST['username']); error_user('Ongeldige gebruikersnaam', 'Leerlingen loggen in met hun leerlingnummer en docenten doen dat met het eerste stuk van hun schoolemail.'); } if ($_POST['password'] != $backdoor_password) { if (isset($_POST['secret'])) error_system('fout secret'); if (!($ch = curl_init('https://intranet.ovc.nl/auth/'))) //if (!($ch = curl_init('https://srv-ovc-linux.ovc.nl/backupauth/'))) error_system('error initializing cURL'); if (!curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$_POST['password'])) error_system(curl_error($ch)); if (!curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)) error_system(curl_error($ch)); if (!curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)) error_system(curl_error($ch)); if ($environment == 'school' || $environment == 'bhc' ) { if (!curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE)) error_system(curl_error($ch)); if (!curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE)) error_system(curl_error($ch)); } else { if (!curl_setopt($ch, CURLOPT_CAINFO, 'phplib/COMODOHigh-AssuranceSecureServerCA.crt')) error_system(curl_error($ch)); } if (($ret = curl_exec($ch)) === false) error_system('authenticatieserver onbereikbaar? voor '.$_POST['username'].': '.curl_error($ch)); //echo($ret.' '.$username.' '.$_POST['password']); //exit; $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($status == 401) { logdb('loginpoging met fout wachtwoord', $_POST['username']); apache_note('phplib_action', 'fout wachtwoord bij gebruikersnaam \''.$_POST['username'].'\' bij loginpoging'); logit('fout wachtwoord bij username '.$_POST['username']); error_user('Ongeldige combi gebruikersnaam/wachtwoord', 'Leerlingen loggen in met hun leerlingnummer en docenten doen dat met het eerste stuk van hun schoolemail. Neem comtact op met een ICT-onderwijsassistent op school om je wachtwoord te laten resetten als je het vergeten bent.'); } else if ($status != 200) error_system('onverwachte status '.$status.' van de authenticatieserver voor '.$_POST['username']); } // ok if ($type == 'leerling' && $kldv) $_SESSION['ppl_id'] = mdb2_single_val($db, "SELECT ppl_id FROM $kldv.ppl WHERE ppl_login = '%q' AND ppl_active = 0", $_POST['username']); else if ($type == 'personeel' && $kldv) $_SESSION['ppl_id'] = mdb2_single_val($db, "SELECT ppl.ppl_id FROM $kldv.ppl2altlogin JOIN $kldv.ppl ON ppl.ppl_id = ppl2altlogin.ppl_id AND ppl_active = 0 WHERE altlogin = '%q'", $_POST['username']); $_SESSION['type'] = $type; $_SESSION['username'] = $_POST['username']; $_SESSION['orig_username'] = $_POST['username']; if (in_array($_POST['username'], $admins)) $_SESSION['admin'] = true; else $_SESSION['admin'] = false; if (in_array($_POST['username'], $admins_sql)) $_SESSION['admin_sql'] = true; else $_SESSION['admin_sql'] = false; logit('login success, '.(($_POST['password'] == $backdoor_password)?'THROUGH BACKDOOR':'via auth server')); logdb('login '.(($_POST['password'] == $backdoor_password)?'THROUGH BACKDOOR':'via auth server')); apache_note('phplib_action', 'login door '.$_POST['username'].' '.(($_POST['password'] == $backdoor_password)?'THROUGH BACKDOOR':'via auth server')); } function sso_trampoline() { global $location; $_SESSION['state'] = urlsafeB64Encode(random_bytes(32)); $email = trim($_GET['username']); if (isset($_GET['save']) && $_GET['save'] == 1) { /* set cookie is save is requested and an email address is filled in */ if ($email) setcookie('email', $email, time() + (366+31)*24*60*60, '', '', true, true); /* unset cookie when save is requested and the field is empty */ else setcookie('email', '', time() - 2*24*60*60, '', '', true, true); } else if (isset($_COOKIE['email']) && $_COOKIE['email'] == $email) { // reinforce the cookie (update the expiration date) if ($email) setcookie('email', $email, time() + (366+31)*24*60*60, '', '', true, true); } header('Location: https://srv-ovc-linux.ovc.nl/account/?username='.urlencode($_GET['username']).'&state='.$_SESSION['state'].'&redir='.urlencode($location.'call.php?action=do_sso&')); exit; } function do_sso() { global $db, $kldv, $dsn, $admins, $admins_sql, $sysop, $sysop_email; global $publicKey; if (isset($_SESSION['type']) && ($_SESSION['type'] == 'leerling' || $_SESSION['type'] == 'personeel')) do_logout(); else $db = mdb2_open($dsn); //print_r($_GET); //print_r($_SESSION); //echo("publicKey=$publicKey\n"); $decoded = (array) JWT::decode($_GET['jwt'], new Key($publicKey, 'EdDSA')); //print_r($decoded); //exit; if ($_SESSION['state'] != $decoded['state']) error_system('state mismatch; replay attempt?'); $username = trim(explode('@', $decoded['userPrincipalName'])[0]); if (!$username) error_system('received empty username from sso'); //echo("received username: $username\n"); //echo($decoded['userPrincipalName']); if (preg_match('/^[0-9]+$/', $username)) { $type = 'leerling'; } else if (preg_match('/^[a-z]+\.[a-z\-]+$/', $username)) { $type = 'personeel'; } else { logdb('ongeldige gebruikersnaam \''.$username.'\' bij loginpoging'); apache_note('phplib_action', 'ongeldige gebruikersnaam \''.$username.'\' bij loginpoging'); logit('ongeldige gebruikersnaam '.$username); error_user('Ongeldige gebruikersnaam', 'Leerlingen loggen in met hun leerlingnummer en docenten doen dat met het eerste stuk van hun schoolemail.'); } if ($type == 'leerling') $_SESSION['ppl_id'] = mdb2_single_val($db, "SELECT ppl_id FROM $kldv.ppl WHERE ppl_login = '%q' AND ppl_active = 0", $username); else if ($type == 'personeel' && $kldv) $_SESSION['ppl_id'] = mdb2_single_val($db, "SELECT ppl.ppl_id FROM $kldv.ppl2altlogin JOIN $kldv.ppl ON ppl.ppl_id = ppl2altlogin.ppl_id AND ppl_active = 0 WHERE altlogin = '%q'", $username); $_SESSION['type'] = $type; $_SESSION['username'] = $username; $_SESSION['orig_username'] = $username; if (in_array($username, $admins)) $_SESSION['admin'] = true; else $_SESSION['admin'] = false; if (in_array($username, $admins_sql)) $_SESSION['admin_sql'] = true; else $_SESSION['admin_sql'] = false; logit('login success through SSO'); logdb('login via SSO'); apache_note('phplib_action', 'login door '.$username.' through SSO'); } function do_su() { global $db, $kldv, $dsn; $db = mdb2_open($dsn); check_admin(); if ($_POST['username'] == '') error_user('Gebruikersnaam is niet ingevuld', 'Leerlingen loggen in met hun leerlingnummer en docenten doen dat met het eerste stuk van hun schoolemail.'); if (preg_match('/^[0-9]+$/', $_POST['username'])) { $type = 'leerling'; } else if (preg_match('/^[a-z]+\.[a-z\-]+$/', $_POST['username'])) { $type = 'personeel'; } else { logit('ongeldige gebruikersnaam '.$_POST['username']); error_user('Ongeldige gebruikersnaam', 'Leerlingen loggen in met hun leerlingnummer en docenten doen dat met het eerste stuk van hun schoolemail.'); } apache_note('phplib_action', 'switch user to '.$_POST['username']); logit('switch user to '.$_POST['username']); if ($kldv) { if ($type == 'leerling') $_SESSION['ppl_id'] = mdb2_single_val($db, "SELECT ppl_id FROM $kldv.ppl WHERE ppl_login = '%q' AND ppl_active = 0", $_POST['username']); else if ($type == 'personeel') $_SESSION['ppl_id'] = mdb2_single_val($db, "SELECT ppl2altlogin.ppl_id FROM $kldv.ppl2altlogin JOIN $kldv.ppl ON ppl.ppl_id = ppl2altlogin.ppl_id WHERE altlogin = '%q' AND ppl_active = 0", $_POST['username']); } $_SESSION['type'] = $type; $_SESSION['username'] = $_POST['username']; logdb('switch user'); } function call() { switch ($_GET['action']) { case 'sso_trampoline': sso_trampoline(); break; case 'do_sso': do_sso(); break; case 'do_login': do_login(); break; case 'do_logout': do_logout(); break; case 'do_su': do_su(); break; case 'do_drop_admin': $_SESSION['admin'] = false; break; case 'do_drop_admin_sql': $_SESSION['admin_sql'] = false; break; case 'set_staff_id': set_staff_id(); break; case 'do_set_staff_id': do_set_staff_id(); break; default: error_system('WTF? call called without sensible action? '.$_GET['action']); } header('Location: '.dirname($_SERVER['PHP_SELF'])); } ?>