diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index 0739e2e..8acb270 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -30,13 +30,15 @@ public function create(): View public function store(Request $request): RedirectResponse { $request->validate([ - 'name' => ['required', 'string', 'max:255'], + 'first_name' => ['required', 'string', 'max:255'], + 'last_name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class], 'password' => ['required', 'confirmed', Rules\Password::defaults()], ]); $user = User::create([ - 'name' => $request->name, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000..79ee66e --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,67 @@ +validated()); + + return redirect()->route('users.index'); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(User $user) + { + return view('users.edit', compact('user')); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateUserRequest $request, User $user) + { + $user->update($request->validated()); + + return redirect()->route('users.index'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(User $user) + { + $user->delete(); + + return redirect()->route('users.index'); + } +} diff --git a/app/Http/Requests/StoreUserRequest.php b/app/Http/Requests/StoreUserRequest.php new file mode 100644 index 0000000..845b239 --- /dev/null +++ b/app/Http/Requests/StoreUserRequest.php @@ -0,0 +1,32 @@ +|string> + */ + public function rules(): array + { + return [ + 'first_name' => ['required'], + 'last_name' => ['required'], + 'email' => ['required', 'email', Rule::unique('users')], + 'password' => ['required'], + ]; + } +} diff --git a/app/Http/Requests/UpdateUserRequest.php b/app/Http/Requests/UpdateUserRequest.php new file mode 100644 index 0000000..dd3bb49 --- /dev/null +++ b/app/Http/Requests/UpdateUserRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules(): array + { + return [ + 'first_name' => ['required'], + 'last_name' => ['required'], + 'email' => ['required', 'email', Rule::unique('users')->ignore($this->user)], + ]; + } +} diff --git a/app/Models/User.php b/app/Models/User.php index def621f..1bcfc46 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -4,12 +4,13 @@ // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { - use HasFactory, Notifiable; + use HasFactory, Notifiable, SoftDeletes; /** * The attributes that are mass assignable. @@ -17,7 +18,8 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', + 'first_name', + 'last_name', 'email', 'password', ]; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 584104c..d03e102 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -24,7 +24,8 @@ class UserFactory extends Factory public function definition(): array { return [ - 'name' => fake()->name(), + 'first_name' => fake()->firstName(), + 'last_name' => fake()->lastName(), 'email' => fake()->unique()->safeEmail(), 'email_verified_at' => now(), 'password' => static::$password ??= Hash::make('password'), diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index 05fb5d9..848e6a0 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -13,12 +13,14 @@ public function up(): void { Schema::create('users', function (Blueprint $table) { $table->id(); - $table->string('name'); + $table->string('first_name'); + $table->string('last_name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); + $table->softDeletes(); }); Schema::create('password_reset_tokens', function (Blueprint $table) { diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index d01a0ef..7db36d9 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -13,11 +13,6 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // User::factory(10)->create(); - - User::factory()->create([ - 'name' => 'Test User', - 'email' => 'test@example.com', - ]); + User::factory(10)->create(); } } diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index a857242..9815701 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -2,11 +2,18 @@
@csrf - +
- - - + + + +
+ + +
+ + +
diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index c2d3a65..7186717 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -15,6 +15,9 @@ {{ __('Dashboard') }} + + {{ __('Users') }} + @@ -23,7 +26,7 @@