• Disclaimer
  • Privacy Policy
  • ToS
Tutorial Yii2 Framework Bahasa Indonesia
  • Home
  • Panduan Yii2
    • Apa itu Yii
    • Memulai Yii2
    • Struktur Aplikasi
    • Konsep Dasar Yii2
    • Database
    • Input Data
    • Menampilkan Data
    • Keamanan
    • Caching
  • Panduan Lanjutan Yii2
    • RESTful API
    • Development Tools
    • Testing
    • Widgets
    • Helpers
  • Tutorial
  • FAQ
  • Asudahlah.com

Selasa, 19 Juli 2016

Konfigurasi RBAC Yii2 sederhana dan mudah dengan amnah/yii2-user

Diposting oleh gema di 02.08 Label: Tutorial Yii2
RBAC (Role-Based Access Control) adalah konsep Access Control di Yii2 yang memisahkan hak akses user berdasarkan role atau peran. Yii2 sendiri sudah dibekali fitur RBAC yang bisa kita aktifkan apabila memerlukannya. Baik itu menggunakan PHP Manager maupun DB Manager.

Fitur RBAC bawaan Yii2 tergolong kompleks atau rumit. Karena memang fitur ini dipersiapkan untuk mendukung pembuatan aplikasi yang kompleks. Namun pada prakteknya, sering-kali kita hanya memerlukan sebagian kecil dari keseluruhan fitur yang diberikan.

Sudah ada banyak plugin module yang dibuat untuk menangani dan me-manage RBAC yang dapat anda pakai dalam aplikasi anda, dan masing-masing memiliki kelebihan dan kekurangan. amnah/yii2-user adalah salah satunya. Module ini adalah module yg saya rasa mudah untuk digunakan oleh pemula.

Fitur yang ditawarkan:
  • Setup cepat.
  • Extendable
  • Pendaftaran user menggunakan email dan/atau username
  • Login dengan email dan/atau username
  • Login/register via email (masukkan email > dapatkan link> klik link untuk login/register)
  • Email confirmation (+ fungsi resend)
  • Social authentication (facebook, twitter, google, linkedin, reddit, vkontakte)
  • Account page
    • Updates email, username, and password
    • Membutuhkan password saat ini
  • Profile page
    • custom field untuk users, misalnya full_name
  • Password recovery
  • Admin crud via GridView

Instalasi modul RBAC amnah/yii2-user

  1. Pastikan Yii2 sudah terinstall dan terkonfigurasi dengan benar.
  2. Install melalui composer "amnah/yii2-user": "^5.0"
  3. Update config file config/web.php :
    return [
        'components' => [
            // NOTE: in the yii2-advanced-app, the user component should be updated in
            // 'frontend/config/main.php' and/or 'backend/config/main.php' (OR you can add it
            // to 'common/config' if you remove it from frontend/backend)
            'user' => [
                'class' => 'amnah\yii2\user\components\User',
            ],
            'mailer' => [
                'class' => 'yii\swiftmailer\Mailer',
                'useFileTransport' => true,
                'messageConfig' => [
                    'from' => ['admin@website.com' => 'Admin'], // this is needed for sending emails
                    'charset' => 'UTF-8',
                ]
            ],
        ],
        'modules' => [
            'user' => [
                'class' => 'amnah\yii2\user\Module',
                // set custom module properties here ...
            ],
        ],
    ];
  4. Update file config config/db.php :
    // app/config/db.php
    return [
        'class' => 'yii\db\Connection',
        // set up db info
    ];
    
  5. Jalankan migrasi : php yii migrate --migrationPath=@vendor/amnah/yii2-user/migrations
  6. Buka aplikasi anda di : http://localhost/aplikasiyii2/web/user 
  7. Login dengan username : neo password : neo.
  8. Sekarang anda bisa me-manage akun, profile, dan role melalui interface web.

Petunjuk singkat cara menggunakan fitur-fitur modul amnah/yii2-user

Untuk mengecek hak akses, anda bisa memanggil Yii::$app->user->can("admin") dimana "admin" adalah hak akses yang hendak di cek. Apabila user yang sedang login memiliki hak akses "admin", maka fungsi diatas bernilai true dan sebaliknya.
Contohnya:
if (!Yii::$app->user->can("admin")) {
    throw new HttpException(403, 'Maaf, anda tidak mempunyai hak untuk mengakses halaman ini.');
}

Secara default, hak akses hanya terdiri dari "admin" saja. Selain itu maka hak akses dianggap user biasa, atau guest jika tanpa login.

Menambahkan hak akses baru

Hak akses diwakili oleh kolom/field ber-prefix "can_" pada tabel "role" di database. Silahkan anda buka struktur tabel role melalui phpmyadmin atau mysqlworkbench. Maka anda akan melihat ada field yang bernama can_admin. Nah, nilai integer pada kolom itulah yang menentukan apakah peran/role yg bersangkutan memiliki hak akses "admin". Jika bernilai 1, maka peran/role tersebut memiliki hak akses "admin", jika bernilai 0 maka tidak.

Sebagai contoh, misalnya anda membuat sebuah aplikasi inventory, maka secara sederhana kategori akses dapat dibagi menjadi : input data, maintenance data, rekap data.
Maka dalam table role dapat anda tambahkan field : can_input, can_maintenance, can_rekap.
Kemudian tambahkan role dengan nama "kasir" dan field can_admin, can_input, can_maintenance, can_rekap masing-masing bernilai 0,1,0,0.

Dalam contoh diatas, artinya role kasir hanya memiliki hak untuk input data. Setelah role berhasil dibuat, anda tinggal meng-assign role tersebut pada user melalui user administration (http://localhost/aplikasiyii2/web/user).

Dan pada aplikasi anda, anda bisa menggunakan Yii::$app->user->can("input") untuk memeriksa apakah user memiliki hak akses input.
Tweet
loading...
  • Komentar Blogger 11
  • Komentar Facebook

11 komentar :

  1. Unknown3 Agustus 2016 pukul 02.41

    Terimakasih atas tutorialnya mas, tapi saya tidak menemukan file web.php di yii saya, atau mungkin namanya bukan web.php. bagaimana yah mas penyelesaiannya? saya baru di yii ini.
    Terimakasih

    BalasHapus
    Balasan
    1. gema3 Agustus 2016 pukul 02.52

      Kalau mas pakai template basic, file web.php ada di folder config.
      Tapi kalau pakai template advanced, konfigurasinya ada di backend/config/main.php mas.

      Mungkin template yg mas pakai itu template advanced.

      Hapus
      Balasan
        Balas
    2. gema3 Agustus 2016 pukul 03.04

      Sekedar info tambahan, khusus template advanced, ada 3 file konfigurasi:
      backend/config/main.php --- Berlaku untuk aplikasi back-end
      frontend/config/main.php --- Berlaku untuk aplikasi front-end
      common/config/main.php --- Berlaku untuk aplikasi back-end dan front-end.


      Hapus
      Balasan
        Balas
    3. Unknown3 Agustus 2016 pukul 22.33

      Oke mas, terimakasih :)

      Hapus
      Balasan
        Balas
    4. Unknown3 Agustus 2016 pukul 23.04

      saya mendapatkan error mas seperti ini :

      PHP Fatal Error – yii\base\ErrorException

      Undefined class constant 'STATUS_INACTIVE'

      Hapus
      Balasan
        Balas
    5. gema3 Agustus 2016 pukul 23.42

      Maaf, saya kurang paham. Bisa lebih detail?
      Waktu mengakses alamat apa itu mas?
      Dan apa saja yg sudah mas lakukan?

      Hapus
      Balasan
        Balas
    6. Balas
  2. Unknown6 Oktober 2016 pukul 05.33

    Klo kasusnya seperti ini mas:

    Operator hanya dpt melihat data yg dia post sendiri, Manager dpt melihat data dia sendiri dan data dari operator dibawahnya (data dari operator dibawah manager lain, tidak dapat dia lihat), Admin dapat melihat semua data yang ada dibawahnya. Klo makai RBAC gimana mas?

    BalasHapus
    Balasan
      Balas
  3. Novra17 Oktober 2016 pukul 20.16

    Komentar ini telah dihapus oleh pengarang.

    BalasHapus
    Balasan
      Balas
  4. Novra17 Oktober 2016 pukul 22.11

    saya kok muncul Calling unknown method: app\models\User::updateLoginMeta() setelah login ya

    BalasHapus
    Balasan
      Balas
  5. Unknown8 Maret 2017 pukul 01.20

    Mas, sy sudah berhasil instaling amnah/yii2-user.. berhasil login jg dengan akun : neo pass: neo. tp kok g bisa akses halaman "app/user/profile", "app/user/account", dll. pokoknya sy mau management user nya, tp kok g bisa.

    ada configurasi tambahan kah atau bgmn?

    BalasHapus
    Balasan
      Balas
  6. dian firmansyah23 Agustus 2021 pukul 19.26

    mas bisa minta kontaknya?

    BalasHapus
    Balasan
      Balas
Tambahkan komentar
Muat yang lain...

Posting Lama Beranda
Langganan: Posting Komentar ( Atom )

Recently Solved Problems

Links

Yii2 Git Repository Yii2 Official Website

Facebook page

Labels

  • Memulai Yii2
  • Model
  • Panduan Yii2
  • Struktur Aplikasi Yii2
  • Tips Yii2
  • Troubleshooting
  • Tutorial Yii2

Popular Posts

  • Instalasi Template AdminLTE di Yii2 menggunakan composer
    Secara default, Yii2 dibekali oleh template Bootstrap 3. Namun kita juga bisa menambahkan template lain yang lebih baik, seperti misalnya ...
  • Buat aplikasi CRUD Yii2 secara otomatis dengan Gii
    Pada tutorial ini, saya akan membahas bagaimana cara membuat aplikasi CRUD (Create Read Update Delete) database secara otomatis dengan mengg...
  • Konfigurasi RBAC Yii2 sederhana dan mudah dengan amnah/yii2-user
    RBAC (Role-Based Access Control) adalah konsep Access Control di Yii2 yang memisahkan hak akses user berdasarkan role atau peran. Yii2 sen...

© Asudahlah.com 2016 . Powered by Twitter Bootstrap , Blogger