Membuat Library Authority Code Igniter untuk Mengamankan dan Membagi Akses Halaman

Posted on
Bismillah…
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

Langsung aja, untuk code-nya seperti dibawah, silahkan simpan di folder libraries di project CI Anda. Boleh dengan nama apa aja, untuk kali ini saya memberinya nama auth.php

<?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:

Pada library diatas saya membaut dua function yaitu cek_auth() dan cek_bukan_su()

cek_auth()

Untuk function ini berfungsi membatasi akses terhadap suatu halaman jika tidak belum login. Jadi kalau halaman itu diakses ketika user belum login, user akan di redirect ke halaman login. Hal yang demikian sangat bermanfaat ketika kita ingin mengamankan sebauah backend  atau halaman admin.

cek_bukan_su()

Untuk function yang ini, berfungsi untuk membagi halaman terhadap user yang sudah login. Yaitu antara super admin dan admin/user biasa. Ketika super admin yang mengakses maka akan diijinkan untuk mengakses, namun jika bukan maka user akan di redirect ke halaman dashboard miliknya.

Baca juga  Tutorial: How to Build Website use CodeIgniter and Bootstrap

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.

0 0 votes
Article Rating
Subscribe
Notify of
guest

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Sutriman
8 years ago

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 😀

devi novitasari
8 years ago

bisa coba minta aplikasi contohnya mas ?