2017-05-03 54 views
0

我正在製作一個Laravel 5.4項目,我希望用戶在註冊和創建用戶之前選擇一所學校(他們將分配給他們)。 我的問題是,谷歌登錄是應用程序的主要登錄方法,並在LoginController中處理用戶創建。我爲Google登錄使用Socialite包。社交名片註冊(Laravel 5.4)

如何將用戶和數據從google回調傳遞到註冊頁面?

這是我的LoginController:

public function redirectToProvider() 
{ 
    return Socialite::driver('google')->redirect(); 
} 

public function handleProviderCallback() 
{ 
    try 
    { 
     $user = Socialite::driver('google')->user(); 
    } 
    catch (Exception $e) 
    { 
     return redirect('auth/google'); 
    } 

    $authUser = $this->findOrCreateUser($user); 

    Auth::login($authUser, true); 

    return redirect('/home'); 
} 

public function findOrCreateUser($googleUser) 
{ 
    $authUser = User::where('google_id', $googleUser->id)->first(); 

    if ($authUser) { 
     return $authUser; 
    } 

    return User::create([ 
     'name' => $googleUser->name, 
     'email' => $googleUser->email, 
     'google_id' => $googleUser->id, 
     'avatar' => $googleUser->avatar 
    ]); 
} 

回答

0

您可以使用flashed session。 試試這個:

public function handleProviderCallback() 
{ 
    try 
    { 
     $user = Socialite::driver('google')->user(); 
    } 
    catch (Exception $e) 
    { 
     return redirect('auth/google'); 
    } 

    $authUser = User::where('google_id', $user->id)->first(); 

    if($authUser) //if user is found 
    { 
     Auth::login($authUser, true); 
     return redirect('/home'); 
    } 
    else //if user is not found, redirect to register page 
    { 
     return redirect('/register')->with('user', $user); 
    } 
} 

,並在您註冊查看

<input type='text' name='email' value='{{session("user")->email}}'>