PHP code example of kneu / laravel-socialite-provider
1. Go to this page and download the library: Download kneu/laravel-socialite-provider library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kneu / laravel-socialite-provider example snippets
'providers' => [
...
// remove 'Laravel\Socialite\SocialiteServiceProvider',
\SocialiteProviders\Manager\ServiceProvider::class, // add
];
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;
use App\User;
use Laravel\Socialite\Facades\Socialite;
use SocialiteProviders\Manager\OAuth2\User as KneuUser;
class LoginController extends Controller
{
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
/**
* @return \SocialiteProviders\Kneu\Provider
*/
protected function getProvider()
{
return Socialite::with('kneu');
}
public function login(Request $request)
{
$request->session()->put('url.intended', url()->previous());
return $this->getProvider()->redirect();
}
public function loginComplete()
{
/** @var KneuUser $kneuUser */
$kneuUser = $this->getProvider()->user();
$user = User::withTrashed()->find($kneuUser->id);
if(!$user) {
$user = new User();
}
$user->fill($kneuUser->getRaw());
$user->trashed() ? $user->restore() : $user->touch();
Auth::login($user);
return redirect()->intended($this->redirectTo);
}
public function logout(Request $request)
{
Auth::logout();
$request->session()->flush();
$request->session()->regenerate();
return $this->getProvider()->logoutRedirect(url()->previous());
}
}
Route::get('/login', 'Auth\LoginController@login');
Route::get('/login/complete', 'Auth\LoginController@loginComplete');
Route::get('/logout', 'Auth\LoginController@logout');
$user = Socialite::driver('kneu')->user();
// OAuth Two Providers
$token = $user->token;
$refreshToken = $user->refreshToken; // currently not provided by auth.kneu.edu.ua
$expiresIn = $user->expiresIn;
$user->id;
$user->name;
$user->email;
$user->type; // enum ['student', 'teacher', 'simple']
$user->first_name;
$user->middle_name;
$user->last_name;
$user->teacher_id;
$user->department_id;
$user->student_id;
$user->group_id;
$user->sex; // only for student, but not always correct
php
protected $listen = [
...
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
...
'\SocialiteProviders\Kneu\KneuExtendSocialite@handle',
],
];