Cara Membuat Multi Login di CodeIgniter
Diperbaharui 3 Agustus 2020 8:49 AMSetelah membuat form pendaftaran sekarang kita akan belajar cara membuat multi login di codeigniter, jika kamu belum membaca tutorial sebelumnya silakan baca terlebih dahulu.
1. Download project awal codeigniter yang sudah ada fitur registernya [ ci-register ] → ekstrak → ganti nama menjadi ci-login → buka di text editor
2. Buat database dengan nama susantokun_ci_login dan masukkan sql berikut :
3. Buka application/config/autoload.php dan ubah bagian helper menjadi seperti berikut :
$autoload['helper'] = array('url','form','file','my','susantokun');
4. Buka application/config/database.php dan ubah database menjadi susantokun_ci_login
5. Buka application/config/routes.php dan ubah default_controller menjadi auth/login
6. Buat file application/helpers/susantokun_helper.php dan masukkan code berikut :
8. Buka application/controllers/Auth.php dan tambahkan code berikut :
public function check_account()
{
//validasi login
$email = $this->input->post('email');
$password = $this->input->post('password');
//ambil data dari database untuk validasi login
$query = $this->Auth_model->check_account($email, $password);
if ($query === 1) {
$this->session->set_flashdata('alert', '<p class="box-msg">
<div class="info-box alert-danger">
<div class="info-box-icon">
<i class="fa fa-warning"></i>
</div>
<div class="info-box-content" style="font-size:14">
<b style="font-size: 20px">GAGAL</b><br>Email yang Anda masukkan tidak terdaftar.</div>
</div>
</p>
');
} elseif ($query === 2) {
$this->session->set_flashdata(
'alert',
'<p class="box-msg">
<div class="info-box alert-info">
<div class="info-box-icon">
<i class="fa fa-info-circle"></i>
</div>
<div class="info-box-content" style="font-size:14">
<b style="font-size: 20px">GAGAL</b><br>Akun yang Anda masukkan tidak aktif, silakan hubungi Administrator.</div>
</div>
</p>'
);
} elseif ($query === 3) {
$this->session->set_flashdata('alert', '<p class="box-msg">
<div class="info-box alert-danger">
<div class="info-box-icon">
<i class="fa fa-warning"></i>
</div>
<div class="info-box-content" style="font-size:14">
<b style="font-size: 20px">GAGAL</b><br>Password yang Anda masukkan salah.</div>
</div>
</p>
');
} else {
//membuat session dengan nama userData yang artinya nanti data ini bisa di ambil sesuai dengan data yang login
$userdata = array(
'is_login' => true,
'id' => $query->id,
'password' => $query->password,
'id_role' => $query->id_role,
'username' => $query->username,
'first_name' => $query->first_name,
'last_name' => $query->last_name,
'email' => $query->email,
'phone' => $query->phone,
'photo' => $query->photo,
'created_on' => $query->created_on,
'last_login' => $query->last_login
);
$this->session->set_userdata($userdata);
return true;
}
}
public function login()
{
$site = $this->Konfigurasi_model->listing();
$data = array(
'title' => 'Login | '.$site['nama_website'],
'favicon' => $site['favicon'],
'site' => $site
);
//melakukan pengalihan halaman sesuai dengan levelnya
if ($this->session->userdata('id_role') == "1") {
redirect('admin/home');
}
if ($this->session->userdata('id_role') == "2") {
redirect('member/home');
}
//proses login dan validasi nya
if ($this->input->post('submit')) {
$this->form_validation->set_rules('email', 'Email', 'trim|required|min_length[5]|max_length[50]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[5]|max_length[22]');
$error = $this->check_account();
if ($this->form_validation->run() && $error === true) {
$data = $this->Auth_model->check_account($this->input->post('email'), $this->input->post('password'));
//jika bernilai TRUE maka alihkan halaman sesuai dengan level nya
if ($data->id_role == '1') {
redirect('admin/home');
} elseif ($data->id_role == '2') {
redirect('member/home');
}
} else {
$this->template->load('authentication/layouts/template', 'authentication/login', $data);
}
} else {
$this->template->load('authentication/layouts/template', 'authentication/login', $data);
}
}
public function logout()
{
$this->session->sess_destroy();
redirect('auth/login');
}
9. Buat file application/controllers/admin/Home.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Home extends MY_Controller
{
public function __construct()
{
parent::__construct();
$this->check_login();
if ($this->session->userdata('id_role') != "1") {
redirect('', 'refresh');
}
}
public function index()
{
$data = konfigurasi('Dashboard');
$this->template->load('layouts/template', 'admin/dashboard', $data);
}
}
10. Buat file application/controllers/member/Home.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Home extends MY_Controller
{
public function __construct()
{
parent::__construct();
$this->check_login();
if ($this->session->userdata('id_role') != "2") {
redirect('', 'refresh');
}
}
public function index()
{
$data = konfigurasi('Dashboard');
$this->template->load('layouts/template', 'member/dashboard', $data);
}
}
11. Buka application/models/Auth_model.php dan tambahkan code berikut :
public function login($email, $password)
{
$query = $this->db->get_where($this->table, array('email'=>$email, 'password'=>$password));
return $query->row_array();
}
public function check_account($email)
{
//cari email lalu lakukan validasi
$this->db->where('email', $email);
$query = $this->db->get($this->table)->row();
//jika bernilai 1 maka user tidak ditemukan
if (!$query) {
return 1;
}
//jika bernilai 2 maka user tidak aktif
if ($query->activated == 0) {
return 2;
}
//jika bernilai 3 maka password salah
if (!hash_verified($this->input->post('password'), $query->password)) {
return 3;
}
return $query;
}
public function get_by_id()
{
$id = $this->session->userdata('id');
$this->db->select('
tbl_user.*, tbl_role.id AS id_role, tbl_role.name, tbl_role.description,
');
$this->db->join('tbl_role', 'tbl_user.id_role = tbl_role.id');
$this->db->from($this->table);
$this->db->where($this->id, $id);
$query = $this->db->get();
return $query->row();
}
public function logout($date, $id)
{
$this->db->where($this->id, $id);
$this->db->update($this->table, $date);
}
13. Untuk bagian view saya buatkan file downloadnya karena jika dijelaskan akan panjang. Jadi, cukup download views-ci-login yang ada pada link di bawah kemudian pindahkan ke views dan replace saja.
14. Sekarang coba buka http://ci-login.test/ maka hasilnya akan seperti gambar berikut :

Itulah cara membuat multi login di codeigniter yang dapat saya sampaikan, semoga bermanfaat.
Baca Juga :
01 : Cara Membuat Form Pendaftaran di CodeIgniter
02 : Cara Membuat Multi Login di CodeIgniter
03 : Cara Update Profile Sesuai Data Login di CodeIgniter
04 : Cara Membuat Last Login di CodeIgniter