Package Data | |
---|---|
Maintainer Username: | berejant |
Maintainer Contact: | berejant@gmail.com (Anton Bereezhnyi) |
Package Create Date: | 2016-11-28 |
Package Last Update: | 2023-06-20 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2025-02-15 03:04:19 |
Package Statistics | |
---|---|
Total Downloads: | 109 |
Monthly Downloads: | 1 |
Daily Downloads: | 0 |
Total Stars: | 0 |
Total Watchers: | 1 |
Total Forks: | 1 |
Total Open Issues: | 0 |
KNEU Provider for Laravel Socialite Providers.
Add package to your laravel project via composer
composer require kneu/laravel-socialite-provider
Laravel\Socialite\SocialiteServiceProvider
from your providers[]
array in config\app.php
if you have added it already.\SocialiteProviders\Manager\ServiceProvider::class
to your providers[]
array in config\app.php
.For example:
'providers' => [
...
// remove 'Laravel\Socialite\SocialiteServiceProvider',
\SocialiteProviders\Manager\ServiceProvider::class, // add
];
Add SocialiteProviders\Manager\SocialiteWasCalled
event to your listen[]
array in <app_name>/Providers/EventServiceProvider
.
Add listener '\SocialiteProviders\Kneu\KneuExtendSocialite@handle'
to the SocialiteProviders\Manager\SocialiteWasCalled[]
.
For example:
protected $listen = [
...
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
...
'\SocialiteProviders\Kneu\KneuExtendSocialite@handle',
],
];
Append provider values to your .env
file
KNEU_KEY=your_application_id
KNEU_SECRET=your_secret
KNEU_REDIRECT_URI=https://example.com/login/complete
Next, you are ready to authenticate users via KNEU! You will need tree routes:
Example of Controller
<?php
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());
}
}
Of course, you will need to define routes to your controller methods:
Route::get('/login', 'Auth\LoginController@login');
Route::get('/login/complete', 'Auth\LoginController@loginComplete');
Route::get('/logout', 'Auth\LoginController@logout');
Once you have a user instance, you can grab a few more details about the user:
$user = Socialite::driver('github')->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
See documentation for Laravel Socialite Providers.