X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/411c331a628a5db7e23686cf0d181c6f9e37fec6..refs/pull/71/head:/app/Http/Controllers/Auth/AuthController.php diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index 717c4fc4d..fef87d5c8 100644 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -1,16 +1,17 @@ socialAuthService = $socialAuthService; $this->emailConfirmationService = $emailConfirmationService; $this->userRepo = $userRepo; + $this->username = config('auth.method') === 'standard' ? 'email' : 'username'; parent::__construct(); } @@ -105,6 +108,38 @@ class AuthController extends Controller return $this->registerUser($userData); } + + /** + * Overrides the action when a user is authenticated. + * If the user authenticated but does not exist in the user table we create them. + * @param Request $request + * @param Authenticatable $user + * @return \Illuminate\Http\RedirectResponse + */ + protected function authenticated(Request $request, Authenticatable $user) + { + // Explicitly log them out for now if they do no exist. + if (!$user->exists) auth()->logout($user); + + if (!$user->exists && $user->email === null && !$request->has('email')) { + $request->flash(); + session()->flash('request-email', true); + return redirect('/login'); + } + + if (!$user->exists && $user->email === null && $request->has('email')) { + $user->email = $request->get('email'); + } + + if (!$user->exists) { + $user->save(); + $this->userRepo->attachDefaultRole($user); + auth()->login($user); + } + + return redirect()->intended($this->redirectPath()); + } + /** * Register a new user after a registration callback. * @param $socialDriver @@ -131,7 +166,7 @@ class AuthController extends Controller * @param bool|false|SocialAccount $socialAccount * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector * @throws UserRegistrationException - * @throws \Oxbow\Exceptions\ConfirmationEmailException + * @throws \BookStack\Exceptions\ConfirmationEmailException */ protected function registerUser(array $userData, $socialAccount = false) { @@ -155,13 +190,15 @@ class AuthController extends Controller return redirect('/register/confirm'); } + $newUser->email_confirmed = true; + auth()->login($newUser); session()->flash('success', 'Thanks for signing up! You are now registered and signed in.'); return redirect($this->redirectPath()); } /** - * Show the page to tell the user to check thier email + * Show the page to tell the user to check their email * and confirm their address. */ public function getRegisterConfirmation() @@ -169,6 +206,18 @@ class AuthController extends Controller return view('auth/register-confirm'); } + /** + * View the confirmation email as a standard web page. + * @param $token + * @return \Illuminate\View\View + * @throws UserRegistrationException + */ + public function viewConfirmEmail($token) + { + $confirmation = $this->emailConfirmationService->getEmailConfirmationFromToken($token); + return view('emails/email-confirmation', ['token' => $confirmation->token]); + } + /** * Confirms an email via a token and logs the user into the system. * @param $token @@ -209,7 +258,7 @@ class AuthController extends Controller ]); $user = $this->userRepo->getByEmail($request->get('email')); $this->emailConfirmationService->sendConfirmation($user); - \Session::flash('success', 'Confirmation email resent, Please check your inbox.'); + session()->flash('success', 'Confirmation email resent, Please check your inbox.'); return redirect('/register/confirm'); } @@ -219,13 +268,9 @@ class AuthController extends Controller */ public function getLogin() { - - if (view()->exists('auth.authenticate')) { - return view('auth.authenticate'); - } - $socialDrivers = $this->socialAuthService->getActiveDrivers(); - return view('auth.login', ['socialDrivers' => $socialDrivers]); + $authMethod = config('auth.method'); + return view('auth/login', ['socialDrivers' => $socialDrivers, 'authMethod' => $authMethod]); } /** @@ -240,7 +285,7 @@ class AuthController extends Controller } /** - * Redirect to the social site for authentication initended to register. + * Redirect to the social site for authentication intended to register. * @param $socialDriver * @return mixed */