From 5a2c0ae49014390ae966062d8876f8d2f8f69383 Mon Sep 17 00:00:00 2001 From: Tomasz Boruc Date: Fri, 4 Sep 2026 21:41:40 +0200 Subject: [PATCH] =?UTF-8?q?Dodawanie=20nowych=20r=C3=B3l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/SettingsController.php | 44 +++++++++++ resources/views/settings/index.blade.php | 81 +++++++++++++++++++++ routes/web.php | 3 + 3 files changed, 128 insertions(+) diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 7677ad1..1963e99 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -85,4 +85,48 @@ class SettingsController extends Controller return redirect()->route('settings.index')->with('status', 'Uprawnienia ról zostały zaktualizowane.'); } + + public function storeRole(Request $request) + { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255', 'unique:roles,name,NULL,id,guard_name,web'], + ], [ + 'name.required' => 'Nazwa roli jest wymagana.', + 'name.unique' => 'Taka rola już istnieje.', + ]); + + Role::create([ + 'name' => trim($validated['name']), + 'guard_name' => 'web', + ]); + + return redirect()->route('settings.index')->with('status', 'Nowa rola została dodana.'); + } + + public function updateRole(Request $request, Role $role) + { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255', 'unique:roles,name,' . $role->id . ',id,guard_name,' . $role->guard_name], + ], [ + 'name.required' => 'Nazwa roli jest wymagana.', + 'name.unique' => 'Taka rola już istnieje.', + ]); + + $role->update([ + 'name' => trim($validated['name']), + ]); + + return redirect()->route('settings.index')->with('status', 'Rola została zaktualizowana.'); + } + + public function destroyRole(Role $role) + { + if ($role->users()->exists()) { + return redirect()->route('settings.index')->with('error', 'Nie można usunąć roli przypisanej do użytkowników.'); + } + + $role->delete(); + + return redirect()->route('settings.index')->with('status', 'Rola została usunięta.'); + } } diff --git a/resources/views/settings/index.blade.php b/resources/views/settings/index.blade.php index 85d9a5f..10f49f3 100644 --- a/resources/views/settings/index.blade.php +++ b/resources/views/settings/index.blade.php @@ -20,6 +20,87 @@ @endif
+
+ + + +
+