Added API endpoint to fetch current user info.
This commit is contained in:
parent
b127da74f0
commit
0848b6e708
2 changed files with 42 additions and 2 deletions
|
@ -1,8 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
namespace Aleister\V1;
|
namespace Aleister\V1;
|
||||||
|
|
||||||
use Aleister\RpcModels\Hanyuu\OAuth2AuthInfo;
|
|
||||||
use Aiwass\Client\IRpcClient;
|
|
||||||
use Index\Http\Routing\{IRouter,IRouteHandler};
|
use Index\Http\Routing\{IRouter,IRouteHandler};
|
||||||
|
|
||||||
class V1Routes implements IRouteHandler {
|
class V1Routes implements IRouteHandler {
|
||||||
|
@ -16,5 +14,9 @@ class V1Routes implements IRouteHandler {
|
||||||
$router->use('/', $authz->misuzuTokenAuthMiddleware(...));
|
$router->use('/', $authz->misuzuTokenAuthMiddleware(...));
|
||||||
|
|
||||||
$router->get('/', fn() => ['status' => 'operational']);
|
$router->get('/', fn() => ['status' => 'operational']);
|
||||||
|
|
||||||
|
$usersRoutes = new V1UsersRoutes($this->ctx, $this->ctx->getRpcClient()->scopeTo('misuzu:users:'));
|
||||||
|
$router->get('/me', $usersRoutes->getMe(...));
|
||||||
|
$router->scopeTo('/users')->register($usersRoutes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
38
src/V1/V1UsersRoutes.php
Normal file
38
src/V1/V1UsersRoutes.php
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
namespace Aleister\V1;
|
||||||
|
|
||||||
|
use Aiwass\Client\IRpcClient;
|
||||||
|
use Index\Http\Routing\RouteHandler;
|
||||||
|
|
||||||
|
class V1UsersRoutes extends RouteHandler {
|
||||||
|
public function __construct(
|
||||||
|
private V1Context $ctx,
|
||||||
|
private IRpcClient $rpc
|
||||||
|
) {}
|
||||||
|
|
||||||
|
public function getMe() {
|
||||||
|
$authz = $this->ctx->getAuthzContext();
|
||||||
|
if(!$authz->hasScope('identify'))
|
||||||
|
return 403;
|
||||||
|
|
||||||
|
if($authz->isAppUser()) {
|
||||||
|
// TODO: what should app users even look like?
|
||||||
|
return 501;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($authz->isRealUser()) {
|
||||||
|
$userInfo = $this->rpc->query('getUser', ['userId' => $authz->getUserId()]);
|
||||||
|
if(!is_array($userInfo))
|
||||||
|
return 500;
|
||||||
|
if(array_key_exists('error', $userInfo))
|
||||||
|
return match($userInfo['error']) {
|
||||||
|
'notfound' => 404,
|
||||||
|
default => 400,
|
||||||
|
};
|
||||||
|
|
||||||
|
return $userInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 401;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue