ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ilAuthBase Class Reference

Base class for all PEAR and ILIAS auth classes. More...

+ Collaboration diagram for ilAuthBase:

Public Member Functions

 getSubStatus ()
 Get sub status. More...
 
 setSubStatus ($a_sub_status)
 Set sub status. More...
 
 supportsRedirects ()
 Returns true, if the current auth mode allows redirects to e.g the login screen, public section ... More...
 
 getContainer ()
 Get container object. More...
 
 getExceededUserName ()
 

Protected Member Functions

 initAuth ()
 Init auth object Enable logging, set callbacks... More...
 
 loginObserver ($a_username, $a_auth)
 Called after successful login. More...
 
 failedLoginObserver ($a_username, $a_auth)
 Called after failed login. More...
 
 checkAuthObserver ($a_username, $a_auth)
 Called after each check auth request. More...
 
 logoutObserver ($a_username, $a_auth)
 Called after logout. More...
 

Protected Attributes

 $sub_status = null
 
 $exceeded_user_name
 

Detailed Description

Base class for all PEAR and ILIAS auth classes.

Enables logging, observers.

Author
Stefan Meyer smeye.nosp@m.r.il.nosp@m.ias@g.nosp@m.mx.d.nosp@m.e
Version
$Id$

Definition at line 33 of file class.ilAuthBase.php.

Member Function Documentation

◆ checkAuthObserver()

ilAuthBase::checkAuthObserver (   $a_username,
  $a_auth 
)
protected

Called after each check auth request.

Returns
Parameters
array$a_username
object$a_auth

Definition at line 251 of file class.ilAuthBase.php.

References getContainer().

252  {
253  return $this->getContainer()->checkAuthObserver($a_username, $a_auth);
254  }
getContainer()
Get container object.
+ Here is the call graph for this function:

◆ failedLoginObserver()

ilAuthBase::failedLoginObserver (   $a_username,
  $a_auth 
)
protected

Called after failed login.

Returns
Parameters
array$a_username
object$a_auth

Definition at line 216 of file class.ilAuthBase.php.

References $_SERVER, $ilLog, ilSecuritySettings\_getInstance(), ilObjUser\_getLoginAttempts(), ilObjUser\_incrementLoginAttempts(), ilObjUser\_lookupId(), ilObjUser\_setUserInactive(), array, getContainer(), and ilLoggerFactory\getLogger().

217  {
218  global $ilLog;
219 
220  ilLoggerFactory::getLogger('auth')->info(
221  ': login failed for user ' . $a_username .
222  ', remote:' . $_SERVER['REMOTE_ADDR'] . ':' . $_SERVER['REMOTE_PORT'] .
223  ', server:' . $_SERVER['SERVER_ADDR'] . ':' . $_SERVER['SERVER_PORT']
224  );
225 
226  if ($a_username) {
227  $usr_id = ilObjUser::_lookupId($a_username);
228  if (!in_array($usr_id, array(ANONYMOUS_USER_ID))) {
230  $login_attempts = ilObjUser::_getLoginAttempts($usr_id);
231 
232  require_once 'Services/PrivacySecurity/classes/class.ilSecuritySettings.php';
233  $security = ilSecuritySettings::_getInstance();
234  $max_attempts = $security->getLoginMaxAttempts();
235 
236  if ((int) $max_attempts && $login_attempts >= $max_attempts) {
238  }
239  }
240  }
241 
242  return $this->getContainer()->failedLoginObserver($a_username, $a_auth);
243  }
if((!isset($_SERVER['DOCUMENT_ROOT'])) OR(empty($_SERVER['DOCUMENT_ROOT']))) $_SERVER['DOCUMENT_ROOT']
static _incrementLoginAttempts($a_usr_id)
static _lookupId($a_user_str)
Lookup id by login.
getContainer()
Get container object.
static _getLoginAttempts($a_usr_id)
Create styles array
The data for the language used.
static _setUserInactive($a_usr_id)
static getLogger($a_component_id)
Get component logger.
static _getInstance()
Get instance of ilSecuritySettings.
+ Here is the call graph for this function:

◆ getContainer()

ilAuthBase::getContainer ( )
final

Get container object.

Returns
object ilAuthContainerBase

Definition at line 74 of file class.ilAuthBase.php.

Referenced by checkAuthObserver(), failedLoginObserver(), loginObserver(), and logoutObserver().

75  {
76  return $this->storage;
77  }
+ Here is the caller graph for this function:

◆ getExceededUserName()

ilAuthBase::getExceededUserName ( )

Definition at line 279 of file class.ilAuthBase.php.

References $exceeded_user_name.

280  {
282  }

◆ getSubStatus()

ilAuthBase::getSubStatus ( )

Get sub status.

Returns
type

Definition at line 46 of file class.ilAuthBase.php.

References $sub_status.

47  {
48  return $this->sub_status;
49  }

◆ initAuth()

ilAuthBase::initAuth ( )
finalprotected

Init auth object Enable logging, set callbacks...

Returns
void

Definition at line 84 of file class.ilAuthBase.php.

References array, ilLoggerFactory\getLogger(), and ilSessionControl\initSession().

85  {
87 
88  $this->enableLogging = true;
89  //$this->enableLogging = false;
90 
91  if ($this->enableLogging) {
92  ilLoggerFactory::getLogger('auth')->debug('Init callbacks');
93  }
94  $this->setLoginCallback(array($this,'loginObserver'));
95  $this->setFailedLoginCallback(array($this,'failedLoginObserver'));
96  $this->setCheckAuthCallback(array($this,'checkAuthObserver'));
97  $this->setLogoutCallback(array($this,'logoutObserver'));
98 
99  include_once('Services/Authentication/classes/class.ilAuthLogObserver.php');
100  $this->attachLogObserver(new ilAuthLogObserver(AUTH_LOG_DEBUG));
101  }
Create styles array
The data for the language used.
static initSession()
mark session with type regarding to the context.
static getLogger($a_component_id)
Get component logger.
+ Here is the call graph for this function:

◆ loginObserver()

ilAuthBase::loginObserver (   $a_username,
  $a_auth 
)
protected

Called after successful login.

Returns
Parameters
array$a_username
object$a_auth

Definition at line 109 of file class.ilAuthBase.php.

References $_SERVER, $ilLog, $ilSetting, ilSecuritySettings\_getInstance(), ilObjUser\_loginExists(), ilObjUser\_resetLoginAttempts(), ilObjForum\_updateOldAccess(), array, AUTH_USER_INACTIVE, AUTH_USER_SIMULTANEOUS_LOGIN, AUTH_USER_TIME_LIMIT_EXCEEDED, AUTH_USER_WRONG_IP, ilAuthFactory\CONTEXT_ECS, getContainer(), ilAuthFactory\getContext(), ilLoggerFactory\getLogger(), ilSessionControl\handleLoginEvent(), ilObjUser\hasActiveSession(), and ilUserProfile\isProfileIncomplete().

110  {
111  global $ilLog, $ilAppEventHandler, $ilSetting;
112 
113  if ($this->getContainer()->loginObserver($a_username, $a_auth)) {
114  // validate user
115  include_once "Services/User/classes/class.ilObjUser.php";
116  $user_id = ilObjUser::_loginExists($a_auth->getUsername());
117  if ($user_id != ANONYMOUS_USER_ID) {
118  $user = new ilObjUser($user_id);
119 
120  // check if profile is complete
121  include_once "Services/User/classes/class.ilUserProfile.php";
123  $user->setProfileIncomplete(true);
124  $user->update();
125  }
126 
127  // --- extended user validation
128  //
129  // we only have a single status, so abort after each one
130  // order from highest priority to lowest
131 
132  // active?
133  if (!$user->getActive()) {
134  $this->status = AUTH_USER_INACTIVE;
135  $a_auth->logout();
136  return;
137  }
138 
139  // time limit
140  if (!$user->checkTimeLimit()) {
141  $this->status = AUTH_USER_TIME_LIMIT_EXCEEDED;
142  // #16327
143  $this->exceeded_user_name = $this->getUserName();
144  $a_auth->logout();
145  return;
146  }
147 
148  // check client ip
149  $clientip = $user->getClientIP();
150  if (trim($clientip) != "") {
151  $clientip = preg_replace("/[^0-9.?*,:]+/", "", $clientip);
152  $clientip = str_replace(".", "\\.", $clientip);
153  $clientip = str_replace(array("?","*",","), array("[0-9]","[0-9]*","|"), $clientip);
154  if (!preg_match("/^" . $clientip . "$/", $_SERVER["REMOTE_ADDR"])) {
155  $this->status = AUTH_USER_WRONG_IP;
156  $a_auth->logout();
157  return;
158  }
159  }
160 
161  // simultaneous login
162  if ($ilSetting->get('ps_prevent_simultaneous_logins') &&
163  ilObjUser::hasActiveSession($user_id)) {
164  $this->status = AUTH_USER_SIMULTANEOUS_LOGIN;
165  $a_auth->logout();
166  return;
167  }
168 
169  include_once 'Services/Tracking/classes/class.ilOnlineTracking.php';
170  ilOnlineTracking::addUser($user_id);
171 
172  include_once 'Modules/Forum/classes/class.ilObjForum.php';
174 
175  require_once 'Services/PrivacySecurity/classes/class.ilSecuritySettings.php';
176  $security_settings = ilSecuritySettings::_getInstance();
177 
178  // determine first login of user for setting an indicator
179  // which still is available in PersonalDesktop, Repository, ...
180  // (last login date is set to current date in next step)
181  if ($security_settings->isPasswordChangeOnFirstLoginEnabled() &&
182  $user->getLastLogin() == null
183  ) {
184  $user->resetLastPasswordChange();
185  }
186 
187  $user->refreshLogin();
188 
189  // reset counter for failed logins
191  }
192 
193  // --- anonymous/registered user
194  ilLoggerFactory::getLogger('auth')->info(
195  'logged in as ' . $a_auth->getUsername() .
196  ', remote:' . $_SERVER['REMOTE_ADDR'] . ':' . $_SERVER['REMOTE_PORT'] .
197  ', server:' . $_SERVER['SERVER_ADDR'] . ':' . $_SERVER['SERVER_PORT']
198  );
199 
200  ilSessionControl::handleLoginEvent($a_auth->getUsername(), $a_auth);
201 
202  $ilAppEventHandler->raise(
203  'Services/Authentication',
204  'afterLogin',
205  array('username' => $a_auth->getUsername())
206  );
207  }
208  }
static isProfileIncomplete($a_user, $a_include_udf=true, $a_personal_data_only=true)
Check if all required personal data fields are set.
const AUTH_USER_INACTIVE
if((!isset($_SERVER['DOCUMENT_ROOT'])) OR(empty($_SERVER['DOCUMENT_ROOT']))) $_SERVER['DOCUMENT_ROOT']
const AUTH_USER_WRONG_IP
static hasActiveSession($a_user_id, $a_session_id)
Check for simultaneous login.
getContainer()
Get container object.
const AUTH_USER_TIME_LIMIT_EXCEEDED
static _resetLoginAttempts($a_usr_id)
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...
loginObserver($a_username, $a_auth)
Called after successful login.
static _updateOldAccess($a_usr_id)
Create styles array
The data for the language used.
const AUTH_USER_SIMULTANEOUS_LOGIN
global $ilSetting
Definition: privfeed.php:17
static getLogger($a_component_id)
Get component logger.
static handleLoginEvent($a_login, ilAuthSession $auth_session)
when current session is allowed to be created it marks it with type regarding to the sessions user co...
static _getInstance()
Get instance of ilSecuritySettings.
+ Here is the call graph for this function:

◆ logoutObserver()

ilAuthBase::logoutObserver (   $a_username,
  $a_auth 
)
protected

Called after logout.

Returns
Parameters
array$a_username
object$a_auth

Definition at line 262 of file class.ilAuthBase.php.

References $ilLog, array, getContainer(), ilLoggerFactory\getLogger(), and ilSessionControl\handleLogoutEvent().

263  {
264  global $ilLog, $ilAppEventHandler;
265 
266  ilLoggerFactory::getLogger('auth')->info('Logout observer called for ' . $a_username);
267 
269 
270  $ilAppEventHandler->raise(
271  'Services/Authentication',
272  'afterLogout',
273  array('username' => $a_auth->getUsername())
274  );
275 
276  return $this->getContainer()->logoutObserver($a_username, $a_auth);
277  }
getContainer()
Get container object.
Create styles array
The data for the language used.
static getLogger($a_component_id)
Get component logger.
static handleLogoutEvent()
reset sessions type to unknown
+ Here is the call graph for this function:

◆ setSubStatus()

ilAuthBase::setSubStatus (   $a_sub_status)

Set sub status.

Parameters
type$a_sub_status

Definition at line 55 of file class.ilAuthBase.php.

56  {
57  $this->sub_status = $a_sub_status;
58  }

◆ supportsRedirects()

ilAuthBase::supportsRedirects ( )

Returns true, if the current auth mode allows redirects to e.g the login screen, public section ...

Returns

Definition at line 65 of file class.ilAuthBase.php.

66  {
67  return true;
68  }

Field Documentation

◆ $exceeded_user_name

ilAuthBase::$exceeded_user_name
protected

Definition at line 39 of file class.ilAuthBase.php.

Referenced by getExceededUserName().

◆ $sub_status

ilAuthBase::$sub_status = null
protected

Definition at line 37 of file class.ilAuthBase.php.

Referenced by getSubStatus().


The documentation for this class was generated from the following file: