/** * @test */ public function it_can_get_provider_by_credentials() { $user = User::find(1); $user->attachProvider('twitter', $this->createOAuth1User()); // Grab social link $provider = SocialConnection::ofCredentials('twitter', 'id-123')->first(); $this->assertEquals(1, $provider->user_id); $this->assertEquals('id-123', $provider->social_id); }
public function getAuthLink(SessionManager $session, Manager $auth, $provider) { $user = Socialite::driver($provider)->user(); $dbUser = $auth->user(); $link = SocialConnection::ofCredentials($provider, $user->id)->first(); $linked = !is_null($link); $authenticated = !is_null($dbUser); // Link: Authenticated not linked if ($authenticated && !$linked) { // Link $dbUser->attachProvider($provider, $user); return redirect('/')->with('success', 'Account connected to "' . $provider . '" successfully.'); } elseif (!$authenticated && $linked) { // Log in user $dbUser = $auth->login($link->user_id); return redirect('/')->with('success', 'Authentication with "' . $provider . '" was successful'); } else { // Store to connect accounts after login $session->put('social_link', ['user' => $user, 'provider' => $provider]); // No user found - redirect to login return redirect('login')->with('error', 'No matching records found, please login to link accounts.'); } }