session->userdata('status') === "admin_login"){ redirect('admin'); }elseif ($this->session->userdata('status') === "dosen_login") { redirect('dosen'); }elseif ($this->session->userdata('status') === "kaprodi_login") { redirect('kaprodi'); }elseif ($this->session->userdata('status') === "aio_login") { redirect('aio'); } } public function index() { // if($this->input->get('error') == 1){ // $data['error'] = 'username atau password salah.'; // }else{ // $data['error'] = NULL; // } $this->load->view('v_login'); } public function check_adm($string, $startString) // username admin harus diawali dengan admin... { $len = strlen($startString); return (substr($string, 0, $len) === $startString); } public function login() { $this->load->model('m_login'); if ($this->session->userdata('status_login') == 'login') { redirect('base'); } else { $uname = $this->input->get_post('username',TRUE); $pw = MD5($this->input->get_post('password',TRUE)); // Update penghapusan $sebagai // 1. Cek admin atau bukan jika admin akses tabel admin, jika bukan akses tabel user if($this->check_adm($uname,"admin")){ // langsung masuk sebagai admin $where_ = array( 'username' => $uname, 'password' => $pw ); $where2 = array( 'username' => $uname ); $cek = $this->m_login->cek_login('admin',$where_); $data = $this->m_login->data_login('admin',$where2); $ceku = $this->m_login->cek_login('admin',$where2); if($cek > 0){ // kondisi username dan password benar // Penambahan kondisi apabila akun di blokir if ($data['block_stat'] == 'block'){ // kondisi akun terblokir. $this->session->set_flashdata('flash_error', 'Mohon maaf akun anda telah terblokir silahkan menghubungi pihak P3TI UNLA.'); redirect('landing','refresh'); }elseif ($data['block_stat'] == 'allow') { // kondisi login normal, akun allow. // Penambahan kondisi pengembalian batas login $update = array( 'log_error' => 5 ); $this->db->where('id', $data['id']); $this->db->update('admin', $update); $data_session = array( 'id' => $data['id'], 'username' => $data['username'], 'status' => 'admin_login', 'status_login' => 'login', 'multiple' => false, 'role' => array('admin'), 'nama' => null ); $this->session->set_userdata($data_session); redirect(base_url().'dashboard'); } }else{ // kondisi apabila password salah. // kondisi username benar, password salah. if ($ceku > 0) { // kondisi username bener, password salah if ($data['block_stat'] == 'block') { // kondisi login salah tetapi status sudah block $this->session->set_flashdata('flash_error', 'Mohon maaf, Akun anda terblokir karena terlalu banyak kesalahan percobaan login. Silahkan hubungi P3TI UNLA.'); redirect('landing','refresh'); }elseif ($data['block_stat'] == 'allow') { // kondisi login salah normal // A. 1. menambahkan 1 hitungan pada field batas login 2. alert menampilkan batas kesalahan $update = array( "log_error" => $data['log_error'] - 1 ); $this->db->where('id', $data['id']); $this->db->update('admin', $update); if ($update['log_error'] <= 1) { $update2 = array( "block_stat" => 'block' ); $this->db->where('id', $data['id']); $this->db->update('admin', $update2); } $this->session->set_flashdata('flash_error', 'Password anda salah. Akun anda akan terblokir apabila percobaan login melebihi batas. Sisa percobaan login: '.$update['log_error']); redirect('landing','refresh'); } }else{ // kondisi username salah, password salah // kondisi biasa pada saat ada kesalahan login. $this->session->set_flashdata('flash_error', 'Username atau Password salah.'); redirect('landing','refresh'); } } }else{ $where_ = array( 'username' => $uname, 'password' => $pw ); // kondisi ada akun yang username dan passwordnya benar $where__ = array( 'username' => $uname ); $cek = $this->m_login->cek_login('user',$where_); $data = $this->m_login->data_login('user',$where__); $cek_user = $this->m_login->cek_login('user',$where__); // Perlu ada dua pengecekan karena bisa saja 1 username 2 password berbeda // Sementara pengecekan asal satu akun benar anggap semua benar // sehingga perlu ada 2 pengecekan // 1. pengecekan ada akun yang benar user dan passwordnya atau tidak // 2. cek username tersebut ada berapa di tabel $role = $this->m_login->get_role('user',$uname); $array_role = array(); foreach ($role as $i) { array_push($array_role,$i['status']); } if($cek > 0){ // proses ambil nama dosennya $nama_ = $this->m_login->get_nama_dosen($uname); if($cek_user > 1){ $sebagai = ""; // kondisi untuk user multi role // Penambahan kondisi apabila akun di blokir if ($data['block_stat'] == 'block'){ // kondisi akun terblokir. $this->session->set_flashdata('flash_error', 'Mohon maaf akun anda telah terblokir silahkan menghubungi pihak P3TI UNLA.'); redirect('landing','refresh'); }elseif ($data['block_stat'] == 'allow') { // kondisi login normal, akun allow. // Penambahan kondisi pengembalian batas login $update = array( 'log_error' => 5 ); $this->db->where('username', $data['username']); $this->db->update('user', $update); if (in_array("dosen",$array_role)) { $sebagai = 'dosen'; }else{ $sebagai = $array_role[0]; } $data_session = array( 'id' => $data['id'], 'iddsn' => $data['iddsn'], 'username' => $data['username'], 'status' => $sebagai.'_login', 'status_login' => 'login', 'multiple' => true, 'role' => $array_role, 'nama' => $nama_ ); $this->session->set_userdata($data_session); $sebagai_ = "|| "; for ($i=0; $i < count($array_role); $i++) { $sebagai_ = $sebagai_.$array_role[$i].' || '; } $this->session->set_flashdata('flash_login', 'Login sebagai '.$sebagai_); redirect(base_url().'dashboard'); } }elseif ($cek_user == 1) { // kondisi untuk user 1 role $sebagai = $data['status']; if ($data['block_stat'] == 'block'){ // kondisi akun terblokir. $this->session->set_flashdata('flash_error', 'Mohon maaf akun anda telah terblokir silahkan menghubungi pihak P3TI UNLA.'); redirect('landing','refresh'); }elseif ($data['block_stat'] == 'allow') { // kondisi login normal, akun allow. // Penambahan kondisi pengembalian batas login $update = array( 'log_error' => 5 ); $this->db->where('username', $data['username']); $this->db->update('user', $update); $data_session = array( 'id' => $data['id'], 'iddsn' => $data['iddsn'], 'username' => $data['username'], 'status' => $sebagai.'_login', 'status_login' => 'login', 'multiple' => false, 'role' => $array_role, 'nama' => $nama_ ); $this->session->set_userdata($data_session); $this->session->set_flashdata('flash_login', 'Login sebagai '.$sebagai); redirect(base_url().'dashboard'); } } }else{ // kondisi salah password // kondisi username benar, password salah. if ($cek_user > 0) { // kondisi username bener, password salah if ($data['block_stat'] == 'block') { // kondisi login salah tetapi status sudah block $this->session->set_flashdata('flash_error', 'Mohon maaf, Akun anda terblokir karena terlalu banyak kesalahan percobaan login. Silahkan hubungi P3TI UNLA.'); redirect('landing','refresh'); }elseif ($data['block_stat'] == 'allow') { // kondisi login salah normal // A. 1. menambahkan 1 hitungan pada field batas login 2. alert menampilkan batas kesalahan $update = array( "log_error" => $data['log_error'] - 1 ); $this->db->where('username', $data['username']); $this->db->update('user', $update); if ($update['log_error'] <= 1) { $update2 = array( "block_stat" => 'block' ); $this->db->where('username', $data['username']); $this->db->update('user', $update2); } $this->session->set_flashdata('flash_error', 'Password anda salah. Akun anda akan terblokir apabila percobaan login melebihi batas. Sisa percobaan login: '.$update['log_error']); redirect('landing','refresh'); } }else{ // kondisi username salah, password salah // kondisi biasa pada saat ada kesalahan login. $this->session->set_flashdata('flash_error', 'Username atau Password salah.'); redirect('landing','refresh'); } } } } } } /* End of file Controllername.php */ ?>