Pada artikel kali ini kita akan membuat sebuah utlis , yang kita gunakan sebagai pembatasan akses sesuai dengan roles & permissions yang dimiliki oleh user.
Silahkan teman - teman buat file baru dengan nama Permissions.jsx , tapi sebelumnya silahkan teman - teman buat folder baru dengan nama Utils yang kita letakan di app/Resources/Js, setelah itu masukan kode berikut ini.
import { usePage } from "@inertiajs/react";
export default function hasAnyPermission(permissions){
// destruct auth from usepage props
const { auth } = usePage().props
// get all permissions from props auth
let allPermissions = auth.permissions;
// get super-admin role from props auth
let superAdmin = auth.super;
// define has permission is false
let hasPermission = false;
// loop permissions
permissions.forEach(function(item){
// do it if permission is match with key
if(allPermissions[item])
// assign hasPermission to true
hasPermission = true;
});
// do it when super admin true
if(superAdmin)
// return true;
return true;
else
// return has permissions
return hasPermission;
}
Pada kode diatas pertama kita import usePage dari Inertia.
import { usePage } from "@inertiajs/react";
Selanjutnya kita membuat sebuah React Functional Component dengan nama hasAnyPermissions pada react functional component tersebut kita juga mendefinisikan sebuah props permissions.
export default function hasAnyPermission(permissions)
Berikutnya kita melakukan destructing sebuah props auth yang kita dapatkan dari share data global yang telah kita definisikan sebelumnya,
const { auth } = usePage().props
Selanjutnya kita mendefinisikan sebuah variabel baru dengan nama allPermissions, yang berisi data permissions yang diambil dari props auth.permissions.
let allPermissions = auth.permissions;
Kemudian kita juga mendefinisikan sebuah variabel baru dengan nama superAdmin, yang berisi data role yang diambil dari props auth.super.
let superAdmin = auth.super;
Kemudian kita juga mendefinisikan sebuah variabel baru dengan nama hasPermission yang kita set nilai default-nya false.
let hasPermission = false;
Berikutnya kita lakukan looping data permissions yang kita terima dari props, jika data ditemukan maka kita set hasPermissions dengan true.
permissions.forEach(function(item){
if(allPermissions[item])
hasPermission = true;
});
Yang Terakhir kita lakukan pengecekan variabel superAdmin jika ada maka kita akan mengembalikan true jika tidak maka kita akan kembalikan sebuah hasil dari pengecekan permissions.
if(superAdmin)
return true;
else
return hasPermission;