Пример #1
0
 public static function onLogin(GWF_User $user, $bind_to_ip = true, $with_hooks = true)
 {
     $userid = $user->getID();
     # Keep only N sessions for one user
     if (false === ($result = self::$SESSION->selectFirst('sess_id min', "sess_user={$userid}", 'sess_id DESC', NULL, self::ARRAY_N, GWF_SESS_PER_USER - 1))) {
         $cut_id = '1';
         #return false;
     } else {
         $cut_id = $result[0];
     }
     if (false === self::$SESSION->deleteWhere("sess_user={$userid} AND sess_id<{$cut_id}")) {
         GWF_HTML::err(ERR_DATABASE, array(__FILE__, __LINE__));
         return false;
     }
     # Update session
     if (!self::$SESSION->saveVars(array('sess_user' => $userid, 'sess_ip' => $bind_to_ip ? GWF_IP6::getIP(GWF_IP_EXACT) : null))) {
         return false;
     }
     self::$SESSION->setVar('sess_user', $user);
     # Set cookies
     self::setCookies(self::$SESSION->getVar('sess_id'), $userid, self::$SESSION->getVar('sess_sid'));
     self::$USER = $user;
     # Call hooks
     return $with_hooks ? GWF_Hook::call(GWF_Hook::LOGIN, $user) : true;
 }