Files
coreality-inc/app/Http/Controllers/Admin/RoleCrudController.php
2024-03-13 10:43:39 +08:00

86 lines
2.4 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use Backpack\PermissionManager\app\Http\Controllers\RoleCrudController as OrgController;
use Backpack\PermissionManager\app\Http\Requests\RoleStoreCrudRequest as StoreRequest;
use Backpack\PermissionManager\app\Http\Requests\RoleUpdateCrudRequest as UpdateRequest;
/**
* Class RoleCrudController
* @package App\Http\Controllers\Admin
* @property-read \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $crud
*/
class RoleCrudController extends OrgController
{
public function setupCreateOperation()
{
$this->addFields();
$this->crud->setValidation(StoreRequest::class);
//otherwise, changes won't have effect
\Cache::forget('spatie.permission.cache');
}
public function setupUpdateOperation()
{
$this->addFields();
$this->crud->setValidation(UpdateRequest::class);
//otherwise, changes won't have effect
\Cache::forget('spatie.permission.cache');
}
private function addFields()
{
$this->crud->addField([
'name' => 'slug',
'label' => 'Slug',
'type' => 'text',
]);
$this->crud->addField([
'name' => 'name',
'label' => trans('backpack::permissionmanager.name'),
'type' => 'text',
]);
if (config('backpack.permissionmanager.multiple_guards')) {
$this->crud->addField([
'name' => 'guard_name',
'label' => trans('backpack::permissionmanager.guard_type'),
'type' => 'select_from_array',
'options' => $this->getGuardTypes(),
]);
}
$this->crud->addField([
'label' => mb_ucfirst(trans('backpack::permissionmanager.permission_plural')),
'type' => 'checklist',
'name' => 'permissions',
'entity' => 'permissions',
'attribute' => 'name',
'model' => $this->permission_model,
'pivot' => true,
]);
}
/*
* Get an array list of all available guard types
* that have been defined in app/config/auth.php
*
* @return array
**/
private function getGuardTypes()
{
$guards = config('auth.guards');
$returnable = [];
foreach ($guards as $key => $details) {
$returnable[$key] = $key;
}
return $returnable;
}
}