bernd
Login vial Client-Cert über Unterverzeichnis
bernd commited 18b15c1 at 2009-03-05 09:14:11
<?php
require_once('../config.php');
global $config;
global $prefix;
$prefix = '../';
// Das Parent-Verzeichnis in den Include-Pfad, da wir uns jetzt in einem anderen Verzeichnis befinden.
ini_set('include_path', ini_get('include_path').':../');
require_once('session/start.php');
require_once('inc/base.php');
require_once('inc/debug.php');
require_once('inc/error.php');
function get_logins_by_cert($cert)
{
$cert = mysql_real_escape_string(str_replace(array('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----', ' ', "\n"), array(), $cert));
$query = "SELECT type,username,startpage FROM system.clientcert WHERE cert='{$cert}'";
$result = db_query($query);
if (mysql_num_rows($result) < 1)
return NULL;
else {
$ret = array();
while ($row = mysql_fetch_assoc($result)) {
$ret[] = $row;
}
return $ret;
}
}
if (isset($_REQUEST['type']) && isset($_REQUEST['username'])) {
if (!isset($_ENV['REDIRECT_SSL_CLIENT_CERT']))
system_failure('Ihr Browser hat kein Client-Zertifikat gesendet');
$ret = get_logins_by_cert($_ENV['REDIRECT_SSL_CLIENT_CERT']);
foreach ($ret as $account) {
if (($account['type'] == $_REQUEST['type']) && ($account['username'] == $_REQUEST['username'])) {
$uid = $account['username'];
$role = find_role($uid, '', True);
setup_session($role, $uid);
$destination = 'go/index/index';
if (check_path($account['startpage']))
$destination = $account['startpage'];
header('Location: ../'.$destination);
die();
}
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX