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 --}}
-
- {{-- Card Body --}}
-
- @if (session()->has('message'))
-
- {{ session('message') }}
-
- @endif
-
-
-
-
-
-
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 @@
-
-
-
-
-
-
-
-
- @if (session()->has('message'))
-
{{ session('message') }}
- @endif
-
-
-
-
-
- ID |
- Name |
- Actions |
-
-
-
- @forelse($permissions as $p)
-
- {{ $p->id }} |
- {{ $p->name }} |
-
- Edit
-
- |
-
- @empty
-
- No permissions found. |
-
- @endforelse
-
-
-
-
- {{-- 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 --}}
+
+
+ {{-- Body --}}
+
+ @if (session()->has('message'))
+
{{ session('message') }}
+ @endif
+
+ @if ($mode === 'index')
+
+
+
+
+ ID |
+ Name |
+ Actions |
+
+
+
+ @forelse($permissions as $p)
+
+ {{ $p->id }} |
+ {{ $p->name }} |
+
+
+
+ |
+
+ @empty
+
+ No permissions found. |
+
+ @endforelse
+
+
+
+
{{ $permissions->links('pagination::bootstrap-5') }}
+ @else
+ {{-- Form --}}
+
+ @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');
});