Kali ini saya akan berbagi mengenai “Library Authority Code Igniter untuk Mengamankan dan Membagi Akses Halaman” dimana disini saya akan share library yang saya miliki dan menjelaskan bagaimana kegunaannya. Hal ini sangat berguna untuk anda yang ingin membatasi atau mengamankan halaman admin misalnya, agar orang yang belum login tidak bisa mengaksesnya. Atau mengamankan halaman dari orang yang tidak berhak untuk mengaksesnya.
Cara Kerja Library Authority
Seperti yang saya sampaikan pada prolog diatas, untuk cara kerja library ini ibaratnya kita mengamankan sebuah halaman untuk orang yang tidak berhak untuk mengaksesnya. Prinsipnya hanya itu. Sehinga jika ada seseorang ingin mengakses halaman yang bukan haknya, namun dia mengakses lewat path url misalnya, dia akan di redirect ke halaman lain.
Misalnya, saya belum login namun saya ingin mengakses halaman admin, maka saya akan di arahkan atau di redirect ke halaman login. Contoh lain, misalnya sebuah halaman hanya bisa diakses oleh user dengan level super admin, sedangkan saya hanya user berlevel admin biasa sehingga saya tidak boleh mengakses halaman tersebut. Ketika saya memaksa untuk mengakses halaman tersebut, maka saya akan di redirect ke halaman lain.
Nah, mungkin kayak begitu gambaran dari library authority yang akan kita buat. Sekarang lanjut ke ngode-nya aja biar ngga kelamaan baper minta di kode 😀
Code Library Authority
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Auth {
public function cek_auth()
{
$this->ci =& get_instance();
$this->sesi = $this->ci->session->userdata('isLogin');
//$this->hak = $this->ci->session->userdata('role');
if($this->sesi != TRUE){
redirect('login','refresh');
exit();
}
}
public function cek_bukan_su()
{
$hak_akses = $this->ci->session->userdata('role');
if($hak_akses!="super admin")
{
echo "<script>alert('Anda bukan Super Admin! Anda tidak berhak mengakses halaman ini!');</script>";
redirect('admin');
}
}
}
Penjelasan kode function:
cek_auth()
cek_bukan_su()
Cara memanggil library auth.php
Untuk cara memanggilnya, sama halnya dengan library-library yang lain yaitu dengan memanggilnya via controller. (kalau saya sih, gatau yang lain). Kurang lebih seperti dibawah.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Admin extends CI_Controller {
function __construct(){
parent :: __construct();
$this->load->model(array('m_admin','m_artikel','m_kategori','m_user','m_login'));
$this->auth->cek_auth();
}
public function index()
{
Diatas adalah bagian header atau bisa dibilang bagian atas dari sebuah controller. Coba perhatian bagian $this->auth->cek_auth(); itu berarti saya memanggil library functin cek_auth() dari library auth.
Untuk function cek_bukan_su() sama saja, dipasang seperti itu juga.
Membatasi user yang dapat mengakses suatu halaman dan me-redirect yang tidak berhak ke halaman lain
Seperti telah saya sampaikan diatas, fungsi library ini memang begitu.Tapi bagaimana cara menempatkannya? Saya beri contoh seperti kodingan saya dibawah:
$ambil_akun = $this->m_login->ambil_user($this->session->userdata('username'));
$data['users'] = array(
'user' => $ambil_akun,
);
$stat = $this->session->userdata('role');
if($stat=="super admin"){//admin
$this->template->load('admin/index','admin/dashboard',$data);
}else{ //user
$this->template->load('admin/user','admin/dashboard',$data);
}
Di kode diatas, saya mengambil data role (hak akses) dari session login yang aktif, dan menyimpannya dalam variabel $stat. Kemudian saya melakukan perandaian dengan if, jika data dalam variabel $stat sama dengan “super admin” maka yang tampil adalah halaman index untuk admin, dan jika tidak maka yang tampil halaman lain.
Mungkin untuk postingan kali ini seperti itu saja. Kurang lebihnya saya mohon maaf karena masih belajar juga. Jika ada masukan atau diskusi, ata sekedar bertegur sapa, silahkan sematkan pada komentar.
Saya belum membuat yang khusus untuk demo-nya. Mungkin lain kali.
Namun, mbak bisa langsung menerapkan seperti contoh diatas. Kalau nanti ada eror boleh curhat 😀
bisa coba minta aplikasi contohnya mas ?