X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/a6633642232efd164d4708967ab59e498fbff896..refs/pull/3579/head:/app/Http/Controllers/Auth/RegisterController.php diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index e3d22264d..9399e8b7f 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -2,15 +2,18 @@ namespace BookStack\Http\Controllers\Auth; +use BookStack\Auth\Access\LoginService; use BookStack\Auth\Access\RegistrationService; use BookStack\Auth\Access\SocialAuthService; use BookStack\Auth\User; +use BookStack\Exceptions\StoppedAuthenticationException; use BookStack\Exceptions\UserRegistrationException; use BookStack\Http\Controllers\Controller; use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; -use Validator; +use Illuminate\Support\Facades\Validator; +use Illuminate\Validation\Rules\Password; class RegisterController extends Controller { @@ -29,6 +32,7 @@ class RegisterController extends Controller protected $socialAuthService; protected $registrationService; + protected $loginService; /** * Where to redirect users after login / registration. @@ -41,13 +45,17 @@ class RegisterController extends Controller /** * Create a new controller instance. */ - public function __construct(SocialAuthService $socialAuthService, RegistrationService $registrationService) - { + public function __construct( + SocialAuthService $socialAuthService, + RegistrationService $registrationService, + LoginService $loginService + ) { $this->middleware('guest'); $this->middleware('guard:standard'); $this->socialAuthService = $socialAuthService; $this->registrationService = $registrationService; + $this->loginService = $loginService; $this->redirectTo = url('/'); $this->redirectPath = url('/'); @@ -61,20 +69,22 @@ class RegisterController extends Controller protected function validator(array $data) { return Validator::make($data, [ - 'name' => 'required|min:2|max:255', - 'email' => 'required|email|max:255|unique:users', - 'password' => 'required|min:8', + 'name' => ['required', 'min:2', 'max:255'], + 'email' => ['required', 'email', 'max:255', 'unique:users'], + 'password' => ['required', Password::default()], ]); } /** * Show the application registration form. + * * @throws UserRegistrationException */ public function getRegister() { $this->registrationService->ensureRegistrationAllowed(); $socialDrivers = $this->socialAuthService->getActiveDrivers(); + return view('auth.register', [ 'socialDrivers' => $socialDrivers, ]); @@ -82,7 +92,9 @@ class RegisterController extends Controller /** * Handle a registration request for the application. + * * @throws UserRegistrationException + * @throws StoppedAuthenticationException */ public function postRegister(Request $request) { @@ -92,30 +104,33 @@ class RegisterController extends Controller try { $user = $this->registrationService->registerUser($userData); - auth()->login($user); + $this->loginService->login($user, auth()->getDefaultDriver()); } catch (UserRegistrationException $exception) { if ($exception->getMessage()) { $this->showErrorNotification($exception->getMessage()); } + return redirect($exception->redirectLocation); } $this->showSuccessNotification(trans('auth.register_success')); + return redirect($this->redirectPath()); } /** * Create a new user instance after a valid registration. - * @param array $data + * + * @param array $data + * * @return User */ protected function create(array $data) { return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], + 'name' => $data['name'], + 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); } - }