public function getLogin($provider = null)
{
if (empty($provider)) {
App::abort(404);
}
$referer = Request::header('referer', '/');
$referer_parts = parse_url($referer);
$onerror = array_get($referer_parts, 'path');
if (array_get($referer_parts, 'query')) {
$onerror .= '?' . array_get($referer_parts, 'query');
}
if (!Input::get('code') && !Input::get('oauth_token')) {
Session::put('mmanos.social.onsuccess', Input::get('onsuccess', '/'));
Session::put('mmanos.social.onerror', Input::get('onerror', $onerror));
}
if (Auth::check()) {
return Redirect::to(Session::pull('mmanos.social.onsuccess', '/'));
}
Session::forget('mmanos.social.pending');
Session::forget('mmanos.social.failed_fields');
if (Input::get('denied') || Input::get('error')) {
return Redirect::to(Session::pull('mmanos.social.onerror', '/'))->with(Config::get('laravel-social::error_flash_var'), 'There was a problem logging in to your account (1).');
}
$provider = ucfirst($provider);
try {
$service = Social::service($provider);
if (Config::get('laravel-social::providers.' . strtolower($provider) . '.offline')) {
$service->setAccessType('offline');
}
} catch (Exception $e) {
App::abort(404);
}
if (2 === Social::oauthSpec($provider)) {
return $this->oauth2Login($provider, $service);
} else {
return $this->oauth1Login($provider, $service);
}
}