Please enable JavaScript!
Bitte aktiviere JavaScript!
S'il vous plaît activer JavaScript!
Por favor,activa el JavaScript!
antiblock.org

 |  | 
Anda ingin membuat website?
Untuk Anda yang sedang mencari orang untuk jasa pembuatan website, Saya akan bantu buatkan aplikasi sesuai kebutuhan Anda. Segera hubungi : mail@rizaldimaulidia.com. Selengkapnya tentang profil saya klik www.rizaldimaulidia.com.

Codeigniter

Cara Membuat Login Multi Level User dengan Codeigniter dan MySQL

img-responsive

Sebenarnya tutorial login dengan codeigniter ini sudah pernah saya buat dengan judul Cara Mudah Membuat Form Login dengan Codeigniter dan MySQL. Hanya saja dalam tutorial tersebut hanya ada 1 level user saja. Tentunya dalam beberapa aplikasi ada yang hanya butuh 1 level user saja misalnya Admin, tapi ada juga yang membutuhkan 2 level user atau lebih. Sejauh ini dari pengalaman saya membuat sebuah website, kebanyakan membutuhkan lebih dari 1 level user. Maka dari itu saya akan coba share pengetahuan saya menganai bagaimana cara mudah membuat fitur login dengan multi level user (lebih dari 1 level user) menggunakan Framework Codeigniter 3 dan Database MySQL.

Dalam catatan ini, saya akan membagi level user menjadi 2 (Admin dan Operator), berikut detailnya :

Admin
Level user admin hak aksesnya adalah berikut ini :

  1. Akses Menu Home. Aksi yang bisa di lakukan : Read
  2. Akses Menu Berita. Aksi yang bisa di lakukan : Create, Read, Update, Delete
  3. Akses Menu Pengguna. Aksi yang bisa di lakukan : Create, Read, Update, Delete
  4. Akses Menu Kontak. Aksi yang bisa di lakukan : Read

Operator
Level user operator hak aksesnya adalah berikut ini :

  1. Akses Menu Home. Aksi yang bisa di lakukan : Read
  2. Akses Menu Berita. Aksi yang bisa di lakukan : Read, Update, Delete
  3. Akses Menu Kontak. Aksi yang bisa di lakukan : Read

Akun User
Saya telah menyiapkan 2 data user untuk tutorial ini, diantaranya :

  1. User Admin
    Username : rizaldi
    Password : 12345678
  2. User Operator
    Username : siska
    Password : siska123

DEMO
Sebelum masuk ke tutorialnya. Mungkin ada yang mau lihat demonya terlebih dahulu. Silahkan klik link berikut untuk melihat demonya : Lihat Demo.


STEP 1 – PERSIAPAN
Berikut ini adalah hal-hal yang harus dipersiapkan :

  1. Download Framework Codeigniter, klik link berikut : download.
  2. Download Bootstrap, klik link berikut : Download.
  3. Download jQuery, klik link berikut : Download.
  4. Buat sebuah folder baru dengan nama login_role_ci, lalu simpan pada folder xampp/htdocs/.
  5. Buat sebuah folder dengan nama css, lalu simpan pada folder xampp/htdocs/login_role_ci/.
  6. Buat sebuah folder dengan nama js, lalu simpan pada folder xampp/htdocs/login_role_ci/.
  7. Ekstrak codeigniter_v3.7z yang telah di download tadi.
  8. Copy semua file dan folder yang ada di folder codeigniter_v3 yang telah di ekstrak tadi ke folder xampp/htdocs/login_role_ci/.
  9. Esktrak file bootstrap.7z yang telah didownload tadi.
  10. Copy and paste folder fonts dari folder bootstrap yang telah diekstrak tadi ke folder xampp/htdocs/login_role_ci/.
  11. Copy and paste file bootstrap.min.css dari folder bootstrap/css/ yang telah diekstrak tadi ke folder xampp/htdocs/login_role_ci/css/.
  12. Copy and paste file bootstrap.min.js dari folder bootstrap/js/ yang telah diekstrak tadi ke folder xampp/htdocs/login_role_ci/js/.
  13. Copy and paste file jquery.min.js yang telah di download tadi ke folder xampp/htdocs/login_role_ci/js/.


STEP 2 – DATABASE
Pada step ini, kita akan membuat databasenya. ikuti langkah-langkah berikut ini :

  1. Buat sebuah database dengan nama mynotescode.
  2. Buat sebuah tabel dengan nama user. Struktur tabelnya sebagai berikut :
    Struktur Tabel - Cara Membuat Login Multi Level User dengan Codeigniter dan MySQL

    CREATE TABLE `user` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `username` varchar(20) NOT NULL,
     `password` varchar(50) NOT NULL,
     `nama` varchar(200) NOT NULL,
     `role` enum('admin','operator') NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
  3. Insert 2 data user :
    INSERT INTO `user` (`id`, `username`, `password`, `nama`, `role`) VALUES
    (1, 'rizaldi', md5('12345678'), 'Rizaldi Maulidia Achmad', 'admin'),
    (2, 'siska', md5('siska123'), 'Siska Melina Rachman', 'operator');

STEP 3 – KONFIGURASI
Karena dibuat dengan Codeigniter, pertama kita harus melakukan konfigurasi terlebih dahulu pada framework codeigniternya.

  1. Buka folder xampp/htdocs/login_role_ci/application/config/
  2. Buka file config.php
    Cari kode berikut $config['base_url'] = '';Ubah kode tersebut jadi seperti ini :

    $config['base_url'] = 'http://localhost/login_role_ci/';

    Kode diatas digunakan untuk menset baseurlnya.
    Lalu simpan file tersebut.

  3. Buka file autoload.php
    Cari kode berikut ini :

    $autoload['libraries'] = array();
    $autoload['helper'] = array();

    Ubah jadi seperti ini :

    $autoload['libraries'] = array('database', 'session');
    $autoload['helper'] = array('url');

    Kode diatas digunakan untuk memuat (menload) class database dan url.
    Lalu simpan file tersebut.

  4. Buka file routes.php
    Cari kode berikut ini :

    $route['default_controller'] = 'welcome';

    Ubah jadi seperti ini :

    $route['default_controller'] = 'auth';

    Kode diatas digunakan untuk menset controller mana yang akan diload pertama kali. Secara default, Codeigniter telah menset default controller yaitu welcome. Disini kita set default controller menjadi auth.
    Lalu simpan file tersebut.

  5. Buka file database.php
    Cari kode berikut ini :

    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',

    Ubah jadi seperti ini :

    'hostname' => 'localhost', // Nama host
    'username' => 'root', // Username
    'password' => '', // Jika menggunakan password isi, jika tidak kosongkan saja
    'database' => 'mynotescode', // Nama databasenya

    Kode diatas digunakan untuk koneksi ke database.
    Lalu simpan file tersebut.


STEP 4 – BUAT MODEL
Langkah selanjutnya adalah membuat modelnya. Buat sebuah file dengan nama UserModel.php, Lalu simpan pada folder xampp/htdocs/login_role_ci/application/models/. Berikut kodenya :

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class UserModel extends CI_Model {
    
    public function get($username){
        $this->db->where('username', $username); // Untuk menambahkan Where Clause : username='$username'
        $result = $this->db->get('user')->row(); // Untuk mengeksekusi dan mengambil data hasil query

        return $result;
    }
}

Fungsi get() berguna untuk melakukan query ke tabel user berdasarkan username yang diinput pada form login. Fungs ini akan menghasilkan query sebagai berikut : SELECT * FROM user WHERE username=’$username’.


STEP 5 – BUAT CORE SENDIRI
Selanjutnya kita akan membuat sebuah core. Core ini berfungsi untuk mengkontrol akses ke halaman setelah login dan juga untuk mengatur template mana yang akan di pakai (Backend / Frontend). Buat sebuah file dengan nama MY_Controller.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/core/. Berikut ini kodenya :

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller{
    public function __construct(){
    parent::__construct();

        $this->authenticated(); // Panggil fungsi authenticated
  }

    public function authenticated(){ // Fungsi ini berguna untuk mengecek apakah user sudah login atau belum
        // Pertama kita cek dulu apakah controller saat ini yang sedang diakses user adalah controller Auth apa bukan
        // Karena fungsi cek login hanya kita berlakukan untuk controller selain controller Auth
        if($this->uri->segment(1) != 'auth' && $this->uri->segment(1) != ''){
            // Cek apakah terdapat session dengan nama authenticated
            if( ! $this->session->userdata('authenticated')) // Jika tidak ada / artinya belum login
                redirect('auth'); // Redirect ke halaman login
        }
    }

    public function render_login($content, $data = NULL){
        /*
        * $data['contentnya']
        * variabel diatas ^ nantinya akan dikirim ke file views/template/login/index.php
        * */
        $data['contentnya'] = $this->load->view($content, $data, TRUE);

        $this->load->view('template/login/index', $data);
    }

    public function render_backend($content, $data = NULL){
        /*
        * $data['headernya'] , $data['contentnya']
        * variabel diatas ^ nantinya akan dikirim ke file views/template/backend/index.php
        * */
        $data['headernya'] = $this->load->view('template/backend/header', $data, TRUE);
        $data['contentnya'] = $this->load->view($content, $data, TRUE);

        $this->load->view('template/backend/index', $data);
    }
}

Seperti yang saya bilang, core ini akan kita manfaatkan untuk mengkontrol akses ke halaman setelah login dan juga untuk mengatur template. Core ini nanti harus di gunakan pada semua controller.

public function __construct(){
Kode diatas berguna sebagai fungsi awal yang akan dieksekusi setiap kali Core MY_Controller dipanggil. Jadi sebelum mengeksekusi fungsi lainnya, kode yang ada didalam fungsi __construct() akan terlebih dahulu dieksekusi diawal.

if( ! $this->session->userdata(‘authenticated’))
Fungsi dari kode diatas adalah untuk mengecek apakah session dengan nama authenticated ada atau tidak. Pada if kondisi diatas saya menambahkan tanda seru “!“. Tanda seru tersebut artinya kebalikannya, jadi If disitu jika di terjemahkan adalah jika session authenticated tidak ada, maka redirect ke halaman login.

Disini juga kita buat 2 fungsi yakni render_login() dan render_backend(). Fungsi render_login() sendiri untuk memanggil template login sehingga ketika user mengakses form login, maka template yang digunakan adalah template untuk form login. Begitupun dengan render_backend(), fungsi ini untuk memanggil template backend (setelah login). Lebih jelasnya soal templating / template ini bisa Anda baca dan pahami pada tutorial Cara Membuat 1 File Template untuk Semua Tampilan dengan Codeigniter.


STEP 6 – BUAT CONTROLLER AUTH
Pada tahap ini, kita akan membuat controller untuk proses login dan logout. Buat sebuah file dengan nama Auth.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/controllers/. Berikut ini kodenya :

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Auth extends MY_Controller {

  public function __construct(){
    parent::__construct();

    $this->load->model('UserModel');
  }

  public function index(){
    if($this->session->userdata('authenticated')) // Jika user sudah login (Session authenticated ditemukan)
      redirect('page/home'); // Redirect ke page home

    // function render_login tersebut dari file core/MY_Controller.php
    $this->render_login('login'); // Load view login.php
  }

  public function login(){
    $username = $this->input->post('username'); // Ambil isi dari inputan username pada form login
    $password = md5($this->input->post('password')); // Ambil isi dari inputan password pada form login dan encrypt dengan md5

    $user = $this->UserModel->get($username); // Panggil fungsi get yang ada di UserModel.php

    if(empty($user)){ // Jika hasilnya kosong / user tidak ditemukan
      $this->session->set_flashdata('message', 'Username tidak ditemukan'); // Buat session flashdata
      redirect('auth'); // Redirect ke halaman login
    }else{
      if($password == $user->password){ // Jika password yang diinput sama dengan password yang didatabase
        $session = array(
          'authenticated'=>true, // Buat session authenticated dengan value true
          'username'=>$user->username,  // Buat session username
          'nama'=>$user->nama, // Buat session nama
          'role'=>$user->role // Buat session role
        );

        $this->session->set_userdata($session); // Buat session sesuai $session
        redirect('page/home'); // Redirect ke halaman home
      }else{
        $this->session->set_flashdata('message', 'Password salah'); // Buat session flashdata
        redirect('auth'); // Redirect ke halaman login
      }
    }
  }

  public function logout(){
    $this->session->sess_destroy(); // Hapus semua session
    redirect('auth'); // Redirect ke halaman login
  }
}

Satu hal yang harus diperhatikan pada skrip diatas, biasanya ketika kita buat controller di codeigniter, controller tersebut akan meng-extends ke CI_Controller. Tapi dalam tutorial ini kita ubah menjadi extends MY_Controller agar skrip yang ada di MY_Controller bisa di eksekusi oleh controller tersebut.

Dari kode diatas, anda bisa lihat bahwa controller Auth meng-extends ke MY_Controller (class Auth extends MY_Controller {). Secara default ketika kita menggunakan Framework Codeigniter, maka setiap controller harus meng-extends ke CI_Controller. Tapi karena pada kasus ini kita telah membuat Core sendiri dengan nama MY_Controller, maka ketika kita akan menggunakan core tersebut, controllernya harus meng-extends ke MY_Controller.

Jadi setiap kita membuka salah satu fungsi di dalam controller Auth, maka dia akan mengeksekusi terlebih dahulu kode yang ada di dalam fungsi __construct() pada core MY_Controller, baru setelah itu dia akan mengeksekusi kode yang ada didalam fungsi yang kita buka / panggil.

Kesimpulannya, dengan cara ini, Kode kita akan lebih efisiensi karena kita tidak perlu lagi menambahkan fungsi if untuk mengecek apakah user sudah login atau belum pada setiap fungsi. Karena sudah kita letakan kode tersebut pada core MY_Controller.

if($this->session->userdata(‘authenticated’))
Kode diatas berfungsi untuk mengecek apakah session dengan nama authenticated ada atau tidak. Jika ada, artinya user sudah login. Jika tidak ada, berarti user belum login.

$user = $this->UserModel->get($username)
Kode diatas berfungsi untuk memanggil fungsi get() yang ada di UserModel.php untuk mendapatkan data user yang ada didatabase berdasarkan username.

$this->session->set_flashdata(‘message‘, ‘Username tidak ditemukan‘)
Kode diatas untuk membuat session flashdata. Session ini sifatnya hanya sementara, jadi ketika sudah dibaca, maka akan otomatis terhapus. Struktur dasar kodenya adalah $this->session->set_flashdata(‘nama_session‘, ‘isi_session‘). Lebih jelasnya soal session flashdata anda bisa baca disini.

$this->session->set_userdata($session)
Kode diatas berfungsi untuk membuat session. Sebenarnya di codeigniter ada 2 opsi cara membuat array antara lain :

  1. Jika anda ingin membuat session lebih dari 1, sebaiknya pakai cara ini :
    (dalam tutorial ini, kita menggunakan cara ini)
    $session = array(
    ‘nama_session1’=>’isi_session1’,
    ‘nama_session2’=>’isi_session2’,
    ‘nama_session3’=>’isi_session3’ 
    );
    $this->session->set_userdata($session);
  2. Jika anda ingin membuat hanya 1 session, pakai cara ini :
    $this->session->set_userdata(‘nama_session1’, ‘isi_session1’);


STEP 7 – BUAT FORM LOGIN
Pada tahap ini, kita akan membuat form loginnya. Buat sebuah file dengan nama login.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/. Berikut ini tampilan dan kodenya :

Form Login - Struktur Tabel - Cara Membuat Login Multi Level User dengan Codeigniter dan MySQL

<?php
// Cek apakah terdapat session nama message
if($this->session->flashdata('message')){ // Jika ada
  echo '<div class="alert alert-danger">'.$this->session->flashdata('message').'</div>'; // Tampilkan pesannya
}
?>

<form method="post" action="<?php echo base_url('index.php/auth/login'); ?>">
    <div class="form-group">
        <label>Username</label>
        <input type="text" class="form-control" name="username" placeholder="Username" required autofocus>
    </div>
    <div class="form-group">
        <label>Password</label>
        <input type="password" class="form-control" name="password" placeholder="Password" required>
    </div>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>

if($this->session->flashdata(‘message‘))
Kode diatas berfungsi untuk memanggil session flashdata dengan nama message yang dibuat pada controller auth fungsi login (jika data user tidak ditemukan). Struktur dasar kodenya adalah $this->session->flashdata(‘nama_session‘).


STEP 8 – BUAT CONTROLLER PAGE
Selanjutnya, kita akan membuat controller page. Buat sebuah file dengan nama Page.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/controllers/. Berikut ini kodenya :

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Page extends MY_Controller {

  public function home(){
    // function render_backend tersebut dari file core/MY_Controller.php
    $this->render_backend('home'); // load view home.php
  }

  public function berita(){
    // function render_backend tersebut dari file core/MY_Controller.php
    $this->render_backend('berita'); // load view berita.php
  }

  public function pengguna(){
    if($this->session->userdata('role') != 'admin') // Jika user yg login bukan admin
      show_404(); // Redirect ke halaman 404 Not found

    // function render_backend tersebut dari file core/MY_Controller.php
    $this->render_backend('pengguna'); // load view pengguna.php
  }

  public function kontak(){
    // function render_backend tersebut dari file core/MY_Controller.php
    $this->render_backend('kontak'); // load view kontak.php
  }
}

Sama seperti controller Auth, Controller Page juga meng-extends ke MY_Controller.


STEP 9 – BUAT TEMPLATE LOGIN
Kemudian kita akan membuat template untuk halaman login / form login. Buat sebuah folder dengan nama template, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/. Kemudian buat sebuah folder lagi dengan nama login pada folder xampp/htdocs/login_role_ci/application/views/template/. Terakhir buat sebuah file dengan nama index.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/template/login/. Berikut ini kodenya :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Login + Hak Akses (PHP)</title>

    <!-- Load File CSS Bootstrap  -->
    <link href="<?php echo base_url('css/bootstrap.min.css'); ?>" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->

    <style>
    body {
        padding-top: 40px;
        padding-bottom: 40px;
        background-color: #eee;
    }

    .form-signin {
        max-width: 330px;
        padding: 15px;
        margin: 0 auto;
    }
    .form-signin .form-signin-heading{
        margin-bottom: 10px;
    }
    .form-signin .form-control {
        position: relative;
        height: auto;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        padding: 10px;
        font-size: 16px;
    }
    .form-signin .form-control:focus {
        z-index: 2;
    }
    </style>
</head>
<body>
    <div class="container">
        <div class="form-signin">
            <h2 class="form-signin-heading">Silahkan login</h2>
            <?php
            /*
            * Variabel $contentnya diambil dari core MY_Controller
            * (application/core/MY_Controller.php)
            * */
            echo $contentnya;
            ?>
        </div>
    </div>
</body>
</html>

STEP 10 – BUAT TEMPLATE BACKEND
Kemudian kita akan membuat template untuk halaman setelah login. Buat sebuah folder dengan nama backend pada folder xampp/htdocs/login_role_ci/application/views/template/. Kemudian buat sebuah file dengan nama index.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/template/backend/. Berikut ini kodenya :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Login + Hak Akses (PHP)</title>

    <!-- Load File CSS Bootstrap  -->
    <link href="<?php echo base_url('css/bootstrap.min.css'); ?>" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->

    <style>
    body {
        min-height: 2000px;
        padding-top: 70px;
    }
    </style>
</head>

<body>
    <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
        <?php
        /*
        * Variabel $headernya diambil dari core MY_Controller
        * (application/core/MY_Controller.php)
        * */
        echo $headernya;
        ?>
    </nav>

    <div class="container">
        <?php
        /*
        * Variabel $contentnya diambil dari core MY_Controller
        * (application/core/MY_Controller.php)
        * */
        echo $contentnya;
        ?>
    </div>

    <!-- Load file Javascript Bootstrap & jQuery -->
    <script src="<?php echo base_url('js/jquery.min.js'); ?>"></script>
    <script src="<?php echo base_url('js/bootstrap.min.js'); ?>"></script>
</body>
</html>

Selanjutnya buat lagi sebuah file dengan nama header.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/template/backend/. Berikut ini kodenya :

<div class="container">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#">My Notes Code</a>
    </div>
    <div id="navbar" class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
            <li><a href="<?php echo base_url('index.php/page/home'); ?>">Home</a></li>
            <li><a href="<?php echo base_url('index.php/page/berita'); ?>">Berita</a></li>

            <?php
            // Cek role user
            if($this->session->userdata('role') == 'admin'){ // Jika role-nya admin
                ?>
                <li><a href="<?php echo base_url('index.php/page/pengguna'); ?>">Pengguna</a></li>
                <?php
            }
            ?>

            <li><a href="<?php echo base_url('index.php/page/kontak'); ?>">Kontak</a></li>
        </ul>
        <ul class="nav navbar-nav navbar-right">
            <li><a href="<?php echo base_url('index.php/auth/logout'); ?>">Logout</a></li>
        </ul>
    </div><!--/.nav-collapse -->
</div>

STEP 11 – HOME
Tahap selanjutnya kita akan membuat file untuk halaman home (halaman setelah login). Silahkan buat file dengan nama home.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/. Berikut tampilan dan kodenya :

Home - Struktur Tabel - Cara Membuat Login Multi Level User dengan Codeigniter dan MySQL

<h2 style="margin-top: 0;">
    <small>Selamat datang</small>
    <br />
    <?php echo $this->session->userdata('nama') ?>
</h2>
<hr />

<div class="form-group">
    <label>Role</label>
    <br /><?php echo ucwords($this->session->userdata('role')) ?>
</div>

<?php
// Cek role user
if($this->session->userdata('role') == 'admin'){ // Jika role-nya admin
    ?>
    <div class="form-group">
        <label>Hak Akses</label>
        <br />
        <ol style="margin-left: -25px;">
            <li>
                Akses menu home. Aksi yang diperbolehkan : Read
            </li>
            <li>
                Akses menu berita. Aksi yang diperbolehkan : Create, Read, Update, Delete
            </li>
            <li>
                Akses menu pengguna. Aksi yang diperbolehkan : Create, Read, Update, Delete
            </li>
            <li>
                Akses menu Kontak. Aksi yang diperbolehkan : Read
            </li>
        </ol>
    </div>
    <?php
}else{ // Jika role-nya operator
    ?>
    <div class="form-group">
        <label>Hak Akses</label>
        <br />
        <ol style="margin-left: -25px;">
            <li>
                Akses menu home. Aksi yang diperbolehkan : Read
            </li>
            <li>
                Akses menu berita. Aksi yang diperbolehkan : Read, Update, Delete
            <li>
                Akses menu Kontak. Aksi yang diperbolehkan : Read
            </li>
        </ol>
    </div>
    <?php
}
?>

Dalam kode diatas terdapat sebuah kode kondisi if($this->session->userdata(‘role’) == ‘admin’){. Kode itu untuk menampilkan data jika user yang login adalah admin. Sebaliknya jika bukan admin akan di tampilkan apa.



STEP 12 – BERITA
Tahap selanjutnya kita akan membuat file untuk halaman berita (halaman setelah login). Silahkan buat file dengan nama berita.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/. Berikut tampilan dan kodenya :

Berita - Struktur Tabel - Cara Membuat Login Multi Level User dengan Codeigniter dan MySQL

<?php
// Cek role user
if($this->session->userdata('role') == 'admin'){ // Jika role-nya admin
    ?>
    <div class="pull-right">
        <a href="" class="btn btn-success">TAMBAH DATA</a>
    </div>
    <?php
}
?>

<h2 style="margin-top: 0;margin-bottom: 0;">Berita</h2>
<div class="clearfix"></div>
<hr />

<div class="table-responsive">
    <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>No</th>
                <th>Judul</th>
                <th>Deskripsi</th>
                <th>Tanggal</th>
                <th style="width: 80px;">Aksi</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>Lorem ipsum dolor sit consectetur adipiscing elit</td>
                <td>Duis arcu augue, tincidunt id posuere suscipit, aliquam a libero. Cras varius neque quis odio varius commodo. Nullam in tellus gravida, porttitor tortor nec, bibendum nisi...</td>
                <td>12 Januari 2019</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
            <tr>
                <td>2</td>
                <td>Lorem ipsum dolor sit consectetur adipiscing elit</td>
                <td>Duis arcu augue, tincidunt id posuere suscipit, aliquam a libero. Cras varius neque quis odio varius commodo. Nullam in tellus gravida, porttitor tortor nec, bibendum nisi...</td>
                <td>12 Januari 2019</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
            <tr>
                <td>3</td>
                <td>Lorem ipsum dolor sit consectetur adipiscing elit</td>
                <td>Duis arcu augue, tincidunt id posuere suscipit, aliquam a libero. Cras varius neque quis odio varius commodo. Nullam in tellus gravida, porttitor tortor nec, bibendum nisi...</td>
                <td>12 Januari 2019</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
        </tbody>
    </table>
</div>

if($this->session->userdata(‘role’) == ‘admin’){ // Jika role-nya admin
?>
<div class=”pull-right”>
<a href=”” class=”btn btn-success”>TAMBAH DATA</a>
</div>
<?php
}
Kode diatas berfungsi untuk jika user yang login adalah admin. Makan tombol tambah akan dimunculkan, Tapi jika user yang login bukan admin, maka tombol tambah akan disembunyikan.


STEP 13 – PENGGUNA
Tahap selanjutnya kita akan membuat file untuk halaman berita (halaman setelah login). Silahkan buat file dengan nama pengguna.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/. Berikut tampilan dan kodenya :

Pengguna - Struktur Tabel - Cara Membuat Login Multi Level User dengan Codeigniter dan MySQL

<div class="pull-right">
    <a href="" class="btn btn-success">TAMBAH DATA</a>
</div>

<h2 style="margin-top: 0;margin-bottom: 0;">Pengguna</h2>
<div class="clearfix"></div>
<hr />

<div class="table-responsive">
    <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>No</th>
                <th>Username</th>
                <th>Nama</th>
                <th>Role</th>
                <th style="width: 80px;">Aksi</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>rizaldi</td>
                <td>Rizaldi Maulidia Achmad</td>
                <td>Admin</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
            <tr>
                <td>2</td>
                <td>siska</td>
                <td>Siska Melina Rachman</td>
                <td>Operator</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
        </tbody>
    </table>
</div>

STEP 14 – KONTAK
Tahap selanjutnya kita akan membuat file untuk halaman berita (halaman setelah login). Silahkan buat file dengan nama kontak.php, lalu simpan pada folder xampp/htdocs/login_role_ci/application/views/. Berikut tampilan dan kodenya :

Kontak - Struktur Tabel - Cara Membuat Login Multi Level User dengan Codeigniter dan MySQL

<h3>My Notes Code</h3>
<br>
Telepon : 022-0123456<br>
Jl.Jend. Gatot Subroto No.123 Bandung

Sekian untuk tutorial kali ini. Jika ada hal yang ingin ditanyakan, langsung tanyakan saja lewat kolom komentar dibawah ini. Jangan lupa LIKE dan SHARE nya hehe, Terimakasih.

Happy Coding ^_^


SOURCE CODE
Untuk mengunduh source code nya, klik link berikut ini : Download.


SUMBER & REFERENSI
Dokumentasi Codeigniter : https://www.codeigniter.com/user_guide
Cara mudah membuat login multi user dengan codeigniter dan mysql, tutorial lengkap membuatlogin multi user dengan codeigniter dan mysql, tutorial step by step membuatlogin multi user dengan codeigniter dan MySQL

Login Multi User Codeigniter

(Total : 43,526 viewers, 1 viewers today)
login-multi-level-user-codeigniter-mysql

ABOUT THE AUTHOR

Interested in android programming, long time focused on web development. Visit My Profile Site at www.rizaldimaulidia.com

POST YOUR COMMENTS

Your email address will not be published. Required fields are marked *

Name *

Email *

Website

59 Comments

  1. andraisd

    ass, salam sejahtera,, bang gimana caranya membuat login dengan menampilkan data berdasarkan kelas
    misalnya ada 3 hak akses : super admin, admin, admin kelas,

    contoh hak akses admin kelas hanya bisa menampilkan data siswa pada kelas tersebut
    semntara untuk super admin dan admin bisa menampilan seluruh siswa berdasarkan kelas.
    mohon pentunjuk bang

    • Wa’allaikumsalam
      Gampang om, coba om perhatikan, pada proses login (Controller Auth function login) kita membuat sebuah SESSION :
      $session = array(
      'authenticated'=>true, // Buat session authenticated dengan value true
      'username'=>$user->username, // Buat session username
      'nama'=>$user->nama, // Buat session nama
      'role'=>$user->role // Buat session role
      );

      nah disini om tinggal tambahkan id user yang login di sessionnya. biar nanti ketika user login, kita bisa get ID User yang login siapa. mungkin jadi seperti berikut :

      $session = array(
      'authenticated'=>true, // Buat session authenticated dengan value true
      'username'=>$user->username, // Buat session username
      'nama'=>$user->nama, // Buat session nama
      'role'=>$user->role // Buat session role,
      'id'=>$user->id
      );

      Baru setelah itu kita jadikan WHERE CLAUSE ketika kita akan select data ke tabel siswanya.

      Misal gini, kan kasus om mau menampilkan data siswa berdasarkan kelas yang telah ditentukan untuk user admin. berarti asumsi di tabel user untuk role admin, dia ada id_kelas. maka kita harus query terlebih dahulu untuk get id_kelas si admin :

      “SELECT id_kelas FROM user WHERE id='” . $this->session->userdata(‘id’) . “‘”

      setelah eksekusi query diatas, maka seharunys sekarang kita sudah dapat id_kelas dr user admin. baru sekarang kita query data siswa berdasarkan kelas tadi :

      “SELECT * FROM siswa WHERE id_kelas='” . $id_kelas_dr_query_diatas .”‘”

  2. aditiarekt

    Om kalo mau tambahin 1 role lagi antara admin dan operator misalnya supervisor gimana ?
    role supervisor ini bisa percis sama ama operator, tapi adalah operator yang under supervisor nya…

    • yang paling utama edit dulu field role di tabel usernya, itu kan tipe nya enum. jadi tambahkan pilihan “supervisor”.
      sisanya ngikuti hak akses si supervisor bisa apa aja, pake if cek session role yang saya contohkan dan jelaskan pada tutorial ini.

  3. Faishal Ammar Rasyiq

    A PHP Error was encountered
    Severity: Notice

    Message: Undefined variable: dataAspek3

    Filename: aspek/aspek3.php

    Line Number: 56

    Backtrace:

    File: /Applications/XAMPP/xamppfiles/htdocs/login_role_ci/application/views/aspek/aspek3.php
    Line: 56
    Function: _error_handler

    File: /Applications/XAMPP/xamppfiles/htdocs/login_role_ci/application/core/MY_Controller.php
    Line: 36
    Function: view

    File: /Applications/XAMPP/xamppfiles/htdocs/login_role_ci/application/controllers/Page.php
    Line: 95
    Function: render_backend

    File: /Applications/XAMPP/xamppfiles/htdocs/login_role_ci/index.php
    Line: 315
    Function: require_once

    Mas ini kenapa ya?

    • errornya ada pada file aspek3.php, ada variabel yang tidak terdefinisi atau tidak ditemukan.
      Undefined variable: dataAspek3

      cari tau itu “dataAspek3” dari mana asal usulnya

  4. ucufazaaaa

    nama dan tombol berita pengguna logout ga muncul kenapa ya?

  5. jaki ahmad

    min itu halamannya 2 (kusus admin/user) atau cuma 1 halaman aja

    • halaman yang mana maksudnya? dalam tutorial ini tiap menu saya buat 1 file, tapi di dalamnya diberi if…else… untuk hak akses masing-masing pengguna.

  6. chacha ain

    Om… kok error seperti dibawah ini :

    A PHP Error was encountered

    Severity: Warning

    Message: mysqli::real_connect(): (HY000/2002): No connection could be made because the target machine actively refused it.

    Filename: mysqli/mysqli_driver.php

    Line Number: 201

    Backtrace:

    File: C:\xampp\htdocs\login_role_ci\application\core\MY_Controller.php
    Line: 5
    Function: __construct

    File: C:\xampp\htdocs\login_role_ci\application\controllers\Auth.php
    Line: 7
    Function: __construct

    File: C:\xampp\htdocs\login_role_ci\index.php
    Line: 315
    Function: require_once

    ntu knp y Om… please help

  7. Haoren12

    Mas, mau tanya donk saya sudah mengikuti script nya namun kenapa ya ketika saya coba dengan database yang berbeda tidak mau malah 404 page not found. itu bugs dimana ya untuk redirect ke halaman dashboard sudah benar.. mohon dibantu ya infonya

    • harusnya database diganti ga ada hubungannya sama error 404 page not found, error itu karna url yg di akses salah atau tidak ditemukan om

  8. Jeremy Carlo

    mas kenapa gk buat sekalian sistem crudnya?? tanggung kalo kek gini mas

  9. yimka333

    gak bisa d download min loading trus

  10. nobraclub

    itu pake CI versi berapa?

  11. ca12345678

    bang, kalo mau tambah role, tapi dari beda tabel gimana ya?

      • Rahmat H H

        Kalau mau nambah role itu gimana ya ?
        kan disini udah ada 2 role (admin,oprator) pada DB di tabel -> User
        Saya mau bikin 1 role lagi contohnya role sebagai siswa tetapi dalam tabel yang terpisah dari admin dan oprator, apakah bisa atau disatukan saja ya ?

  12. o yeas bebe

    gan, yang di create table, kurang harusnya ditambahin :
    —-`role` enum(‘admin’,’operator’) NOT NULL—-
    sama belum ada insert into table nya bang.. mungkin insert values nya bisa kayak dibawah gini :
    INSERT INTO `user` (`id`, `nama`, `password`, `role`, `username`) VALUES
    (1, ‘Ahmad’, MD5(‘123456’), ‘admin’, ‘Ahmad1’),
    (2, ‘Ainin’, MD5(‘123456’), ‘operator’, ‘Ainin1’);
    btw makasih postingannya gan, smoga bermanfaat

  13. yayaopang

    ga bisa d download om…link nya muter2 terus 🙁

  14. Chandraaa

    maaf nanya gan.. untuk nambahin user nya yg mesti diubah dimana ya?
    misal kondisi skrg kan type usernya 2, nah saya mau tambahin jadi 3 itu gimana ya caranya?
    btw untuk database nya saya sudah update.. tinggal codingannya blm, mohon bantuannya

    • tinggal buat dulu fitur untuk role barunya apa om, nanti tinggal pakai if($this->session->userdata('role') != 'admin') seperti pada file Page.php pada fungsi pengguna() untuk membatasi hak aksesnya

  15. anggada11

    om kalo operatornya dibikin read doang gimana ya

    • coba pahami penjelasan saya om pada tutorial ini, pada skrip nya pun sudah saya jelaskan.
      untuk pembatasan hak akses nya, bisa menggunakan :

      if($this->session->userdata('role') == 'operator'){ // Isi role nya tergantung om nya ada role apa saja di database
      // Disini akses untuk operator
      }

  16. Bagas Eka Wahyudi

    konyol sih mau tanyanya,,cara runningya gmn yaaa….. heeee
    maaf pemula

    • sudah pelajari php dasarnya belum om? saran saya pelajari dulu PHP Dasarnya sebelum menggunakan Framework, biar tidak terlalu pusing om.
      Untuk cara running nya sendiri :
      1. Install Xampp
      2. Copy & Paste projek webnya pada folder xampp/htdocs/
      3. Jalankan Aplikasi Xampp nya, lalu tekan tombol Start pada Apache & MySQL
      4. Buka Browser, ketik localhost/phpmyadmin
      5. Import database atau buat database sesuai tutorial ini
      6. Jalankan web nya dengan cara ketik pada browser : localhost/namafolderweb

      • ucuf mael

        ane pemula walau udah tua hehe…runningnya gmn? selalu object not found. terus kalau mau dirilis di blog/web sy gmn? hehe
        url nya localhost/login_role_ci ya? hehe

        • cara runningnya pakai aplikasi “Xampp”. sudah di install?
          dan sudah dipastikan folder web login_role_ci nya disimpan di folder xampp/htdocs/ ?
          lalu pastikan sudah mengikuti STEP 3 Nomor 1 pa.
          Mohon maaf baru bisa balas sekarang pa.

  17. mrsuryana

    kenapa tampilannya tidak rapih / css nya tidak jalan, apakah ada yang salah?
    padahal saya sudah ikuti semua step diatas

    • Oh mohon maaf om, ada yang kelewat pada STEP 1 nya, sudah saya perbaharui tutorialnya om, mohon maaf sebelumnya dan terimakasih atas laporannya

  18. yusdi barkah syabana

    mantap om… lanjutkan… terima kasih… coding nya lancar aman dan terkendali…. hehehe… sekali lagi makasih

    • Sepertinya itu URL Helpersnya belum di load di file autoload.php nya. Sudah mengikuti STEP 3 nya om? silahkan ikuti STEP 3 dengan benar om terutama STEP 3 Nomor 3

    • Maximum execution time, itu masalahnya karena melebihi batas waktu sekali eksekusi dalam php nya om, emang itu di controller auth nya om query apa saja? harusnya tidak sampai seperti itu

  19. darmannn

    mohon izin dan cara download tutorial ini bagaimana gan, sy coba save type kok bisa juga, terimakasih atas infonya

  20. rezaaaaaaa

    login berhasil tp ga page nya ga ketemu, yg salah apa ya kira kira? terima kasih
    sudah diset ke
    $config[‘base_url’] = ‘http://localhost:1080/kamis/’;
    screenshot https://ibb.co/XFcj6BL

    • rezaaaaaaa

      btw sudah solved
      di line : $config[‘index_page’] = ‘index.php’; awalnya saya delete index.php nya,
      btw kalau misalnya saya mau masukin controller baru, dan link nya ditaro di halaman index.php ini, bikin href ke controller itu gimana ya? soalnya yang ada ntar url nya jadi localhost:1080:kamis/index.php/nama_controller yang bikin controller nya ga bisa diakses
      terimakasih

      • ya memang seperti itu om cara aksesnya localhost/namafolderweb/index.php/namacontroller
        kalau om nya mau ngilangin index.php nya jadi seperti ini localhost/namafolderweb/namacontroller. pakai htaccess om. coba buka tutorial crud ini https://www.mynotescode.com/crud-tanpa-refresh-codeigniter-bootstrap/. coba om ikuti step ke 4 nya. dan jangan lupa hapus index.php pada config $config['index_page'] = 'index.php'; ubah jadi $config['index_page'] = '';

        • indira insiyah

          ka, kenapa setelah login ketika masuk ke page dia muncul 404 object not found yah?, mohon bantuannya kak, terimakasih

          • Kalau page not found biasanya karena nama controller / function nya salah, cek url nya apakah sudah ada controller dan function yang diarahkan pada url nya?

  21. izsal_qurlinas

    bang kok pas saya klik dia not found kenapa ya bang

  22. Muhamad Zulfikar

    bang w udh download terus coba jalanin Object not found! 404

    • oh sorry om, itu baseurl nya lupa belum saya ganti. om bisa ganti pada file application/config/config.php baseurl nya. sesuaikan dengan nama folder web di htdocsnya

NOTE ARCHIVES