From 77d4e4572954d16c74f9986629c2e47ddfe6a08d Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 1 Sep 2018 23:20:51 -0600 Subject: [PATCH] Update FollowerController, prevent users from following private profiles without approval --- app/Http/Controllers/FollowerController.php | 24 +++++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/FollowerController.php b/app/Http/Controllers/FollowerController.php index 12480d218..15709cd97 100644 --- a/app/Http/Controllers/FollowerController.php +++ b/app/Http/Controllers/FollowerController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Follower; +use App\FollowRequest; use App\Jobs\FollowPipeline\FollowPipeline; use App\Profile; use Auth; @@ -18,15 +19,26 @@ class FollowerController extends Controller public function store(Request $request) { $this->validate($request, [ - 'item' => 'required|integer', - ]); + 'item' => 'required|integer', + ]); + $item = $request->input('item'); + $this->handleFollowRequest($item); + return redirect()->back(); + } + protected function handleFollowRequest($item) + { $user = Auth::user()->profile; - $target = Profile::where('id', '!=', $user->id)->findOrFail($request->input('item')); - + $target = Profile::where('id', '!=', $user->id)->findOrFail($item); + $private = (bool) $target->is_private; $isFollowing = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->count(); - if ($isFollowing == 0) { + if($private == true) { + $follow = new FollowRequest; + $follow->follower_id = $user->id; + $follow->following_id = $target->id; + $follow->save(); + } elseif ($isFollowing == 0) { $follower = new Follower(); $follower->profile_id = $user->id; $follower->following_id = $target->id; @@ -36,7 +48,5 @@ class FollowerController extends Controller $follower = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->firstOrFail(); $follower->delete(); } - - return redirect()->back(); } }