From 6e0726fd3ffe192bd932116f2fe4b0e5ae39d764 Mon Sep 17 00:00:00 2001 From: flashwave Date: Sun, 2 Feb 2025 02:34:51 +0000 Subject: [PATCH] Fixed chat login using Bearer token. --- src/OAuth2/OAuth2WebRoutes.php | 4 +-- src/SharpChat/SharpChatRoutes.php | 50 ++++++++----------------------- 2 files changed, 14 insertions(+), 40 deletions(-) diff --git a/src/OAuth2/OAuth2WebRoutes.php b/src/OAuth2/OAuth2WebRoutes.php index 87710250..71820574 100644 --- a/src/OAuth2/OAuth2WebRoutes.php +++ b/src/OAuth2/OAuth2WebRoutes.php @@ -308,7 +308,7 @@ final class OAuth2WebRoutes implements RouteHandler { break; } - $scope[] = $scopeInfo->getSummary(); + $scope[] = $scopeInfo->summary; } } @@ -392,7 +392,7 @@ final class OAuth2WebRoutes implements RouteHandler { if(is_string($scopeInfo)) return ['error' => 'scope', 'scope' => $scopeName, 'reason' => $scopeInfo]; - $scope[] = $scopeInfo->getSummary(); + $scope[] = $scopeInfo->summary; } $result = [ diff --git a/src/SharpChat/SharpChatRoutes.php b/src/SharpChat/SharpChatRoutes.php index 60762e88..8fa23872 100644 --- a/src/SharpChat/SharpChatRoutes.php +++ b/src/SharpChat/SharpChatRoutes.php @@ -2,16 +2,17 @@ namespace Misuzu\SharpChat; use RuntimeException; -use Misuzu\Auth\{AuthContext,AuthInfo,Sessions}; -use Misuzu\Counters\CountersData; -use Misuzu\Emoticons\EmotesData; -use Misuzu\Perms\PermissionsData; -use Misuzu\Users\{BansData,UsersContext,UserInfo}; use Index\Colour\Colour; use Index\Config\Config; use Index\Http\{FormHttpContent,HttpRequest,HttpResponseBuilder}; use Index\Http\Routing\{HandlerAttribute,HttpDelete,HttpGet,HttpOptions,HttpPost,RouteHandler,RouteHandlerCommon}; use Index\Urls\UrlRegistry; +use Misuzu\Auth\{AuthContext,AuthInfo,Sessions}; +use Misuzu\Counters\CountersData; +use Misuzu\Emoticons\EmotesData; +use Misuzu\OAuth2\{OAuth2AccessInfoGetField,OAuth2Context}; +use Misuzu\Perms\PermissionsData; +use Misuzu\Users\{BansData,UsersContext,UserInfo}; final class SharpChatRoutes implements RouteHandler { use RouteHandlerCommon; @@ -24,6 +25,7 @@ final class SharpChatRoutes implements RouteHandler { private UrlRegistry $urls, private UsersContext $usersCtx, private AuthContext $authCtx, + private OAuth2Context $oauth2Ctx, private EmotesData $emotes, private PermissionsData $perms, private AuthInfo $authInfo, @@ -208,45 +210,17 @@ final class SharpChatRoutes implements RouteHandler { return ['success' => false, 'reason' => 'hash']; if(strcasecmp($authMethod, 'Bearer') === 0) { - $bearerCheck = $this->config->getString('bearerCheck'); - if($bearerCheck === '') - return ['success' => false, 'reason' => 'unsupported']; - - $req = curl_init($bearerCheck); try { - curl_setopt_array($req, [ - CURLOPT_AUTOREFERER => false, - CURLOPT_FAILONERROR => false, - CURLOPT_FOLLOWLOCATION => false, - CURLOPT_HEADER => false, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_TCP_FASTOPEN => true, - CURLOPT_CONNECTTIMEOUT => 2, - CURLOPT_MAXREDIRS => 2, - CURLOPT_PROTOCOLS => CURLPROTO_HTTPS, - CURLOPT_TIMEOUT => 5, - CURLOPT_USERAGENT => 'Misuzu', - CURLOPT_HTTPHEADER => [ - sprintf('Authorization: Bearer %s', $authToken), - ], - ]); - - $response = curl_exec($req); - if($response === false) - return ['success' => false, 'reason' => 'request']; - } finally { - curl_close($req); + $accessInfo = $this->oauth2Ctx->tokens->getAccessInfo($authToken, OAuth2AccessInfoGetField::Token); + } catch(RuntimeException $ex) { + return ['success' => false, 'reason' => 'token']; } - $decoded = json_decode($response); - if($decoded === null) - return ['success' => false, 'reason' => 'decode']; - - if(empty($decoded->user_id)) + if(empty($accessInfo->userId)) return ['success' => false, 'reason' => 'token']; try { - $userInfo = $this->usersCtx->users->getUser($decoded->user_id, 'id'); + $userInfo = $this->usersCtx->users->getUser($accessInfo->userId, 'id'); } catch(RuntimeException $ex) { return ['success' => false, 'reason' => 'user']; }