Example #1
0
 /**
  * Save new user to database.
  *
  * @author Casper Rasmussen <*****@*****.**>
  *
  * @param \Nodes\Backend\Models\User\Validation\UserValidator $userValidator
  * @return \Illuminate\Http\RedirectResponse
  * @throws \Exception
  */
 public function store(UserValidator $userValidator)
 {
     // Check user level
     if (Gate::denies('backend-admin')) {
         abort(403);
     }
     // Retrieve posted data
     $data = Request::all();
     // Random a password if it's left empty
     if (empty($data['password'])) {
         $data['password'] = $data['password_confirmation'] = Str::random(8);
     }
     // Validate user
     if (!$userValidator->with($data)->validate()) {
         return redirect()->back()->withInput()->with(['error' => $userValidator->errorsBag()]);
     }
     try {
         // Create user
         $user = $this->userRepository->createUser($data);
         // Send a email with information
         if (filter_var($data['send_mail'], FILTER_VALIDATE_BOOLEAN)) {
             $this->userRepository->sendWelcomeMail($user, $data['password']);
         }
         return redirect()->route('nodes.backend.users')->with('success', 'User was successfully created');
     } catch (Exception $e) {
         return redirect()->back()->withInput()->with('error', 'Could not create user');
     }
 }