CI =& get_instance(); // Load the template config file and setup our master template and regions include(APPPATH.'config/ms'.EXT); if (isset($ms)) { $this->config = $ms; } } public function is_authenticated() { return $this->CI->session->userdata('is_authenticated') == true; } public function is_in_role($role_id) { return in_array($role_id, $this->CI->session->userdata('roles')); } public function get_user_login_information($username) { $sql = 'CALL ms_get_user_login_information(?)'; $params = array($username); $query = $this->CI->db->query($sql, $params); return $query->row_array(); } public function get_user_by_id($username) { $sql = 'CALL ms_get_user_by_id(?)'; $params = array($username); $query = $this->CI->db->query($sql, $params); return $query->row_array(); } public function get_user_by_username($username) { $sql = 'CALL ms_get_user_by_username(?)'; $params = array($username); $query = $this->CI->db->query($sql, $params); return $query->row_array(); } public function get_roles_by_user_id($user_id) { $sql = 'CALL ms_get_roles_by_user_id(?)'; $params = array($user_id); $query = $this->CI->db->query($sql, $params); $result = $query->result_array(); $array = array(); foreach($result as $r) { array_push($array, $r['id']); } return $array; } public function get_all_users() { $sql = 'CALL ms_get_all_users()'; $query = $this->CI->db->query($sql); return $query->result_array(); } public function update_user($user_id, $username, $first_name, $last_name, $email, $mobile, $social_security) { $first_name = $first_name == "" ? null : $first_name; $last_name = $last_name == "" ? null : $last_name; $mobile = $mobile == "" ? null : $mobile; $social_security = $social_security == "" ? null : $social_security; $sql = 'CALL ms_update_user(?,?,?,?,?,?,?)'; $params = array($user_id, $username, $email, $first_name, $last_name, $mobile, $social_security); $query = $this->CI->db->query($sql, $params); return $this->CI->db->affected_rows(); } public function update_user_password($user_id, $old_password, $new_password) { $sql = 'CALL ms_update_user_password(?,?,?)'; $params = array($user_id, $old_password, $new_password); $query = $this->CI->db->query($sql, $params); return reset($query->row_array()); } public function login($username, $password) { if($this->CI->ms->is_authenticated()) { return true; } $user = self::authenticate_user($username,self::generate_password_hash($password)); if($user != null) { $user_data = array( 'is_authenticated' => true, 'user_id' => $user['id'], 'username' => $username, 'roles' => self::get_roles_by_user_id($user['id']) ); $this->CI->session->set_userdata($user_data); $sql = 'CALL ms_update_user_last_login (?)'; $params = array($user['id']); $query = $this->CI->db->query($sql, $params); return true; } else { return false; } } public function authenticate_user($username, $password) { $user = self::get_user_login_information($username); if(count($user) > 0) { if($user['pass'] == $password) { return $user; } else { return null; } } else { return null; } } public function logout() { $user_data = array( 'is_authenticated' => '', 'user_id' => '', 'username' => '', 'roles' => '' ); $this->CI->session->unset_userdata($user_data); return true; } public function generate_password_hash($password){ $this->CI->load->helper('security'); return do_hash($this->CI->config->item('salt') . $password); } public function block_login() { $this->CI->load->library('form_validation'); $this->CI->form_validation->set_error_delimiters('', ''); $this->CI->form_validation->set_rules('username', 'lang:username', 'trim|required|alpha_numeric|max_length[32]'); $this->CI->form_validation->set_rules('password', 'lang:password', 'trim|required'); if($this->CI->form_validation->run() == TRUE) { $username = $_POST['username']; $password = $_POST['password']; if($this->CI->ms->login($username, $password)) { return $this->CI->load->view('ms/block-login-success', '', true); } else { return $this->CI->load->view('ms/block-login-frm', '', true); } } else { return $this->CI->load->view('ms/block-login-frm', '', true); } } } // END MS Class /* End of file Ms.php */ /* Location: ./system/application/libraries/MS.php */ ?>