Skip to content
This repository has been archived by the owner on Aug 30, 2021. It is now read-only.

supertassu/laravel-socialite-mediawiki

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

laravel-socialite-mediawiki

Latest Stable Version Total Downloads License

This package provides a Socialite service that can be used to log in using MediaWiki's OAuth extension.

Installing

Install the package from composer

composer require taavi/laravel-socialite-mediawiki

Setup configuration

Add the following to config/services.php:

return [
    'mediawiki' => [
        'identifier' => env('MEDIAWIKI_OAUTH_CLIENT_ID'), // oauth client id
        'secret' => env('MEDIAWIKI_OAUTH_CLIENT_SECRET'), // oauth client secret

        'callback_uri' => env('MEDIAWIKI_OAUTH_CALLBACK_URL'), // redirect url
        'base_url' => env('MEDIAWIKI_OAUTH_BASE_URL'), // base url of wiki, for example https://meta.wikimedia.org
    ],
];

Set variables in .env

MEDIAWIKI_OAUTH_CLIENT_ID=
MEDIAWIKI_OAUTH_CLIENT_SECRET=
MEDIAWIKI_OAUTH_CALLBACK_URL=
MEDIAWIKI_OAUTH_BASE_URL=

Use

class OauthLoginController extends Controller
{
    public function __construct()
    {
        $this->middleware('guest')->only(['login', 'callback']);
        $this->middleware('auth')->only('logout');
    }

    public function login()
    {
        return Socialite::driver('wiki')
            ->redirect();
    }

    public function callback()
    {
        $socialiteUser = Socialite::driver('wiki')->user();

        $user = User::firstOrCreate([
            'username' => $socialiteUser->name,
        ]);

        Auth::login($user, false);
        return redirect()->intended('/');
    }

    public function logout(Request $request)
    {
        $this->guard()->logout();
        $request->session()->invalidate();
        return redirect('/');
    }

    private function guard()
    {
        return Auth::guard();
    }
}