Пример #1
0
 public function login($core)
 {
     // Loading Logged In User
     if ($core->session_get('login_key') && $core->session_get('login_ssid')) {
         $user_mail = crypto::decode($core->session_get('login_key'), $core->crypto);
         $user_mail = $core->text->email($user_mail);
         $userdata = $this->getbyname($user_mail);
         if ($userdata['user_id']) {
             $set_ssid = md5($core->session_get('login_key') . crypto::encode($userdata['user_pass'], $core->crypto));
             if ($set_ssid != $core->session_get('login_ssid')) {
                 $userdata = null;
             }
         } else {
             $userdata = null;
         }
     } else {
         $userdata = null;
     }
     // Trying To Log In
     if ($core->post['in_user'] && $core->post['in_pass']) {
         $in_user = $core->text->email($core->post['in_user']);
         $in_pass = $core->text->pass($core->post['in_pass']);
         $userdata = $this->getbyname($in_user);
         if ($userdata['user_id'] && $in_pass == $userdata['user_pass']) {
             $set_login = crypto::encode($userdata['user_mail'], $core->crypto);
             $set_ssid = md5($set_login . crypto::encode($userdata['user_pass'], $core->crypto));
             $core->session_set('login_key', $set_login);
             $core->session_set('login_ssid', $set_ssid);
         } else {
             $userdata = null;
         }
     }
     // Password Recovery
     if ($core->get['recoverpass']) {
         $token = $core->text->link($core->get['recoverpass']);
         $id = substr($token, 0, -32);
         $key = substr($token, strlen($id));
         $id = (int) $id;
         $userdata = $id ? $this->get($id) : null;
         if ($userdata['user_id'] && $key == md5(crypto::encode($userdata['user_mail'] . $userdata['user_pass'], $core->crypto))) {
             $set_login = crypto::encode($userdata['user_mail'], $core->crypto);
             $set_ssid = md5($set_login . crypto::encode($userdata['user_pass'], $core->crypto));
             $core->session_set('login_key', $set_login);
             $core->session_set('login_ssid', $set_ssid);
         } else {
             $userdata = null;
         }
     }
     if ($userdata) {
         $this->id = (int) $userdata['user_id'];
         $this->name = $userdata['user_name'];
         $this->email = $userdata['user_mail'];
         $this->level = $userdata['user_level'];
         $this->work = $userdata['user_work'];
         $this->ban = $userdata['user_ban'];
         $this->cash = $userdata['user_cash'];
         $this->wmr = $userdata['user_wmr'];
         $this->ref = $userdata['user_ref'];
         $this->sub = $userdata['user_sub'];
         $this->ext = $userdata['user_ext'];
         $this->comp = $userdata['user_comp'];
         $this->compad = $userdata['user_compad'];
         $this->call = $userdata['user_call'];
         $this->shave = $userdata['user_shave'];
         $this->vip = $userdata['user_vip'];
         $this->api = $userdata['user_api'];
         $this->news = $userdata['user_news'];
         $this->supp_new = $userdata['supp_new'];
         $this->auth = true;
         $ip = ip2int($core->server['REMOTE_ADDR']);
         $dd = date('Ymd');
         if ($ip != $userdata['user_ip'] || $dd != $userdata['user_date']) {
             $this->set($userdata['user_id'], array('user_ip' => $ip, 'user_date' => $dd));
         }
     } else {
         $this->auth = false;
     }
 }