diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index a43797e..0e4cf8b 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Validation\Rule; +use Illuminate\Validation\Rules; +use Illuminate\Support\Facades\Hash; use Spatie\Permission\Models\Role; class UserController extends Controller @@ -19,6 +21,43 @@ class UserController extends Controller return view('users.index', compact('users')); } + /** + * Formularz dodawania nowego użytkownika. + * Wykorzystuje gotowy widok z Breeze (auth.register). + */ + public function create() + { + $roles = Role::all(); + + return view('auth.register', compact('roles')); + } + + /** + * Zapis nowego użytkownika i przypisanie ról. + */ + public function store(Request $request) + { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'surname' => ['required', 'string', 'max:255'], + 'email' => ['required', 'email', 'max:255', Rule::unique('users')], + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + 'role' => ['required', 'string', 'exists:roles,name'], // Zmiana z roles na role + ]); + + $user = User::create([ + 'name' => $validated['name'], + 'surname' => $validated['surname'], + 'email' => $validated['email'], + 'password' => Hash::make($validated['password']), + ]); + + // Przypisanie wybranej roli + $user->assignRole($validated['role']); + + return redirect()->route('users.index')->with('status', 'Użytkownik został pomyślnie dodany.'); + } + /** * Formularz edycji wybranego użytkownika. */ @@ -48,7 +87,6 @@ class UserController extends Controller 'email' => $validated['email'], ]); - // Synchronizuje przekazane role (jeśli nic nie zaznaczono, przekazuje pustą tablicę) $user->syncRoles($request->input('roles', [])); return redirect()->route('users.index')->with('status', 'Użytkownik został zaktualizowany.'); diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 2b83f4d..6ce2359 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -33,11 +33,14 @@ class DatabaseSeeder extends Seeder $adminRole = Role::firstOrCreate(['name' => 'admin']); $kierownikRole = Role::firstOrCreate(['name' => 'kierownik']); $pracownikRole = Role::firstOrCreate(['name' => 'pracownik']); + + // 3. Przypisywanie uprawnień do ról $adminRole->syncPermissions(Permission::all()); $kierownikRole->syncPermissions([ + 'users_access', 'raporty_access', 'flota_access', 'zaliczki_access', diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index d8136d6..09b6fa2 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -21,8 +21,8 @@ class UserSeeder extends Seeder // 1. Domyślne konta testowe $admin = User::factory()->create([ - 'name' => 'Jan', - 'surname' => 'Admin', + 'name' => 'Json', + 'surname' => 'John', 'email' => 'a@a.com', 'password' => Hash::make('123'), ]); diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 9cb6c7e..ad1a56b 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -1,10 +1,10 @@ -
- @csrf + + @csrf
- +
@@ -24,11 +24,12 @@ + @isset($roles)