12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- use ChamiloSession as Session;
- // External login module : LDAP
- /**
- * This file is included in main/inc/local.inc.php at user login if the user have 'external_ldap' in
- * his auth_source field instead of platform.
- *
- * Variables that can be used :
- * - $login : string containing the username posted by the user
- * - $password : string containing the password posted by the user
- * - $uData : associative array with those keys :
- * -username
- * -password
- * -auth_source
- * -active
- * -expiration_date
- *
- * If login succeeds, we have 2 choices :
- * 1. - set $loginFailed to false,
- * - set $_SESSION['_user']['user_id'] with the Chamilo user_id
- * - set $uidReset to true
- * - upgrade user info in chamilo database if needed
- * - let the script local.inc.php continue
- *
- * 2. - set $_SESSION['_user']['user_id'] with the Chamilo user_id
- * - set $_SESSION['_user']['uidReset'] to true
- * - upgrade user info in chamilo database if needed
- * - redirect to any page and let local.inc.php do the magic
- *
- * If login fails we have to redirect to index.php with the right message
- * Possible messages are :
- * - index.php?loginFailed=1&error=access_url_inactive
- * - index.php?loginFailed=1&error=account_expired
- * - index.php?loginFailed=1&error=account_inactive
- * - index.php?loginFailed=1&error=user_password_incorrect
- * - index.php?loginFailed=1&error=unrecognize_sso_origin');
- *
- * */
- require_once __DIR__.'/ldap.inc.php';
- require_once __DIR__.'/functions.inc.php';
- $debug = false;
- if ($debug) {
- error_log('Entering login.ldap.php');
- }
- $ldap_user = extldap_authenticate($login, $password);
- if ($ldap_user !== false) {
- if ($debug) {
- error_log('extldap_authenticate works');
- }
- $chamilo_user = extldap_get_chamilo_user($ldap_user);
- //userid is not on the ldap, we have to use $uData variable from local.inc.php
- $chamilo_user['user_id'] = $uData['user_id'];
- if ($debug) {
- error_log("chamilo_user found user_id: {$uData['user_id']}");
- }
- //U pdate user info
- if (isset($extldap_config['update_userinfo']) && $extldap_config['update_userinfo']) {
- external_update_user($chamilo_user);
- if ($debug) {
- error_log("Calling external_update_user");
- }
- }
- $loginFailed = false;
- $_user['user_id'] = $chamilo_user['user_id'];
- $_user['status'] = (isset($chamilo_user['status']) ? $chamilo_user['status'] : 5);
- $_user['uidReset'] = true;
- Session::write('_user', $_user);
- $uidReset = true;
- $logging_in = true;
- Event::eventLogin($_user['user_id']);
- } else {
- if ($debug) {
- error_log('extldap_authenticate error');
- }
- $loginFailed = true;
- $uidReset = false;
- if (isset($_user) && isset($_user['user_id'])) {
- unset($_user['user_id']);
- }
- }
|