示例#1
0
global $cas_auth_ver, $cas_auth_server, $cas_auth_port, $cas_auth_uri;
// phpCAS
/*
If we are not logged and in our browser enter an URL with a name of a course
e.g. http://www.chamilo.fr/chamilo/courses/COURSTESTOSETE/?id_session=0
We go to page api_not_allowed :
> You are not allowed to see this page.
> Sorry, you are not allowed to access this page, or maybe your connection has expired.
> Please click your browser's \"Back\" button or follow the link below to return to the previous page
If we click on the link to go to homepage, some datas are entered in $_SESSION and if we enter our CAS loggin, we go to api_not_allowad_page again
and again
As a result, if we are not logged on, we have to destroy the session variables, before calling CAS page
*/
if (api_is_anonymous()) {
    Session::destroy();
}
if (cas_configured()) {
    $firstpage = "";
    if (isset($_GET['firstpage'])) {
        $firstpage = $_GET['firstpage'];
        setcookie("GotoCourse", $firstpage);
    }
    if (!is_object($PHPCAS_CLIENT)) {
        phpCAS::client($cas_auth_ver, $cas_auth_server, $cas_auth_port, $cas_auth_uri);
        phpCAS::setNoCasServerValidation();
    }
    phpCAS::forceAuthentication();
    header('Location: ' . api_get_path(WEB_PATH) . api_get_setting('page_after_login'));
} else {
    header('Location: ' . api_get_path(WEB_PATH));
}
示例#2
0
<?php

// Show the CAS button to login using CAS
require_once api_get_path(SYS_PATH) . 'main/auth/cas/authcas.php';
$_template['show_message'] = false;
if (api_is_anonymous()) {
    $_template['cas_activated'] = api_is_cas_activated();
    $_template['cas_configured'] = cas_configured();
    $_template['show_message'] = true;
    // the default title
    $button_label = "Connexion via CAS";
    if (!empty($plugin_info['settings']['add_cas_login_button_cas_button_label'])) {
        $button_label = api_htmlentities($plugin_info['settings']['add_cas_login_button_cas_button_label']);
    }
    // the comm
    $comm_label = api_htmlentities($plugin_info['settings']['add_cas_login_button_cas_button_comment']);
    // URL of the image
    $url_label = $plugin_info['settings']['add_cas_login_button_cas_image_url'];
    $_template['button_label'] = $button_label;
    $_template['comm_label'] = $comm_label;
    $_template['url_label'] = $url_label;
}
示例#3
0
/**
* checks if the user already get a session
* @return the user login if the user already has a session ,false otherwise
**/
function cas_is_authenticated()
{
    global $cas_auth_ver, $cas_auth_server, $cas_auth_port, $cas_auth_uri;
    global $PHPCAS_CLIENT;
    global $logout;
    if (!cas_configured()) {
        return;
    }
    if (!is_object($PHPCAS_CLIENT)) {
        phpCAS::client($cas_auth_ver, $cas_auth_server, $cas_auth_port, $cas_auth_uri);
        phpCAS::setNoCasServerValidation();
    }
    $auth = phpCAS::checkAuthentication();
    if ($auth) {
        $login = trim(phpCAS::getUser());
        /*
          Get user  attributes. Here are the attributes for crdp platform
          sn => name
          ENTPersonMailInterne => mail
          ENTPersonAlias => login
          ENTPersonProfils => profil
          givenName => first name
        */
        /*$user=phpCAS::getAttributes();
        		$firstName = trim($user['givenName']);
        		$lastName = trim($user['sn']);
        		$login = trim($user['ENTPersonAlias']);
        		$profil = trim($user['ENTPersonProfils']);
        		$email = trim($user['ENTPersonMailInterne']);
        		$satus=5;
        		switch ($profil){
        			case 'admin_etab':
        				$status=3; //Session admin
        				break;
        			case 'admin_sie':
        				$status=3; //Session admin
        				break;
        			case 'National_3':
        				$status=1; // Teacher
        				break;
        			case 'National_1':
        				$status=5; // Student
        				break;
        			default:
        				$status=5; // Student
        		}*/
        if (!$logout) {
            // get user info from username
            $tab_user_info = UserManager::get_user_info($login);
            // user found in the chamilo database
            if (is_array($tab_user_info)) {
                // if option is on we update user automatically from ldap server
                if (api_get_setting("update_user_info_cas_with_ldap") == "true") {
                    $ldapuser = extldap_authenticate($login, 'nopass', true);
                    if ($ldap_user !== false) {
                        $chamilo_user = extldap_get_chamilo_user($ldapuser);
                        $chamilo_user['user_id'] = $tab_user_info['user_id'];
                        $chamilo_user['status'] = $tab_user_info['status'];
                        UserManager::update_user($chamilo_user["user_id"], $chamilo_user["firstname"], $chamilo_user["lastname"], $login, null, null, $chamilo_user["email"], $chamilo_user["status"], '', '', '', '', 1, null, 0, null, '');
                    }
                }
                return $login;
            } else {
                // if option is on we can ADD user automatically from ldap server or by modify own profil
                $user_added = false;
                switch (api_get_setting("cas_add_user_activate")) {
                    case PLATFORM_AUTH_SOURCE:
                        // user will have to modify firstname, lastname, email in chamilo profil edit
                        $userdata = get_lang("EditInProfil");
                        UserManager::create_user($userdata, $userdata, '5', $userdata, $login, 'casplaceholder', '', '', '', '', CAS_AUTH_SOURCE);
                        $user_added = $login;
                        break;
                    case LDAP_AUTH_SOURCE:
                        // user info are read from ldap connexion
                        // get user info from ldap server
                        // user has already been authenticated by CAS
                        // If user not found in LDAP, user not created
                        $ldapuser = extldap_authenticate($login, 'nopass', true);
                        if ($ldap_user !== false) {
                            $chamilo_user = extldap_get_chamilo_user($ldapuser);
                            $chamilo_user['username'] = $login;
                            $chamilo_user['auth_source'] = CAS_AUTH_SOURCE;
                            $chamilo_uid = external_add_user($chamilo_user);
                            $user_added = $login;
                        }
                        break;
                    default:
                        break;
                }
                return $user_added;
            }
        }
        //		//If the user is in the dokeos database and we are ,not in a logout request, we upgrade his infomration by ldap
        //		if (! $logout){
        //			$user_table = Database::get_main_table(TABLE_MAIN_USER);
        //			$sql = "SELECT user_id, username, password, auth_source, active, expiration_date ".
        //				"FROM $user_table ".
        //				"WHERE username = '$login' ";
        //
        //			$result = Database::query($sql,__FILE__,__LINE__);
        //			if(mysql_num_rows($result) == 0) {
        //				require_once(api_get_path(SYS_PATH).'main/inc/lib/usermanager.lib.php');
        //				$rnumber=rand(0,256000);
        //				UserManager::create_user($firstName, $lastName, $status, $email, $login, md5('casplaceholder'.$rnumber), $official_code='',$language='',$phone='',$picture_uri='',$auth_source = PLATFORM_AUTH_SOURCE);
        //			}
        //			else {
        //				$user = mysql_fetch_assoc($result);
        //				$user_id = intval($user['user_id']);
        //				//echo "deb : $status";
        //				UserManager::update_user ($user_id, $firstname, $lastname, $login, null, null, $email, $status, '', '', '', '', 1, null, 0, null,'') ;
        //
        //			}
        //		}
        return $login;
    } else {
        return false;
    }
}