diff --git a/app/Components/Permission/Form.php b/app/Components/Permission/Form.php new file mode 100644 index 0000000..4888796 --- /dev/null +++ b/app/Components/Permission/Form.php @@ -0,0 +1,44 @@ + '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 new file mode 100644 index 0000000..655e8bb --- /dev/null +++ b/app/Components/Permission/Index.php @@ -0,0 +1,31 @@ + '$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/Http/Controllers/PermissionController.php b/app/Http/Controllers/PermissionController.php new file mode 100644 index 0000000..3b1aa7b --- /dev/null +++ b/app/Http/Controllers/PermissionController.php @@ -0,0 +1,26 @@ + $permission->id, + ]); + } +} diff --git a/resources/views/admin/permissions/form.blade.php b/resources/views/admin/permissions/form.blade.php new file mode 100644 index 0000000..45d4e97 --- /dev/null +++ b/resources/views/admin/permissions/form.blade.php @@ -0,0 +1,8 @@ +@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/index.blade.php new file mode 100644 index 0000000..bf2686c --- /dev/null +++ b/resources/views/admin/permissions/index.blade.php @@ -0,0 +1,7 @@ +@extends('layouts.app') + +@section('title', 'Permissions') + +@section('content') + +@endsection diff --git a/resources/views/components/permission/form.blade.php b/resources/views/components/permission/form.blade.php new file mode 100644 index 0000000..ee165d5 --- /dev/null +++ b/resources/views/components/permission/form.blade.php @@ -0,0 +1,20 @@ +
+ @if (session()->has('message')) +
{{ session('message') }}
+ @endif + +
+
+ + + @error('name') {{ $message }} @enderror +
+ +
+
diff --git a/resources/views/components/permission/index.blade.php b/resources/views/components/permission/index.blade.php new file mode 100644 index 0000000..2e3a8dd --- /dev/null +++ b/resources/views/components/permission/index.blade.php @@ -0,0 +1,47 @@ +
+ + + @if (session()->has('message')) +
{{ session('message') }}
+ @endif + + + + + + + + + + + @foreach($permissions as $p) + + + + + + @endforeach + +
IDNameActions
{{ $p->id }}{{ $p->name }} + Edit + +
+ +
{{ $permissions->links() }}
+
diff --git a/routes/web.php b/routes/web.php index c2d830f..a7704c6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,12 @@ use App\Http\Controllers\Auth\LoginController; use Illuminate\Support\Facades\Route; use App\Http\Controllers\DashboardController; +use App\Http\Controllers\PermissionController; // 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'); +});