145 lines
5.6 KiB
PHP
145 lines
5.6 KiB
PHP
|
|
<?php defined('BASEPATH') OR exit('No direct script access allowed');
|
||
|
|
include_once __DIR__ . '/../../services/User_service.php';
|
||
|
|
include_once 'Member_controller.php';
|
||
|
|
/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2021*/
|
||
|
|
/**
|
||
|
|
* Login Controller
|
||
|
|
* @copyright 2019 Manaknightdigital Inc.
|
||
|
|
* @link https://manaknightdigital.com
|
||
|
|
* @license Proprietary Software licensing
|
||
|
|
* @author Ryan Wong
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
class Member_login_controller extends Manaknight_Controller
|
||
|
|
{
|
||
|
|
protected $_redirect = '/sell';
|
||
|
|
|
||
|
|
public $_valid_roles = [1];
|
||
|
|
|
||
|
|
public function __construct()
|
||
|
|
{
|
||
|
|
parent::__construct();
|
||
|
|
}
|
||
|
|
|
||
|
|
public function index ()
|
||
|
|
{
|
||
|
|
$this->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');
|
||
|
|
}
|
||
|
|
}
|