ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilAuthContainerMDB2.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24include_once 'Auth/Container/MDB2.php';
25
36{
37
41 public function __construct()
42 {
43 global $ilClientIniFile, $ilDB, $ilIliasIniFile;
44
45 $options['dsn'] = $ilDB->getDSN();
46 $options['table'] = $ilClientIniFile->readVariable('auth', 'table');
47 $options['usernamecol'] = $ilClientIniFile->readVariable('auth', 'usercol');
48 $options['passwordcol'] = $ilClientIniFile->readVariable('auth', 'passcol');
49
50 // studip mode: check against submitted md5 password for ilSoapUserAdministration::login()
51 // todo: check whether we should put this to another place
52 if (isset($_POST['password']) && preg_match('/^[a-f0-9]{32,32}$/i', $_POST['password']))
53 {
54 if ($ilIliasIniFile->readVariable('server', 'studip'))
55 {
56 $options['cryptType'] = 'none';
57 }
58 }
59
60 parent::__construct($options);
61 }
62
63
67 public static function toUsernameWithoutDomain($username)
68 {
69 // Remove all characters including the last slash or the last backslash
70 // in the username
71 $pos = strrpos($username, '/');
72 $pos2 = strrpos($username, '\\');
73 if ($pos === false || $pos < $pos2)
74 {
75 $pos = $pos2;
76 }
77 if ($pos !== false)
78 {
79 $username = substr($username, $pos + 1);
80 }
81 return $username;
82 }
83
84
90 public function loginObserver($a_username,$a_auth)
91 {
92 $usr_id = ilObjUser::_lookupId($a_username);
93 $auth_mode = ilObjUser::_lookupAuthMode($usr_id);
94 $auth_id = ilAuthUtils::_getAuthMode($auth_mode);
95
96 $GLOBALS['ilLog']->write(__METHOD__.': auth id = ' . $auth_id);
97
98 switch($auth_id)
99 {
100 case AUTH_APACHE:
101 case AUTH_LOCAL:
102 return true;
103
104 default:
106 {
107 return true;
108 }
109 }
110
111
112 $a_auth->status = AUTH_WRONG_LOGIN;
113 $a_auth->logout();
114
115 return false;
116 }
117
122 {
123 return true;
124 }
125
132 public function verifyPassword($raw, $encoded, $crypt_type = 'md5')
133 {
134 $this->log(__METHOD__ . ' called.', AUTH_LOG_DEBUG);
135
136 if(in_array($crypt_type, array('none', '')))
137 {
138 return parent::verifyPassword($raw, $encoded, $crypt_type);
139 }
140
141 require_once 'Services/User/classes/class.ilUserPasswordManager.php';
142 $crypt_type = ilUserPasswordManager::getInstance()->getEncoderName();
143
144 if(ilUserPasswordManager::getInstance()->isEncodingTypeSupported($crypt_type))
145 {
149 $user = ilObjectFactory::getInstanceByObjId(ilObjUser::_loginExists($this->_auth_obj->username));
150 $user->setPasswd($encoded, IL_PASSWD_CRYPTED);
151
152 return ilUserPasswordManager::getInstance()->verifyPassword($user, $raw);
153 }
154
155 // Fall through: Let pear verify the password
156 return parent::verifyPassword($raw, $encoded, $crypt_type);
157 }
158}
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
const AUTH_APACHE
const AUTH_LOCAL
const IL_PASSWD_CRYPTED
Authentication against ILIAS database.
loginObserver($a_username, $a_auth)
Called from fetchData after successful login.
static toUsernameWithoutDomain($username)
Static function removes Microsoft domain name from username.
static _getAuthMode($a_auth_mode, $a_db_handler='')
static isPasswordModificationEnabled($a_authmode)
Check if password modification is enabled.
static _lookupId($a_user_str)
Lookup id by login.
static _lookupAuthMode($a_usr_id)
lookup auth mode
static _loginExists($a_login, $a_user_id=0)
check if a login name already exists You may exclude a user from the check by giving his user id as 2...
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static getInstance()
Single method to reduce footprint (included files, created instances)
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
global $ilDB
if(!is_array($argv)) $options
$ilIliasIniFile