/** * Adds new staff. * * @return Response */ public function putAdd(Board $board) { if (!$board->canEditConfig($this->user)) { return abort(403); } $createUser = false; $roles = $this->user->getAssignableRoles($board); $rules = []; $existing = Input::get('staff-source') == "existing"; if ($existing) { $rules = ['existinguser' => ["required", "string", "exists:users,username"], 'captcha' => ["required", "captcha"]]; $input = Input::only('existinguser', 'captcha'); $validator = Validator::make($input, $rules); } else { $createUser = true; $validator = $this->registrationValidator(); } $castes = $roles->pluck('role_id'); $casteRules = ['castes' => ["required", "array"]]; $casteInput = Input::only('castes'); $casteValidator = Validator::make($casteInput, $casteRules); $casteValidator->each('castes', ["in:" . $castes->implode(",")]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator->errors()); } else { if ($casteValidator->fails()) { return redirect()->back()->withInput()->withErrors($casteValidator->errors()); } else { if ($createUser) { $user = $this->registrar->create(Input::all()); } else { $user = User::whereUsername(Input::only('existinguser'))->firstOrFail(); } } } $user->roles()->detach($roles->pluck('role_id')->toArray()); $user->roles()->attach($casteInput['castes']); Event::fire(new UserRolesModified($user)); return redirect("/cp/board/{$board->board_uri}/staff"); }
/** * List all staff members to the user. * * @return Response */ public function getStaff(Board $board) { if (!$board->canEditConfig($this->user)) { return abort(403); } $roles = $board->roles; $staff = $board->getStaff(); return $this->view(static::VIEW_STAFF, ['board' => $board, 'roles' => $roles, 'staff' => $staff, 'tab' => "staff"]); }
/** * Put tags. * * @return Response */ public function putTags(Board $board) { if (!$board->canEditConfig($this->user)) { return abort(403); } $input = Input::all(); $rules = ['boardTags' => ["array", "min:0", "max:5"]]; if (isset($input['boardTags']) && is_array($input['boardTags'])) { $input['boardTags'] = array_filter($input['boardTags']); } $validator = Validator::make($input, $rules); $validator->each('boardTags', ['string', 'alpha_dash', 'max:24']); if (!$validator->passes()) { return redirect()->back()->withErrors($validator->errors()); } $tags = []; $tagArray = []; foreach ($input['boardTags'] as $boardTag) { $boardTag = (string) $boardTag; if (strlen($boardTag) && !isset($tagArray[$boardTag])) { // Add the tag to the list of set tags to prevent duplicates. $tagArray[$boardTag] = true; // Find or create the board tag. $tags[] = BoardTag::firstorCreate(['tag' => $boardTag]); } } $board->tags()->detach(); if (count($tags)) { $tags = $board->tags()->saveMany($tags); } Event::fire(new BoardWasModified($board)); return $this->view(static::VIEW_TAGS, ['board' => $board, 'tags' => array_keys($tagArray), 'tab' => "tags"]); }
/** * Determines if the client has access to this form. * * @return boolean */ public function authorize() { return $this->board->canEditConfig($this->user); }
/** * Show the application dashboard to the user. * * @return Response */ public function getConfig(Request $request, Board $board) { if (!$board->canEditConfig($this->user)) { return abort(403); } $optionGroups = OptionGroup::getBoardConfig($board); return $this->view(static::VIEW_CONFIG, ['board' => $board, 'groups' => $optionGroups, 'tab' => "basic"]); }