Tags
Lanjutan dari tulisan sebelumnya tutorial penggunaan yii2-admin.
Instalasi
Cara install yang paling mudah tentunya denga composer.
composer require mdmsoft/yii2-admin "~2.0"
Atau tambahkan di bagian require
di file composer.json
"mdmsoft/yii2-admin": "~2.0"
Lalu kemudian lakukan composer update
. Cara lainnya -walau sangat tidak disarankan- adalah dengan mengunduh source-nya di sini. Setelah download, extrak filenya ke sebarang tempat lalu tambahkan alias di config aplikasi.
'aliases' => [ ... '@mdm/admin' => 'path/to/extrak/dir' ],
Konfigurasi
Untuk penggunaan paling umum, konfigurasi yang harus ditambahkan cukup simpel saja.
return [ 'modules' => [ 'admin' => [ 'class' => 'mdm\admin\Module', ... ] ... ], ... 'components' => [ ... 'authManager' => [ 'class' => 'yii\rbac\PhpManager', // or use 'yii\rbac\DbManager' ] ], 'as access' => [ 'class' => 'mdm\admin\components\AccessControl', 'allowActions' => [ 'site/*', // tambahkan action-action yg lain di sini ] ], ];
Konfigurasi di atas umumnya sudah mencukupi untuk kebutuhan dasar. Untuk pengaturan menu, pengaturan layout dan lain-lain, silakan selengkapnya baca di sini.
Jika menggunakan authManager
database, jangan lupa untuk melakukan migrate
. Pertama-tama, ubah dulu class
untuk authManager
menjadi ‘yii\rbac\DbManager’, setelah itu jalankan di terminal
php yii migrate -p=@yii/rbac/migrations
Ada kalanya kita ingin menyimpan rbac di database yang berbeda dengan database utama. Maka kita perlu untuk menset property db
dari authManager
.
'authManager' => [ 'class' => 'yii\rbac\DbManager', 'db' => ['dsn' => 'sqlite:@runtime/rbac.sqlite'], // menyimpan di sqlite ]
Menggunakan Menu
manager.
Salah satu fitur yang ditambahkan oleh yii2-admin
adalah menu manager. Fitur ini digunakan untuk menggenerate menu sesuai dengan hak akses user yang nantinya akan dipakai di Nav
widget. Untuk mengaktifkan fitu ini, maka kita harus menggenerate tabelnya lebih dahulu.
php yii migrate -p=@mdm/admin/migrations
Kodenya di layout/main.php
use mdm\admin\components\MenuHelper; use yii\bootstrap\Nav; echo Nav::widget([ 'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id) ]);
User Management
Untuk yang menggunakan template yii2-app-advanced
, fitur ini mungkin tidak terlalu berguna karena secara default template advanced sudah menyimpan data user ke database. Tetapi untuk pengguna template basic
, fitur user management yii2-admin
bisa jadi alternatif yang menarik. Untuk mengaktifkannya, kita hanya perlu melakukan migrate
php yii migrate -p=@mdm/admin/migrations
Menu yang ada di user management adalah, signup
, login
, reset password
dan change password
.
Fitur ini baru ditambahkan di versi 2.4.
Fitur Baru Yang Lain
Tambahan lainnya di versi 2.4 (dev-master) adalah Helper::checkRoute()
dan Helper::filterActionColumn()
. Fungsi Helper::checkRoute()
digunakan untuk mengecek hak akses user terhadap suatu route. Penggunaannya dalam kode
use mdm\admin\components\Helper; if(Helper::checkRoute('delete')){ echo Html::a(Yii::t('rbac-admin', 'Delete'), ['delete', 'id' => $model->name], [ 'class' => 'btn btn-danger', 'data-confirm' => Yii::t('rbac-admin', 'Are you sure to delete this item?'), 'data-method' => 'post', ]); }
Kode di atas, jika user punya akses terhadap action delete
, maka tampilkan tombol Delete
.
Sedangkan fungsi Helper::filterActionColumn()
digunakan untuk menfilter button yang ada muncul di grid view sesuai denga hak akses user.
use mdm\admin\components\Helper; 'columns' => [ ... [ 'class' => 'yii\grid\ActionColumn', 'template' => Helper::filterActionColumn('{view}{delete}{posting}'), ] ]
iliyan said:
If you can’t migrate RBAC that because you have to use lowercase letters:
‘authManager’ => [
‘class’ => ‘yii\rbac\DbManager’ ,
],
LikeLike
Misbahul D Munir said:
What is this? asking or what?
LikeLike
Elkin Primartha Khunsu said:
model ini bisa ga dipake di tutorial authentication restful web service yg diajarin om hafids?
LikeLike
Misbahul D Munir said:
bisa
LikeLike
Elkin Primartha Khunsu said:
harus dimodifikasi atau diapain om? kasih clue nya om,. 😀
LikeLike
Misbahul D Munir said:
gak ada yg perlu dimodif. tinggal pake aja
LikeLike
budisatriadi9002 said:
om kalo menyimpan konfigurasinya dimana?
maaf om saya masih pemula
LikeLike
Novianto said:
mau tanya pak. tadi saya nyoba filter menu pake Helper::filter, nah masalahnya untuk menu yang ada parameternya kog gak bisa jalan yang pak ?
LikeLike
Misbahul D Munir said:
contohnya seperti apa? trus “gak bisa jalannya” seperti apa?
LikeLike
Novianto said:
kan saya punya menu yang urlnya seperti ini pak -> ‘/user-detail/update?id=’.Yii::$app->session->get(‘setting.user’) terus saya bikin role user unit yang punya permission untuk akses route ‘/user-detail/update’. tp pas saya filter pake Helper::filter menunya gak mau keluar. padahal kalo direct url bisa
LikeLike
Misbahul D Munir said:
bagaimana caramu menuliskannya di menu/widget?
LikeLike
Novianto said:
seperti ini pak => http://pastebin.com/xKvFbzrH
LikeLike
Misbahul D Munir said:
Nah, harusnya menuliskannya
http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#creating-urls
LikeLike
Novianto said:
oke pak. sudah bisa. maaf baru belajar yii.
LikeLike
ariyadi said:
untuk konfigurasi nya di mana gan di common/config/main.php atau backend dan frontend config\main.php
LikeLike
Misbahul D Munir said:
tergantung kebutuhanmu di mana.
LikeLike
Huda said:
Om, mau nanya.
Kalo ane pake AdminLTE kira2 ada konfigurasi khusus apa tidak ?
Soalnya pas tak pasang menunya pake MenuHelper::getAssignedMenu(Yii::$app->user->id) ndak bisa sesuai kayak menu aslinya adminLTE.
LikeLike
Misbahul D Munir said:
MenuHelper::getAssignedMenu()
hanya meng-generate menu items (datanya). Sedangkan untuk menampilkannya perlu widget tersendiri (bukan bagian dari yii2-admin).Silakan cari widget NavBar khusus untuk adminlte
LikeLike
virbo said:
mohon petunjuknya bagaimana caranya mengambil role name dari setiap user
LikeLike
virbo said:
oh iya kelupaan, saya melakukannya seperti ini http://pastebin.com/uA0hamA7
adakah cara yang lebih simpel yang tanpa menggunakan foreach??
mohon petunjuknya…
LikeLike
andi said:
kenapa saya telah menambahkan permission tidak ada perubahan sma sekali semia tetap bisa di akses
LikeLike
Wilson said:
bagaimana implement rbac jika saya punya sistem seperti ini
invoice dengan permission (open, new, edit, delete)
contoh routingnya : invoice/index, invoice/create, invoice/update dan invoice/delete
bagaimana cara implementasinya? terima kasih
LikeLike