From 124c4d077815e9a759ab19badc102505b6356acd Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 10 Mar 2021 22:37:53 +0000 Subject: [PATCH] Updated register paths to include user slugs --- app/Auth/Access/SocialAuthService.php | 2 +- app/Auth/UserRepo.php | 8 +++++++- app/Http/Controllers/Auth/SocialController.php | 13 +++++-------- routes/web.php | 8 ++++---- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/Auth/Access/SocialAuthService.php b/app/Auth/Access/SocialAuthService.php index b0383a938..df8513a84 100644 --- a/app/Auth/Access/SocialAuthService.php +++ b/app/Auth/Access/SocialAuthService.php @@ -221,7 +221,7 @@ class SocialAuthService * Detach a social account from a user. * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ - public function detachSocialAccount(string $socialDriver) + public function detachSocialAccount(string $socialDriver): void { user()->socialAccounts()->where('driver', '=', $socialDriver)->delete(); } diff --git a/app/Auth/UserRepo.php b/app/Auth/UserRepo.php index bcaf9cd09..e437ff1e3 100644 --- a/app/Auth/UserRepo.php +++ b/app/Auth/UserRepo.php @@ -167,7 +167,13 @@ class UserRepo 'email_confirmed' => $emailConfirmed, 'external_auth_id' => $data['external_auth_id'] ?? '', ]; - return User::query()->forceCreate($details); + + $user = new User(); + $user->forceFill($details); + $user->refreshSlug(); + $user->save(); + + return $user; } /** diff --git a/app/Http/Controllers/Auth/SocialController.php b/app/Http/Controllers/Auth/SocialController.php index 0c53c9233..d4cfe4fe3 100644 --- a/app/Http/Controllers/Auth/SocialController.php +++ b/app/Http/Controllers/Auth/SocialController.php @@ -9,9 +9,7 @@ use BookStack\Exceptions\SocialSignInAccountNotUsed; use BookStack\Exceptions\SocialSignInException; use BookStack\Exceptions\UserRegistrationException; use BookStack\Http\Controllers\Controller; -use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Illuminate\Routing\Redirector; use Illuminate\Support\Str; use Laravel\Socialite\Contracts\User as SocialUser; @@ -31,12 +29,11 @@ class SocialController extends Controller $this->registrationService = $registrationService; } - /** * Redirect to the relevant social site. - * @throws \BookStack\Exceptions\SocialDriverNotConfigured + * @throws SocialDriverNotConfigured */ - public function getSocialLogin(string $socialDriver) + public function login(string $socialDriver) { session()->put('social-callback', 'login'); return $this->socialAuthService->startLogIn($socialDriver); @@ -47,7 +44,7 @@ class SocialController extends Controller * @throws SocialDriverNotConfigured * @throws UserRegistrationException */ - public function socialRegister(string $socialDriver) + public function register(string $socialDriver) { $this->registrationService->ensureRegistrationAllowed(); session()->put('social-callback', 'register'); @@ -60,7 +57,7 @@ class SocialController extends Controller * @throws SocialDriverNotConfigured * @throws UserRegistrationException */ - public function socialCallback(Request $request, string $socialDriver) + public function callback(Request $request, string $socialDriver) { if (!session()->has('social-callback')) { throw new SocialSignInException(trans('errors.social_no_action_defined'), '/login'); @@ -99,7 +96,7 @@ class SocialController extends Controller /** * Detach a social account from a user. */ - public function detachSocialAccount(string $socialDriver) + public function detach(string $socialDriver) { $this->socialAuthService->detachSocialAccount($socialDriver); session()->flash('success', trans('settings.users_social_disconnected', ['socialAccount' => Str::title($socialDriver)])); diff --git a/routes/web.php b/routes/web.php index bb772b3dd..9d482dc41 100644 --- a/routes/web.php +++ b/routes/web.php @@ -217,12 +217,12 @@ Route::group(['middleware' => 'auth'], function () { }); // Social auth routes -Route::get('/login/service/{socialDriver}', 'Auth\SocialController@getSocialLogin'); -Route::get('/login/service/{socialDriver}/callback', 'Auth\SocialController@socialCallback'); +Route::get('/login/service/{socialDriver}', 'Auth\SocialController@login'); +Route::get('/login/service/{socialDriver}/callback', 'Auth\SocialController@callback'); Route::group(['middleware' => 'auth'], function () { - Route::get('/login/service/{socialDriver}/detach', 'Auth\SocialController@detachSocialAccount'); + Route::get('/login/service/{socialDriver}/detach', 'Auth\SocialController@detach'); }); -Route::get('/register/service/{socialDriver}', 'Auth\SocialController@socialRegister'); +Route::get('/register/service/{socialDriver}', 'Auth\SocialController@register'); // Login/Logout routes Route::get('/login', 'Auth\LoginController@getLogin');