An attempt at adding the token fetching thing to Misuzu.

This commit is contained in:
flash 2022-02-14 20:52:09 +00:00
parent 647cc0061f
commit a28b5b275c
2 changed files with 33 additions and 0 deletions

View file

@ -57,6 +57,7 @@ Router::addRoutes(
Route::get('/resolve', 'resolve'),
Route::post('/bump', 'bump'),
Route::post('/verify', 'verify'),
Route::create(['GET', 'OPTIONS'], '/token', 'token'),
Route::get('/bans', 'bans')->addChildren(
Route::get('/check', 'checkBan'),
Route::post('/create', 'createBan'),

View file

@ -393,4 +393,36 @@ final class SockChatHandler extends Handler {
'perms' => self::calculatePermissions($userInfo),
];
}
public function token(HttpResponse $response, HttpRequest $request) {
$httpOrigin = $request->getHeaderLine('Origin');
if(!empty($httpOrigin)) {
$whitelist = Config::get('sockChat.origins', Config::TYPE_ARR, []);
if(!in_array($httpOrigin, $whitelist))
return 403;
$request->setHeader('Access-Control-Allow-Origin', $httpOrigin);
$request->setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET');
$request->setHeader('Access-Control-Allow-Credentials', 'true');
$request->setHeader('Vary', 'Origin');
}
if($request->getMethod() === 'OPTIONS')
return 204;
if(!UserSession::hasCurrent())
return ['ok' => false];
$session = UserSession::getCurrent();
$user = $session->getUser();
$token = AuthToken::create($user, $session);
return [
'ok' => true,
'usr' => $user->getId(),
'tkn' => $token->pack(),
];
}
}