mumunotes

  • Home
  • Contact Us

Tuesday, 9 June 2015

ACF (Access Control Filter) Yii2 dengan Role dari Database

 mumunotesss     10:37     Yii, Yii2     No comments   

Selamat pagi guys. Bertemu dengan saya kembali..hehehehe
Kembali lagi saya akan memberikan tutorial Yii2. Kali ini tentang ACF (Acess Control Filter) Yii2 dan cara implementasi sederhana di aplikasi Yii2.
Sebelum melakukan implementasi alangkah baiknya kita berkenalan dulu dengan ACF Yii2.
Access Control Filter (ACF) adalah metode autorisasi sederhana yang bagus digunakan pada aplikasi Yii2 yang hanya membutuhkan beberapa access control sederhana. Seperti pada namanya, ACF merupakan sebuah action filter yang dapat diimplementasikan pada controller atau module sebagai behavior. ACF akan mengecek access rules yang kita set apakah user tersebut diperbolehkan untuk mengakses action atau tidak.

Implemntasi umum jika tanpa role dari database :
use yii\filters\AccessControl;

class SiteController extends Controller{
    public function behaviors(){
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['login', 'logout', 'signup'],
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['login', 'signup'],
                        'roles' => ['?'],
                    ],
                    [
                        'allow' => true,
                        'actions' => ['logout'],
                        'roles' => ['@'],
                    ],
                ],
            ],
        ];
    }
 // ...
}
Kode di atas adalah ACF yang diterapkan pada site controller sebagai behavior. Type ini menggunakan action filter.
Penjelasan :
  • Rules ['?'] dimaksudkan semua user bisa mengakses action tersebut tanpa harus melakukan login terlebih dahulu.
  • Rules ['@'] dimaksudkan action tersebut hanya bisa diakses oleh semua user yang telah login.
Begitulah penggunaan secara umumnya.
Nah kalo kita sekarang akan menggunakan role dari table login kemaren untuk memfilter action masing-masing userrole.
Kita menggunakan aplikasi yang kemaren ya teman2. Bagi yang belum tau silahkan klik disini untuk mengetahui tutorial sebelumnya.
Bagi teman2 yang sudah tau, langsung aja teman2 login menggunakan username yang bukan admin tapi mempunyai role selain admin. Jika belum ada silahkan tambahkan user baru dengan role Mahasiswa. Teman2 bisa menggunakan query berikut :
insert into login values(
    '',
    'M3111108',
    'bismillah',
    'mahasiswa-1234',
    'mahasiswa647236283234bfbjed23',
    'Mahasiswa'
);
Jika sudah, silahkan temen2 login menggunakan user tersebut. Dan dicoba mengakses "localhost/yii2basic/web/index.php?r=mahasiswa". User tersebut masih bisa membuka halaman tersebutkan.
Sekarang tujuan kita adalah memfilter hanya user dengan role Admin yang bisa mengakses seluruh halaman mahasiswa. Langsung saja teman2 buka file MahasiswaController dan rubah function behavior sebagai berikut :
namespace app\controllers;

use Yii;
use app\models\Mahasiswa;
use app\models\MahasiswaSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;

class MahasiswaController extends Controller
{
    public function behaviors()
    {
        return [
            'access'=>[
                'class'=>AccessControl::className(),
                'rules'=>[
                    [
                        'actions'=>[
                            'index',
                            'create',
                            'update',
                            'delete',
                            'view'
                        ],
                        'allow'=>true,
                        'matchCallback'=>function(){
                            return (
                                Yii::$app->user->identity->role=='Admin'
                            );
                        }
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['post'],
                ],
            ],
        ];
    }

Untuk action-action dibawahnya tidak perlu dirubah.
Sekarang teman2 coba mengakses halaman tadi dengan user yang sama pasti sudah tidak diijinkan mengakses halaman tersebut.

Kemudian temen2 mengakses halaman tersebut dengan menggunakan user yang mempunya role Admin.

Nah bisakan. Sangat mudah teman2 untuk memfilter actions menggunakan ACF. Jadi hanya user yang mempunyai role Admin saja yang bisa mengakses halaman tersebut. Sekian tutorial Access Control Filter Yii2. Semoga bermanfaat buat teman2. Matur suwun dan sampai berjumpa kembali...:D

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

About Me

mumunotesss
View my complete profile

Popular Posts

  • Change password with validation and repeat password on Yii2
    Hello everybody. I could not post an article because I didn't have new knowledge to share. Ok, this day I will share about "...
  • Import Data from CSV File to Database Without Extension in Yii2
    Hello everybody, Assalamualaikum Wr. Wb. Nearly 1 month I don't publish article. Now, I publish an article about " Import Data fro...
  • Membuat login Yii2 dengan Database
    Selamat pagi guys. Sorry beberapa hari kamaren sibuk. Jadi belum sempet update blog lagi. Mumpung kali ini sempet, hari ini mau berbagi te...
  • Membuat fungsi CRUD dengan Gii Yii2
    Selamat pagi guys. Setelah kemaren kita membuat login dari database, hari ini kita akan membuat CRUD (create, read, update, delete) dengan ...

Blog Archive

  • ▼  2015 (16)
    • ►  November (1)
    • ►  September (1)
    • ►  August (1)
    • ▼  June (8)
      • Upload File or Image on Yii2
      • Implementation google reCAPTCHA on Yii2 Applicati...
      • Implementation Captcha on Yii2
      • Change password with validation and repeat passwor...
      • Membuat Alert atau Notifikasi di Yii2
      • ACF (Access Control Filter) Yii2 dengan Role dari ...
      • Membuat fungsi CRUD dengan Gii Yii2
      • Membuat login Yii2 dengan Database
    • ►  May (5)

Translate

Copyright © mumunotes
Distributed By My Blogger Themes | Blogger Theme By NewBloggerThemes