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

78 lines
3.2 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use Backpack\PermissionManager\app\Http\Controllers\UserCrudController as OrgController;
/**
* Class UserCrudController
* @package App\Http\Controllers\Admin
* @property-read \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $crud
*/
class UserCrudController extends OrgController
{
public function setupListOperation()
{
$this->crud->addColumns([
[
'name' => 'name',
'label' => trans('backpack::permissionmanager.name'),
'type' => 'text',
],
[
'name' => 'email',
'label' => trans('backpack::permissionmanager.email'),
'type' => 'email',
],
[ // n-n relationship (with pivot table)
'label' => trans('backpack::permissionmanager.roles'), // Table column heading
'type' => 'select_multiple',
'name' => 'roles', // the method that defines the relationship in your Model
'entity' => 'roles', // the method that defines the relationship in your Model
'attribute' => 'name', // foreign key attribute that is shown to user
'model' => config('permission.models.role'), // foreign key model
],
[ // n-n relationship (with pivot table)
'label' => trans('backpack::permissionmanager.extra_permissions'), // Table column heading
'type' => 'select_multiple',
'name' => 'permissions', // the method that defines the relationship in your Model
'entity' => 'permissions', // the method that defines the relationship in your Model
'attribute' => 'name', // foreign key attribute that is shown to user
'model' => config('permission.models.permission'), // foreign key model
],
]);
if (backpack_pro()) {
// Role Filter
$this->crud->addFilter(
[
'name' => 'role',
'type' => 'dropdown',
'label' => trans('backpack::permissionmanager.role'),
],
config('permission.models.role')::all()->pluck('name', 'id')->toArray(),
function ($value) { // if the filter is active
$this->crud->addClause('whereHas', 'roles', function ($query) use ($value) {
$query->where('role_id', '=', $value);
});
}
);
// Extra Permission Filter
$this->crud->addFilter(
[
'name' => 'permissions',
'type' => 'select2',
'label' => trans('backpack::permissionmanager.extra_permissions'),
],
config('permission.models.permission')::all()->pluck('name', 'id')->toArray(),
function ($value) { // if the filter is active
$this->crud->addClause('whereHas', 'permissions', function ($query) use ($value) {
$query->where('permission_id', '=', $value);
});
}
);
}
}
}