예제 #1
0
 /**
  * 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");
 }
예제 #2
0
 /**
  * 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"]);
 }
예제 #4
0
 /**
  * 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"]);
 }