Switched EEPROM from private chat auth to public API.
This commit is contained in:
parent
c3827334a1
commit
a409410ea0
5 changed files with 54 additions and 64 deletions
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"require": {
|
||||
"flashwave/index": "^0.2410",
|
||||
"flashii/apii": "^0.2",
|
||||
"sentry/sdk": "^4.0",
|
||||
"nesbot/carbon": "^3.7"
|
||||
},
|
||||
|
|
39
composer.lock
generated
39
composer.lock
generated
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "0bd5a41ea92a75983cfabd9b9052a8a2",
|
||||
"content-hash": "5bb4c1111eb08d57ef2ef77239a4ddc8",
|
||||
"packages": [
|
||||
{
|
||||
"name": "carbonphp/carbon-doctrine-types",
|
||||
|
@ -75,6 +75,43 @@
|
|||
],
|
||||
"time": "2024-02-09T16:56:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "flashii/apii",
|
||||
"version": "v0.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://patchii.net/flashii/apii-php.git",
|
||||
"reference": "6a93d31375dd7e75ff9264f3024f2208ce602f49"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.12",
|
||||
"phpunit/phpunit": "^10.5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Flashii\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"bsd-3-clause-clear"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "flashwave",
|
||||
"email": "packagist@flash.moe",
|
||||
"homepage": "https://flash.moe",
|
||||
"role": "mom"
|
||||
}
|
||||
],
|
||||
"description": "Client library for the Flashii.net API.",
|
||||
"homepage": "https://api.flashii.net",
|
||||
"time": "2024-11-16T16:03:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "flashwave/index",
|
||||
"version": "v0.2410.191603",
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
namespace EEPROM\Auth;
|
||||
|
||||
use EEPROM\Users\UsersContext;
|
||||
use Flashii\{FlashiiClient,FlashiiUrls};
|
||||
use Flashii\Credentials\{BearerCredentials,MisuzuCredentials};
|
||||
use Index\Config\Config;
|
||||
use Index\Http\Routing\{HttpMiddleware,RouteHandler,RouteHandlerTrait};
|
||||
|
||||
|
@ -28,16 +30,19 @@ class AuthRoutes implements RouteHandler {
|
|||
$authMethod = strval($authParts[0] ?? '');
|
||||
$authToken = strval($authParts[1] ?? '');
|
||||
|
||||
if(strcasecmp($authMethod, 'misuzu') === 0 || strcasecmp($authMethod, 'bearer') === 0) {
|
||||
$authResult = ChatAuth::attempt(
|
||||
$this->config->getString('endpoint'),
|
||||
$authMethod,
|
||||
$this->config->getString('secret'),
|
||||
$authToken
|
||||
);
|
||||
$isMisuzu = strcasecmp($authMethod, 'misuzu') === 0;
|
||||
$isBearer = strcasecmp($authMethod, 'bearer') === 0;
|
||||
|
||||
if(!empty($authResult->success))
|
||||
$this->authInfo->setInfo($this->usersCtx->getUser($authResult->user_id));
|
||||
if($isMisuzu || $isBearer) {
|
||||
$credentials = $isMisuzu ? new MisuzuCredentials($authToken) : new BearerCredentials($authToken);
|
||||
$flashii = new FlashiiClient('EEPROM', $credentials, new FlashiiUrls(
|
||||
$this->config->getString('api', FlashiiUrls::PROD_API_URL),
|
||||
$this->config->getString('id', FlashiiUrls::PROD_ID_URL)
|
||||
));
|
||||
|
||||
$authInfo = $flashii->v1()->me();
|
||||
if($authInfo !== null)
|
||||
$this->authInfo->setInfo($this->usersCtx->getUser($authInfo->getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
<?php
|
||||
namespace EEPROM\Auth;
|
||||
|
||||
use stdClass;
|
||||
|
||||
final class ChatAuth {
|
||||
public static function attempt(string $endPoint, string $method, string $secret, string $cookie): stdClass {
|
||||
if(!empty($cookie)) {
|
||||
$signature = sprintf('verify#%s#%s#%s', $method, $cookie, $_SERVER['REMOTE_ADDR']);
|
||||
$signature = hash_hmac('sha256', $signature, $secret);
|
||||
|
||||
$login = curl_init($endPoint);
|
||||
curl_setopt_array($login, [
|
||||
CURLOPT_AUTOREFERER => false,
|
||||
CURLOPT_FAILONERROR => false,
|
||||
CURLOPT_FOLLOWLOCATION => true,
|
||||
CURLOPT_HEADER => false,
|
||||
CURLOPT_POST => true,
|
||||
CURLOPT_POSTFIELDS => http_build_query([
|
||||
'method' => $method,
|
||||
'token' => $cookie,
|
||||
'ipaddr' => $_SERVER['REMOTE_ADDR'],
|
||||
], '', '&', PHP_QUERY_RFC3986),
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_TCP_FASTOPEN => true,
|
||||
CURLOPT_CONNECTTIMEOUT => 2,
|
||||
CURLOPT_MAXREDIRS => 2,
|
||||
CURLOPT_PROTOCOLS => CURLPROTO_HTTPS,
|
||||
CURLOPT_TIMEOUT => 5,
|
||||
CURLOPT_USERAGENT => 'EEPROM',
|
||||
CURLOPT_HTTPHEADER => [
|
||||
'Content-Type: application/x-www-form-urlencoded',
|
||||
'X-SharpChat-Signature: ' . $signature,
|
||||
],
|
||||
]);
|
||||
$userInfo = json_decode(curl_exec($login));
|
||||
curl_close($login);
|
||||
}
|
||||
|
||||
if(empty($userInfo->success)) {
|
||||
$userInfo = new stdClass;
|
||||
$userInfo->success = false;
|
||||
$userInfo->user_id = 0;
|
||||
$userInfo->username = 'Anonymous';
|
||||
$userInfo->colour_raw = 0x40000000;
|
||||
$userInfo->rank = 0;
|
||||
$userInfo->hierarchy = 0;
|
||||
$userInfo->perms = 0;
|
||||
}
|
||||
|
||||
return $userInfo;
|
||||
}
|
||||
}
|
|
@ -61,7 +61,7 @@ class EEPROMContext {
|
|||
|
||||
if($isApiDomain) {
|
||||
$routingCtx->register(new Auth\AuthRoutes(
|
||||
$this->config->scopeTo('misuzu'),
|
||||
$this->config->scopeTo('apii'),
|
||||
$this->authInfo,
|
||||
$this->usersCtx
|
||||
));
|
||||
|
|
Loading…
Reference in a new issue