Selasa, 19 Juli 2016
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 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
- Pastikan Yii2 sudah terinstall dan terkonfigurasi dengan benar.
- Install melalui composer "amnah/yii2-user": "^5.0"
- 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 ... ], ], ];
- Update file config config/db.php :
// app/config/db.php return [ 'class' => 'yii\db\Connection', // set up db info ];
- Jalankan migrasi :
php yii migrate --migrationPath=@vendor/amnah/yii2-user/migrations
- Buka aplikasi anda di :
http://localhost/aplikasiyii2/web/user
- Login dengan username : neo password : neo.
- 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.
loading...
Langganan:
Posting Komentar
(
Atom
)
Popular Posts
-
Secara default, Yii2 dibekali oleh template Bootstrap 3. Namun kita juga bisa menambahkan template lain yang lebih baik, seperti misalnya ...
-
Pada tutorial ini, saya akan membahas bagaimana cara membuat aplikasi CRUD (Create Read Update Delete) database secara otomatis dengan mengg...
-
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
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.
BalasHapusTerimakasih
Kalau mas pakai template basic, file web.php ada di folder config.
HapusTapi kalau pakai template advanced, konfigurasinya ada di backend/config/main.php mas.
Mungkin template yg mas pakai itu template advanced.
Sekedar info tambahan, khusus template advanced, ada 3 file konfigurasi:
Hapusbackend/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.
Oke mas, terimakasih :)
Hapussaya mendapatkan error mas seperti ini :
HapusPHP Fatal Error – yii\base\ErrorException
Undefined class constant 'STATUS_INACTIVE'
Maaf, saya kurang paham. Bisa lebih detail?
HapusWaktu mengakses alamat apa itu mas?
Dan apa saja yg sudah mas lakukan?
Klo kasusnya seperti ini mas:
BalasHapusOperator 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?
Komentar ini telah dihapus oleh pengarang.
BalasHapussaya kok muncul Calling unknown method: app\models\User::updateLoginMeta() setelah login ya
BalasHapusMas, 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.
BalasHapusada configurasi tambahan kah atau bgmn?
mas bisa minta kontaknya?
BalasHapus