PermissionsController.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. declare(strict_types=1);
  3. namespace Modules\Permissions\Http\Controllers;
  4. use Catch\Base\CatchController as Controller;
  5. use Catch\Exceptions\FailedException;
  6. use Illuminate\Database\Eloquent\Model;
  7. use Illuminate\Http\Request;
  8. use Modules\Permissions\Enums\MenuType;
  9. use Modules\Permissions\Models\Permissions;
  10. class PermissionsController extends Controller
  11. {
  12. /**
  13. * @param Permissions $model
  14. */
  15. public function __construct(
  16. protected readonly Permissions $model
  17. ) {
  18. }
  19. /**
  20. * @param Request $request
  21. * @return mixed
  22. */
  23. public function index(Request $request): mixed
  24. {
  25. if ($request->get('from') == 'role') {
  26. return $this->model->getList();
  27. }
  28. return $this->model->setBeforeGetList(function ($query) {
  29. return $query->with('actions')->whereIn('type', [MenuType::Top->value(), MenuType::Menu->value()]);
  30. })->getList();
  31. }
  32. /**
  33. *
  34. * @param Request $request
  35. * @return bool
  36. * @throws \ReflectionException
  37. */
  38. public function store(Request $request): bool
  39. {
  40. return $this->model->storeBy($request->all());
  41. }
  42. /**
  43. *
  44. * @param $id
  45. * @return Model|null
  46. */
  47. public function show($id): ?Model
  48. {
  49. return $this->model->firstBy($id);
  50. }
  51. /**
  52. *
  53. * @param $id
  54. * @param Request $request
  55. * @return mixed
  56. */
  57. public function update($id, Request $request): mixed
  58. {
  59. return $this->model->updateBy($id, $request->all());
  60. }
  61. /**
  62. *
  63. * @param $id
  64. * @return bool|null
  65. */
  66. public function destroy($id): ?bool
  67. {
  68. if ($this->model->where($this->model->getParentIdColumn(), $id)->first()) {
  69. throw new FailedException('无法进行删除,请先删除子级');
  70. }
  71. return $this->model->deleteBy($id);
  72. }
  73. /**
  74. * enable
  75. *
  76. * @param $id
  77. * @return bool
  78. */
  79. public function enable($id): bool
  80. {
  81. return $this->model->toggleBy($id, 'hidden');
  82. }
  83. }