'*', 'staff' => '*', 'category' => '*', 'custom-field' => '*', 'advertisement' => [ 'only' => ['list', 'update'] ], 'advertisement-listing-package' => '*', 'featured-advertisement-package' => '*', 'user-package' => [ 'only' => ['list'] ], 'payment-transactions' => [ 'only' => ['list'] ], 'slider' => [ 'only' => ['create', 'delete', 'list'] ], 'feature-section' => '*', 'report-reason' => '*', 'user-reports' => [ 'only' => ['list'] ], 'notification' => '*', 'customer' => [ 'only' => ['list', 'update'] ], 'settings' => [ 'only' => ['update'] ], 'tip' => '*', 'blog' => '*', 'currency' => '*', 'country' => '*', 'state' => '*', 'city' => '*', 'area' => '*', 'faq' => '*', 'seller-verification-field' => '*', 'seller-verification-request' => [ 'only' => ['list', 'update'] ], 'seller-review' => '*', 'user-queries' => [ 'only' => ['list'] ], ]; $permissionsList = self::generatePermissionList($permissionsList); $permissions = array_map(static function ($data) { return [ 'name' => $data, 'guard_name' => 'web' ]; }, $permissionsList); Permission::upsert($permissions, ['name'], ['name']); // Role::updateOrCreate(['name' => 'Super Admin']); // $superAdminHasAccessTo = [ // 'role-list', // 'role-create', // 'role-update', // 'role-delete', // ]; // $role->syncPermissions($superAdminHasAccessTo); /*Create Settings which are new & ignore the old values*/ Setting::insertOrIgnore(DefaultSettingService::get()); } /** * @param array { *
* permission_name :array array {
* * : string // List , Create , Edit , Delete
* only : string // List , Create , Edit , Delete
* custom: array { // custom permissions will be prefixed with permission_name eg. permission_name-permission1
* permission1: string,
* permission2: string,
* }
* }
* } $permission
* @return array
*/
public static function generatePermissionList($permissions)
{
$permissionList = [];
foreach ($permissions as $name => $permission) {
$defaultPermission = [
$name . "-list",
$name . "-create",
$name . "-update",
$name . "-delete"
];
if (is_array($permission)) {
// * OR only param either is required
if (in_array("*", $permission, true)) {
$permissionList = array_merge($permissionList ?? [], $defaultPermission);
} else if (array_key_exists("only", $permission)) {
foreach ($permission["only"] as $row) {
$permissionList[] = $name . "-" . strtolower($row);
}
}
if (array_key_exists("custom", $permission)) {
foreach ($permission["custom"] as $customPermission) {
$permissionList[] = $name . "-" . $customPermission;
}
}
} else {
$permissionList = array_merge($permissionList ?? [], $defaultPermission);
}
}
return $permissionList;
}
}