first push
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
<?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',
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user