diff --git a/app/Followable.php b/app/Followable.php index 2773961..15e8389 100644 --- a/app/Followable.php +++ b/app/Followable.php @@ -16,15 +16,7 @@ public function unfollow(User $user) public function toggleFollow(User $user) { - // Tip: You can also use the toggle() method. - // We'll cover this in the next episode. - // $this->follows()->toggle($user); - - if ($this->following($user)) { - return $this->unfollow($user); - } - - return $this->follow($user); + $this->follows()->toggle($user); } public function following(User $user) diff --git a/app/Http/Controllers/ExploreController.php b/app/Http/Controllers/ExploreController.php new file mode 100644 index 0000000..a4a2f55 --- /dev/null +++ b/app/Http/Controllers/ExploreController.php @@ -0,0 +1,15 @@ + User::paginate(50), + ]); + } +} diff --git a/app/Http/Controllers/ProfilesController.php b/app/Http/Controllers/ProfilesController.php index bc45d37..25cdf7f 100644 --- a/app/Http/Controllers/ProfilesController.php +++ b/app/Http/Controllers/ProfilesController.php @@ -28,7 +28,7 @@ public function update(User $user) Rule::unique('users')->ignore($user), ], 'name' => ['string', 'required', 'max:255'], - 'avatar' => ['required', 'file'], + 'avatar' => ['image'], 'email' => [ 'string', 'required', @@ -45,7 +45,9 @@ public function update(User $user) ], ]); - $attributes['avatar'] = request('avatar')->store('avatars'); + if (request('avatar')) { + $attributes['avatar'] = request('avatar')->store('avatars'); + } $user->update($attributes); diff --git a/app/User.php b/app/User.php index 1374fb9..c9f3a25 100644 --- a/app/User.php +++ b/app/User.php @@ -34,13 +34,13 @@ class User extends Authenticatable public function getAvatarAttribute($value) { - return asset($value); + return asset($value ?: '/images/default-avatar.jpeg'); } - // Next episode... - // public function setPasswordAttribute($value) - // { - // } + public function setPasswordAttribute($value) + { + $this->attributes['password'] = bcrypt($value); + } public function timeline() { diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 741edea..d2aa291 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -19,10 +19,12 @@ $factory->define(User::class, function (Faker $faker) { return [ + 'username' => $faker->unique()->username, 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'password' => + '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), ]; }); diff --git a/public/images/default-avatar.jpeg b/public/images/default-avatar.jpeg new file mode 100644 index 0000000..64e2e9b Binary files /dev/null and b/public/images/default-avatar.jpeg differ diff --git a/resources/views/components/follow-button.blade.php b/resources/views/components/follow-button.blade.php index 66888a6..06b092b 100644 --- a/resources/views/components/follow-button.blade.php +++ b/resources/views/components/follow-button.blade.php @@ -1,6 +1,6 @@ @unless (current_user()->is($user))