taavi / laravel-socialite-mediawiki
为Laravel Socialite提供的MediaWiki身份验证提供程序
1.6.0
2022-01-06 19:09 UTC
Requires
- php: ^7.0|^8.0
- ext-json: *
- laravel/socialite: ^5.0
Requires (Dev)
- mediawiki/mediawiki-codesniffer: 38.0.0
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文件。