84 lines
2.6 KiB
PHP
84 lines
2.6 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace app\admin\controller;
|
||
|
|
|
||
|
|
use Psr\Http\Message\ServerRequestInterface;
|
||
|
|
use League\OAuth2\Server\AuthorizationServer;
|
||
|
|
use League\OAuth2\Server\ResourceServer;
|
||
|
|
use GuzzleHttp\Psr7\Response as Psr7Response;
|
||
|
|
use app\service\AuthService;
|
||
|
|
use app\model\User;
|
||
|
|
use support\Request;
|
||
|
|
use support\Response;
|
||
|
|
|
||
|
|
class AuthController_bak
|
||
|
|
{
|
||
|
|
|
||
|
|
protected AuthorizationServer $authServer;
|
||
|
|
protected ResourceServer $resourceServer;
|
||
|
|
|
||
|
|
public function __construct(AuthorizationServer $auth, ResourceServer $res)
|
||
|
|
{
|
||
|
|
$this->authServer = $auth;
|
||
|
|
$this->resourceServer = $res;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 浏览器授权页
|
||
|
|
public function authorize(ServerRequestInterface $request)
|
||
|
|
{
|
||
|
|
// 如果未登录,跳转登录页(自行实现)
|
||
|
|
// 登录后,确认授权 -> issue auth code -> 重定向回 client
|
||
|
|
|
||
|
|
// …未登录重定向到登录页,登录后调用:
|
||
|
|
// $authRequest = $this->authServer->validateAuthorizationRequest($request);
|
||
|
|
// …用户同意授权…
|
||
|
|
// return $this->authServer->completeAuthorizationRequest($authRequest, new Psr7Response());
|
||
|
|
}
|
||
|
|
|
||
|
|
// 授权码换 Token
|
||
|
|
public function token(ServerRequestInterface $request)
|
||
|
|
{
|
||
|
|
return $this->authServer->respondToAccessTokenRequest($request, new Psr7Response());
|
||
|
|
}
|
||
|
|
|
||
|
|
// 获取用户信息
|
||
|
|
public function userinfo(ServerRequestInterface $request)
|
||
|
|
{
|
||
|
|
$psr = $this->resourceServer->validateAuthenticatedRequest($request);
|
||
|
|
$userId = $psr->getAttribute('oauth_user_id');
|
||
|
|
// 根据 $userId 查询用户表返回
|
||
|
|
// return json(['id' => $userId, 'username' => 'demo']);
|
||
|
|
|
||
|
|
// 用 Webman 的 support\Response 返回 JSON 更方便
|
||
|
|
return json([
|
||
|
|
'id' => $userId,
|
||
|
|
'username' => User::find($userId)->username,
|
||
|
|
]);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
public function info(Request $request)
|
||
|
|
{
|
||
|
|
$userId = $request->session()->get('user_id');
|
||
|
|
if (!$userId) {
|
||
|
|
return json(['code'=>401,'msg'=>'未登录']);
|
||
|
|
}
|
||
|
|
|
||
|
|
$user = User::with('roles')->find($userId);
|
||
|
|
|
||
|
|
return json([
|
||
|
|
'code' => 0,
|
||
|
|
'data' => [
|
||
|
|
'user' => [
|
||
|
|
'id' => $user->id,
|
||
|
|
'username' => $user->username,
|
||
|
|
'roles' => $user->roles->pluck('name')->all(),
|
||
|
|
],
|
||
|
|
'menus' => AuthService::getMenuTree($userId),
|
||
|
|
'permissions' => AuthService::getPermissionCodes($userId),
|
||
|
|
],
|
||
|
|
'msg' => 'ok',
|
||
|
|
]);
|
||
|
|
}
|
||
|
|
}
|