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', ]); } }