diff --git a/app/Components/Permission/Form.php b/app/Components/Permission/Form.php deleted file mode 100644 index 4888796..0000000 --- a/app/Components/Permission/Form.php +++ /dev/null @@ -1,44 +0,0 @@ - 'required|string|unique:permissions,name' . - ($this->permissionId ? ",{$this->permissionId}" : ''), - ]; - } - - public function mount($permissionId = null) - { - $this->permissionId = $permissionId; - if ($permissionId) { - $perm = Permission::findOrFail($permissionId); - $this->name = $perm->name; - } - } - - public function save() - { - $this->validate(); - Permission::updateOrCreate( - ['id' => $this->permissionId], - ['name' => $this->name] - ); - session()->flash('message', 'Permission saved.'); - $this->emitUp('permissionSaved'); - } - - public function render() - { - return view('components.permission.form'); - } -} diff --git a/app/Components/Permission/Index.php b/app/Components/Permission/Index.php deleted file mode 100644 index 6f3f27a..0000000 --- a/app/Components/Permission/Index.php +++ /dev/null @@ -1,31 +0,0 @@ - '$refresh']; - - public function updatingSearch() { $this->resetPage(); } - - public function delete($id) - { - Permission::findOrFail($id)->delete(); - session()->flash('message', 'Permission deleted.'); - } - - public function render() - { - $permissions = Permission::where('name', 'like', "%{$this->search}%") - ->orderByDesc('id') - ->paginate(10); - - return view('components.permission.index', compact('permissions')); - } -} diff --git a/app/Components/Permission/Manager.php b/app/Components/Permission/Manager.php new file mode 100644 index 0000000..9f70f0c --- /dev/null +++ b/app/Components/Permission/Manager.php @@ -0,0 +1,80 @@ + 'showIndex', + ]; + + // Khi search thay đổi, reset pagination + public function updatingSearch() + { + $this->resetPage(); + } + + // Chuyển sang form (create/edit) + public function showForm(int $id = null) + { + $this->mode = 'form'; + $this->editingId = $id; + $this->name = $id + ? Permission::findOrFail($id)->name + : ''; + } + + // Quay về index, refresh list + public function showIndex() + { + $this->mode = 'index'; + $this->resetPage(); + $this->name = ''; + $this->editingId = null; + } + + // Xóa + public function delete(int $id) + { + Permission::findOrFail($id)->delete(); + session()->flash('message', 'Permission deleted.'); + $this->resetPage(); + } + + // Lưu form + public function save() + { + $rules = ['name' => 'required|string|unique:permissions,name' + .($this->editingId ? ",{$this->editingId}" : '')]; + + $this->validate($rules); + + Permission::updateOrCreate( + ['id' => $this->editingId], + ['name' => $this->name] + ); + + session()->flash('message', 'Permission saved.'); + $this->emit('permissionSaved'); + } + + public function render() + { + $permissions = Permission::where('name', 'like', "%{$this->search}%") + ->orderByDesc('id') + ->paginate(10); + + return view('components.permission.manager', compact('permissions')); + } +} diff --git a/app/Http/Controllers/PermissionController.php b/app/Http/Controllers/PermissionController.php index 3b1aa7b..49bdaa8 100644 --- a/app/Http/Controllers/PermissionController.php +++ b/app/Http/Controllers/PermissionController.php @@ -6,21 +6,8 @@ use Spatie\Permission\Models\Permission; class PermissionController extends Controller { - public function index() + public function manager() { - return view('admin.permissions.index'); - } - - public function create() - { - return view('admin.permissions.form'); - } - - public function edit(Permission $permission) - { - // truyền permissionId vào wrapper - return view('admin.permissions.form', [ - 'permissionId' => $permission->id, - ]); + return view('admin.permissions.manager'); } } diff --git a/resources/views/admin/permissions/form.blade.php b/resources/views/admin/permissions/form.blade.php deleted file mode 100644 index 45d4e97..0000000 --- a/resources/views/admin/permissions/form.blade.php +++ /dev/null @@ -1,8 +0,0 @@ -@extends('layouts.app') - -@section('title', isset($permissionId) ? 'Edit Permission' : 'Create Permission') - -@section('content') - {{-- truyền permissionId nếu có --}} - -@endsection diff --git a/resources/views/admin/permissions/index.blade.php b/resources/views/admin/permissions/manager.blade.php similarity index 72% rename from resources/views/admin/permissions/index.blade.php rename to resources/views/admin/permissions/manager.blade.php index bf2686c..528be46 100644 --- a/resources/views/admin/permissions/index.blade.php +++ b/resources/views/admin/permissions/manager.blade.php @@ -3,5 +3,5 @@ @section('title', 'Permissions') @section('content') - + @endsection diff --git a/resources/views/components/permission/form.blade.php b/resources/views/components/permission/form.blade.php deleted file mode 100644 index e328c44..0000000 --- a/resources/views/components/permission/form.blade.php +++ /dev/null @@ -1,40 +0,0 @@ -
-
-
- {{-- Card Header --}} -
-
- {{ $permissionId ? 'Edit Permission' : 'Create Permission' }} -
-
- {{-- Card Body --}} -
- @if (session()->has('message')) -
- {{ session('message') }} -
- @endif - -
-
- - - @error('name') -
{{ $message }}
- @enderror -
- -
- - Cancel - - -
-
-
-
-
-
diff --git a/resources/views/components/permission/index.blade.php b/resources/views/components/permission/index.blade.php deleted file mode 100644 index 7673e58..0000000 --- a/resources/views/components/permission/index.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -
-
-
- -
-
Permissions
-
- {{-- Search field with Soft UI outline style --}} -
- -
- {{-- Search button --}} - - {{-- New Permission button --}} - Create -
-
- - -
- @if (session()->has('message')) -
{{ session('message') }}
- @endif - -
- - - - - - - - - - @forelse($permissions as $p) - - - - - - @empty - - - - @endforelse - -
IDNameActions
{{ $p->id }}{{ $p->name }} - Edit - -
No permissions found.
-
- - {{-- Pagination --}} -
- {{ $permissions->links('pagination::bootstrap-5') }} -
-
-
-
-
diff --git a/resources/views/components/permission/manager.blade.php b/resources/views/components/permission/manager.blade.php new file mode 100644 index 0000000..4575e47 --- /dev/null +++ b/resources/views/components/permission/manager.blade.php @@ -0,0 +1,104 @@ +
+
+
+ {{-- Header --}} +
+
Permissions
+ @if ($mode === 'index') +
+
+ +
+ +
+ @else + + @endif +
+ + {{-- Body --}} +
+ @if (session()->has('message')) +
{{ session('message') }}
+ @endif + + @if ($mode === 'index') +
+ + + + + + + + + + @forelse($permissions as $p) + + + + + + @empty + + + + @endforelse + +
IDNameActions
{{ $p->id }}{{ $p->name }} + + +
No permissions found.
+
+
{{ $permissions->links('pagination::bootstrap-5') }}
+ @else + {{-- Form --}} +
+
+
+
+
+ {{ $editingId ? 'Edit Permission' : 'Create Permission' }} +
+
+
+
+
+ + + @error('name') +
{{ $message }}
+ @enderror +
+
+ + +
+
+
+
+
+
+ @endif + +
+
+
+
diff --git a/routes/web.php b/routes/web.php index a7704c6..8ebac75 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,11 +4,11 @@ use App\Http\Controllers\Auth\LoginController; use Illuminate\Support\Facades\Route; use App\Http\Controllers\DashboardController; use App\Http\Controllers\PermissionController; +use App\Components\Permission\Manager as PermissionManager; // Dashboard route (Livewire) for authenticated users only Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard'); -Route::middleware(['auth'])->group(function () { - Route::get('/permissions', [PermissionController::class, 'index'])->name('permissions.index'); - Route::get('/permissions/create', [PermissionController::class, 'create'])->name('permissions.create'); - Route::get('/permissions/{permission}/edit', [PermissionController::class, 'edit'])->name('permissions.edit'); +Route::middleware('auth')->group(function () { + Route::get('/permissions', [PermissionController::class, 'manager']) + ->name('permissions.index'); });