Beispiel #1
0
 public static function login($username, $password, $keep_signed, &$errors, $login_as_user = false, $autoriseByUsername = false)
 {
     $login = SJB_UserManager::login($username, $password, $errors, $autoriseByUsername, $login_as_user);
     if ($login) {
         if (SJB_UserManager::checkBan($errors)) {
             return false;
         }
         $userInfo = SJB_UserManager::getUserInfoByUserName($username);
         if (!$userInfo['active']) {
             $errors['USER_NOT_ACTIVE'] = 1;
             return false;
         }
         // if "Approve Users by Admin" option is turned on
         $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($userInfo['user_group_sid']);
         if (!empty($userGroupInfo['approve_user_by_admin']) && 'Approved' != $userInfo['approval']) {
             $errors['USER_NOT_APPROVED'] = 1;
             return false;
         }
         $loginParams = array('username' => $username, 'password' => $password);
         SJB_Event::dispatch('Login', $loginParams);
         if ($keep_signed) {
             SJB_Authorization::keepUserSignedIn($userInfo);
         }
         SJB_DB::query('update `users` set `ip` = ?s where `sid` = ?n', $_SERVER['REMOTE_ADDR'], $userInfo['sid']);
         if (!empty($userInfo['parent_sid'])) {
             $subuserInfo = $userInfo;
             $userInfo = SJB_UserManager::getUserInfoBySID($userInfo['parent_sid']);
             $userInfo['subuser'] = $subuserInfo;
         }
         SJB_Authorization::setSessionForUser($userInfo);
         return true;
     }
     return false;
 }