taavi/laravel-socialite-mediawiki

为Laravel Socialite提供的MediaWiki身份验证提供程序

1.6.0 2022-01-06 19:09 UTC

This package is auto-updated.

Last update: 2024-09-07 00:47:47 UTC


README

此包提供了一个Socialite服务,可以用来通过MediaWiki的OAuth扩展登录。

安装

使用Composer安装此包

composer require taavi/laravel-socialite-mediawiki

设置配置

将以下内容添加到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
    ],
];

.env中设置变量

MEDIAWIKI_OAUTH_CLIENT_ID=
MEDIAWIKI_OAUTH_CLIENT_SECRET=
MEDIAWIKI_OAUTH_CALLBACK_URL=
MEDIAWIKI_OAUTH_BASE_URL=

使用

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

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

	public function callback() {
		$socialiteUser = Socialite::driver( 'mediawiki' )->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();
	}
}

贡献和许可证

请使用git-send-email发送补丁到~taavi/inbox@lists.sr.ht

此包采用MIT许可证。具体请参见LICENSE文件。