load->model('credential_model'); $this->load->model('user_model'); $this->load->helper('cookie'); $service = new User_service($this->credential_model, $this->user_model); if($this->input->cookie('member_remember_me_token', TRUE) !== null && $this->input->cookie('member_remember_me_token', TRUE) !== '') { $this->_remember_me_login(); exit(); } $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email'); $this->form_validation->set_rules('password', 'Password', 'required'); $this->_data['portal'] = 'member'; if ($this->form_validation->run() === FALSE) { echo $this->load->view('Member/Login', $this->_data, TRUE); exit; } $email = $this->input->post('email'); $password = $this->input->post('password'); $redirect = $service->get_redirect($this->input->cookie('redirect', TRUE), $this->_redirect); $role = $this->_valid_roles[0]; $authenticated_user = $service->login_by_role($email, $password, $role); if ($authenticated_user) { delete_cookie('redirect'); $user_id = $authenticated_user->user_id; if(!empty($this->input->post("remember_me"))) { $this->load->helper('string'); $remember_cookie = [ 'user_id' => $user_id, 'name' => 'member_remember_me_token', 'value' => random_string('alnum', 16), 'expire' => time()+$this->config->item('cookie_expire'), 'domain' => base_url() ]; $this->load->model('cookies_model'); $check_cookie = $this->cookies_model->get_by_field('user_id', $user_id); if($check_cookie) { $cookie = $this->cookies_model->edit($remember_cookie, $check_cookie->id); } else { $cookie = $this->cookies_model->create($remember_cookie); } if($cookie) { setcookie($remember_cookie['name'], $remember_cookie['value'], $remember_cookie['expire'], $remember_cookie['domain']); } } $this->set_session('credential_id', (int) $authenticated_user->id); $this->set_session('user_id', (int) $user_id); $this->set_session('email', (string) $authenticated_user->email); $this->set_session('role', (string) $authenticated_user->role_id); if( isset($_POST['return_url']) && $_POST['return_url'] =='buy') { return $this->redirect('buy'); } return $this->redirect($redirect); } $this->error('Wrong email or password.'); return $this->redirect('member/login'); } public function _remember_me_login() { $this->load->helper('string'); $this->load->model('user_model'); $this->load->model('credential_model'); $this->load->model('cookies_model'); $token_value = $this->input->cookie('member_remember_me_token', TRUE); $cookie = $this->cookies_model->get_by_fields(['value' => $token_value]); $service = new User_service($this->credential_model, $this->user_model); $redirect = $service->get_redirect($this->input->cookie('redirect', TRUE), $this->_redirect); if($cookie) { $user_id = $cookie->user_id; $credential = $this->credential_model->get_by_field('user_id', $user_id); $role = $this->_valid_roles[0]; if($credential->role_id != $role) { setcookie('member_remember_me_token', '', 1, base_url()); return $this->redirect('admin/login'); } $random_string = random_string('alnum', 30); $this->cookies_model->edit(['value' => $random_string, 'expire' => time()+$this->config->item('cookie_expire')], $cookie->id); setcookie('member_remember_me_token', $random_string, time()+$this->config->item('cookie_expire'), base_url()); $this->set_session('credential_id', (int) $credential->id); $this->set_session('user_id', (int) $user_id); $this->set_session('email', (string) $credential->email); $this->set_session('role', (string) $credential->role_id); return $this->redirect($redirect); } else { setcookie('member_remember_me_token', '', 1, base_url()); return $this->redirect('admin/login'); } $this->error('Wrong email or password.'); return $this->redirect('member/login'); } public function logout () { $this->load->helper('cookie'); setcookie('member_remember_me_token', '', 1, base_url()); $this->destroy_session(); return $this->redirect('member/login'); } }