Membuat Authorized Menu
1. Mendefinisikan Permission
app\Enums\Permission.php
final class Permission extends Enum
{
const DASHBOARD_VIEW = 'dashboard.view';
}
Setelah itu, jangan lupa jalankan command berikut:
php artisan laravolt:sync-permission
Baca juga dokumentasi lengkap ACL.
2. Menghubungkan Menu dan Permission
config/laravolt/menu/app.php
return [
'App' => [
'menu' => [
'Dashboard' => [
'route' => ['dashboard'],
'active' => 'dashboard/*',
'icon' => 'chart-bar',
'permissions' => [\App\Enum\Permissions::DASHBOARD_VIEW],
],
],
],
];
Saat ini permissions di menu hanya berfungsi untuk show/hide menu, sehingga URL masih bisa diakses dengan mengetik langsung di browser. Oleh sebab itu butuh step ketiga di bawah ini.
3. Tambahkan Pengecekan Hak Akses (Authorization) di Kode
Pengecekan hak akses di routes:
routes/web.php
Route::get('dashboard', function () {
// show dashboard
})->can(\App\Enum\Permissions::DASHBOARD_VIEW);
Atau juga bisa di Controller:
public function index()
{
$this->authorize(\App\Enum\Permissions::DASHBOARD_VIEW);
// if passed, show dashboard
}
Dokumentasi lengkap terkait authorization di Laravel bisa dibaca di dokumentasi resminya.
4. Pengaturan Role di Level Aplikasi
Setelah Permission terdefinisi, Administrator aplikasi bisa melakukan pengaturan Role mana saja yang berhak memiliki permission tersebut melalui menu "System -> Roles".
Karena Role bersifat dinamis, maka jika suatu ketika ada perubahan aturan hak akses, Administrator bisa melakukannya secara mandiri tanpa perlu meminta Programmer untuk mengubah kodingan.