seria/src/Users/SettingsRoutes.php

50 lines
1.3 KiB
PHP

<?php
namespace Seria\Users;
use Index\Routing\Route;
use Index\Routing\RouteHandler;
use Index\Security\CSRFP;
use Sasae\SasaeEnvironment;
use Seria\Auth\AuthInfo;
use Seria\Users\UsersContext;
class SettingsRoutes extends RouteHandler {
public function __construct(
private AuthInfo $authInfo,
private UsersContext $usersCtx,
private CSRFP $csrfp,
private ?SasaeEnvironment $templating
) {}
#[Route('/settings')]
public function checkLogin($response, $request) {
if(!$this->authInfo->isLoggedIn())
return 403;
if($request->getMethod() === 'POST') {
if(!$request->isFormContent())
return 400;
$content = $request->getContent();
if(!$this->csrfp->verifyToken((string)$content->getParam('_csrfp')))
return 403;
}
}
#[Route('GET', '/settings')]
public function getIndex($response) {
return $this->templating->render('settings');
}
#[Route('POST', '/settings/passkey')]
public function postPasskey($response) {
$this->usersCtx->getUsers()->updatePassKey($this->authInfo->getUserInfo());
$response->redirect('/settings');
}
#[Route('GET', '/settings.php')]
public function getSettingsPHP($response): void {
$response->redirect('/settings', true);
}
}