/** * Store a new user. * * @return \Illuminate\Http\Response */ public function store() { $password = Str::random(); $input = array_merge(Binput::only(['first_name', 'last_name', 'email']), ['password' => $password, 'activated' => true, 'activated_at' => new DateTime()]); $rules = UserRepository::rules(array_keys($input)); $rules['password'] = '******'; $val = UserRepository::validate($input, $rules, true); if ($val->fails()) { return Redirect::route('users.create')->withInput()->withErrors($val->errors()); } try { $user = UserRepository::create($input); $groups = GroupRepository::index(); foreach ($groups as $group) { if (Binput::get('group_' . $group->id) === 'on') { $user->addGroup($group); } } $mail = ['url' => URL::to(Config::get('credentials.home', '/')), 'password' => $password, 'email' => $user->getLogin(), 'subject' => Config::get('app.name') . ' - New Account Information']; Mail::queue('credentials::emails.newuser', $mail, function ($message) use($mail) { $message->to($mail['email'])->subject($mail['subject']); }); return Redirect::route('users.show', ['users' => $user->id])->with('success', 'The user has been created successfully. Their password has been emailed to them.'); } catch (UserExistsException $e) { return Redirect::route('users.create')->withInput()->withErrors($val->errors())->with('error', 'That email address is taken.'); } }