50 lines
1.3 KiB
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);
|
|
}
|
|
}
|