[eluser]riwakawd[/eluser]
I would like to know best way to set up my user redirect. So if user if not logged on and try's to access a page it will redirect to my 'admin'
I have autoloaded the user library and sessions
On the parent construct part of my dashboard controller I have set up my sessions redirect but stops me from logging on. If I remove it I can login fine, very strange. Should let me login while using sessions as a redirect.
Dashboard Controller
Code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Dashboard extends MX_Controller {
public function __construct()
{
parent::__construct();
$this->lang->load('admin/common/dashboard', 'english');
if ($this->session->userdata('islogged') && $this->session->userdata('username')) {
return true;
} else {
redirect('admin');
}
}
}
Login Controller
Code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends MX_Controller {
private $error = array();
public function __construct()
{
parent::__construct();
$this->lang->load('admin/common/login', 'english');
}
public function index()
{
$this->document->setTitle($this->lang->line('heading_title'));
if (($this->input->server('REQUEST_METHOD') == 'POST') && $this->validate()) {
$data_session = array(
'isLogged' => true,
'user_id' => $this->user->isLogged(),
'username' => $this->user->getUserName(),
//'email' => $this->user->getEmail(),
'last_logged' => $this->user->last_logged()
);
$this->session->set_userdata($data_session);
redirect('admin/dashboard');
}
$data['heading_title'] = $this->lang->line('heading_title');
$data['text_login'] = $this->lang->line('text_login');
$data['text_forgotten'] = $this->lang->line('text_forgotten');
$data['entry_username'] = $this->lang->line('entry_username');
$data['entry_password'] = $this->lang->line('entry_password');
$data['button_login'] = $this->lang->line('button_login');
if (array_key_exists('warning', $this->error)) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['action'] = site_url('admin');
if (trim($this->input->post('username'))) {
$data['username'] = $this->input->post('username');
} else {
$data['username'] = '';
}
if (trim($this->input->post('password'))) {
$data['password'] = $this->input->post('password');
} else {
$data['password'] = '';
}
return $this->load->view('common/login', $data);
}
protected function validate() {
if (!trim($this->input->post('username')) || !trim($this->input->post('password')) || !$this->user->login($this->input->post('username'), $this->input->post('password'))) {
$this->error['warning'] = $this->lang->line('error_login');
}
return !$this->error;
}
}
Library
Code:
<?php
class User {
private $user_id;
private $username;
private $last_logged;
//private $getEmail;
private $permission = array();
public function __construct() {
$this->CI =& get_instance();
if (trim($this->CI->session->userdata('user_id'))) {
$user_query = $this->CI->db->query("SELECT * FROM " . $this->CI->db->dbprefix . "user WHERE user_id = '" . (int)$this->CI->session->userdata('user_id') . "' AND status = '1'");
if ($user_query->num_rows) {
$this->user_id = $user_query->row('user_id');
$this->username = $user_query->row('username');
$this->last_logged = $user_query->row('last_logged');
//$this->getEmail = $user_query->row('email');
$this->CI->db->query("UPDATE " . $this->CI->db->dbprefix . "user SET ip = " . $this->CI->db->escape($this->CI->input->ip_address()) . " WHERE user_id = '" . (int)$this->CI->session->userdata('user_id') . "'");
$now = date("Y-m-d H:i:s");
$data = array(
'last_logged' => $now
);
$this->CI->db->where('user_id', $this->CI->session->userdata('user_id'));
$this->CI->db->update('user', $data);
} else {
$this->logout();
}
}
}
public function login() {
$username = $this->CI->input->post('username');
$password = $this->CI->input->post('password');
$user_query = $this->CI->db->query("SELECT * FROM " . $this->CI->db->dbprefix . "user WHERE username = " . $this->CI->db->escape($username) . " AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1(" . $this->CI->db->escape($password) . "))))) OR password = " . $this->CI->db->escape(md5($password)) . ") AND status = '1'");
if ($user_query->num_rows() == 1) {
$this->user_id = $user_query->row('user_id');
$this->username = $user_query->row('username');
$this->last_logged = $user_query->row('last_logged');
//$this->getEmail = $user_query->row('email');
return true;
} else {
return false;
}
}
public function logout() {
//$this->CI->session->sess_destroy();
$this->CI->session->unset_userdata($this->CI->session->userdata('user_id'));
$this->user_id = '';
$this->username = '';
}
public function isLogged() {
return $this->user_id;
}
public function last_logged() {
return $this->last_logged;
}
public function getId() {
return $this->user_id;
}
public function getEmail() {
return $this->email;
}
public function getUserName() {
return $this->username;
}
}