59 lines
1.4 KiB
PHP
Raw Normal View History

2022-12-05 23:01:12 +08:00
<?php
2022-12-06 19:27:38 +08:00
2022-12-05 23:01:12 +08:00
declare(strict_types=1);
namespace Modules\Permissions\Http\Controllers;
use Catch\Base\CatchController as Controller;
2022-12-23 19:47:13 +08:00
use Catch\Exceptions\FailedException;
use Modules\Permissions\Models\Roles;
2022-12-05 23:01:12 +08:00
use Modules\Permissions\Http\Requests\RoleRequest;
class RolesController extends Controller
{
public function __construct(
2022-12-23 19:47:13 +08:00
protected readonly Roles $model
2022-12-06 19:27:38 +08:00
) {
}
2022-12-05 23:01:12 +08:00
/**
* @return mixed
*/
public function index(): mixed
{
2022-12-23 19:47:13 +08:00
return $this->model->setBeforeGetList(function ($query) {
return $query->with(['permissions' => function ($query) {
$query->select('id');
}])->dataRange();
2022-12-16 18:30:36 +08:00
})->getList();
2022-12-05 23:01:12 +08:00
}
public function store(RoleRequest $request)
{
return $this->model->storeBy($request->all());
}
public function show($id)
{
2022-12-16 18:30:36 +08:00
$role = $this->model->firstBy($id);
$role->setAttribute('permissions', $role->permissions()->get()->toTree());
return $role;
2022-12-05 23:01:12 +08:00
}
public function update($id, RoleRequest $request)
{
return $this->model->updateBy($id, $request->all());
}
public function destroy($id)
{
2022-12-23 19:47:13 +08:00
if ($this->model->where($this->model->getParentIdColumn(), $id)->first()) {
throw new FailedException('请先删除子级');
}
2022-12-05 23:01:12 +08:00
return $this->model->deleteBy($id);
}
}