public function update(Request $request, Group $group) { $this->validate($request, ["action" => "required|in:updateName,updateDescription,addMember,delMember,modMember,promoteAdmin,demoteAdmin", "name" => "string|max:255|requiredIf:action,updateName", "description" => "max:1000|requiredIf:action,updateDescription", "user_id" => 'numeric']); if ($request->has('creator')) { $creator = true; } else { $creator = false; } if ($request->has('moderator')) { $moderator = true; } else { $moderator = false; } if ($request->has('adjudicator')) { $adjudicator = true; } else { $adjudicator = false; } if ($request->has('administrator')) { $administrator = true; $adjudicator = true; $moderator = true; $creator = true; } else { $administrator = false; } if ($request->input("action") == "updateName") { $group->name = $request->input("name"); $group->save(); return redirect()->back(); } elseif ($request->input("action") == "updateDescription") { $group->description = $request->input("description"); $group->save(); return redirect()->back(); } elseif ($request->input("action") == "addMember") { try { $user = User::findOrFail($request->input("user_id")); } catch (\Exception $e) { flash()->overlay("The user couldn't be found, the account may have been deleted recently", "User Not Found"); return redirect()->back(); } if ($group->users()->get()->contains($user)) { flash()->overlay("The user already exists in this group", "User Exists"); return redirect()->back(); } else { if ($administrator) { $group->makeAdmin($user); } else { $group->addUser($user, $creator, $moderator, $adjudicator); $group->modifyPermissions($user, $creator, $moderator, $adjudicator); } flash()->overlay($user->name . " (" . $user->email . ") is now a member of this team.", "Team Member Added"); return redirect()->back(); } } elseif ($request->input("action") == "delMember") { $user = User::find($request->input("user_id")); if ($group->users()->get()->contains($user)) { //$group->delUser($user); $group->users()->detach([$user->id]); flash()->overlay("The user was removed from the team", "User Removed"); return redirect()->back(); } else { flash()->overlay("The user you requested to delete, does not exist in the team, the user may already have been deleted", "User Deleted"); return redirect()->back(); } } elseif ($request->input("action") == "modMember") { try { $user = User::findOrFail($request->input("user_id")); } catch (\Exception $e) { flash()->overlay("The user couldn't be found or no longer exists<br>User ID was " . $request->input('user_id'), "User Not Found"); return redirect()->back(); } //dd($request->input()); if ($administrator) { $group->makeAdmin($user); } else { if ($group->isAdmin($user->id)) { $group->removeAdmin($user); } $group->modifyPermissions($user, $creator, $moderator, $adjudicator); } flash()->overlay($user->name . " (" . $user->email . ") now has the permissions<br><br>Administrator: " . ($administrator ? "True" : "False") . "<br>Moderator: " . ($moderator ? "True" : "False") . "<br> Judge: " . ($adjudicator ? "True" : "False"), "Permissions Updated"); return redirect()->back(); } elseif ($request->input("action") == "promoteAdmin") { flash()->overlay("Do not use this", "Do not use!"); return redirect()->back(); } }