<?php /** * @author Matthew McNaney <mcnaney at gmail dot com> * @version $Id: runtime.php 7776 2010-06-11 13:52:58Z jtickle $ */ if (!class_exists('PHPWS_User')) { include '../../core/conf/404.html'; exit; } if (isset($_REQUEST['module']) && $_REQUEST['module'] == 'users' && (isset($_REQUEST['action']) && $_REQUEST['action'] == 'reset')) { $_SESSION['User'] = new PHPWS_User(); } elseif (!isset($_SESSION['User'])) { Current_User::init(); if (Current_User::allowRememberMe()) { if (PHPWS_Settings::get('users', 'allow_remember')) { Current_User::rememberLogin(); } } } Current_User::loadAuthorization($_SESSION['User']); Current_User::getLogin(); if (Current_User::isLogged() && PHPWS_Settings::get('users', 'session_warning')) { $lifetime = ini_get('session.gc_maxlifetime'); $path = PHPWS_SOURCE_HTTP . 'mod/users/javascript/session_check/script.min.js'; $timeout = floor($lifetime / 60); $warning_minutes = $timeout - 5; javascript('jquery'); \Layout::addJSHeader("<script type='text/javascript'>var sess_expirationMinutes = {$timeout};var sess_warningMinutes = {$warning_minutes};</script>" . "<script type='text/javascript' src='{$path}'></script>"); }
/** * Logs in a user dependant on their authorization setting */ public static function loginUser($username, $password = null) { if (!Current_User::allowUsername($username)) { return PHPWS_Error::get(USER_BAD_CHARACTERS, 'users', 'Current_User::loginUser'); } // First check if they are currently a user $user = new PHPWS_User(); $db = new PHPWS_DB('users'); $db->addWhere('username', strtolower($username)); $result = $db->loadObject($user); if (PHPWS_Error::isError($result)) { return $result; } if ($result == false) { if (PHPWS_Error::logIfError($user->setUsername($username))) { return false; } } else { // This user is in the local database if (!$user->approved) { return PHPWS_Error::get(USER_NOT_APPROVED, 'users', 'Current_User::loginUser'); } if (!$user->loadScript()) { Layout::add(dgettext('users', 'Could not load authentication script. Please contact site administrator.')); return false; } } if (!Current_User::loadAuthorization($user)) { Layout::add(dgettext('users', 'Could not load authentication script. Please contact site administrator.')); return false; } $auth = Current_User::getAuthorization(); $auth->setPassword($password); $result = $auth->authenticate(); if (PHPWS_Error::isError($result)) { return $result; } if ($result == true) { // If the user id is zero and the authorization wants a new // user created if (!$user->id && $auth->create_new_user) { $user->setActive(true); $user->setApproved(true); $auth->createUser(); $user->save(); PHPWS_Core::initModClass('users', 'Action.php'); User_Action::assignDefaultGroup($user); } if (!$user->active) { return PHPWS_Error::get(USER_DEACTIVATED, 'users', 'Current_User:loginUser', $user->username); } if ($auth->localUser()) { $user->login(); } unset($_SESSION['User']); $_SESSION['User'] = $user; return true; } else { return false; } }