1
0
Fork 0

Fix control flow of registration RequestHandler

master
Anonymous Contributor 2023-09-10 01:30:11 +02:00
parent 9e0267513b
commit 13495cd041
1 changed files with 10 additions and 12 deletions

View File

@ -9,6 +9,7 @@ use Mcp\RequestHandler;
use Mcp\Middleware\PreSessionMiddleware; use Mcp\Middleware\PreSessionMiddleware;
use Exception; use Exception;
use Mcp\Util\Util;
class Register extends RequestHandler class Register extends RequestHandler
{ {
@ -56,12 +57,14 @@ class Register extends RequestHandler
$statementAvatarName->execute(['FirstName' => $nameParts[0], 'LastName' => $nameParts[1]]); $statementAvatarName->execute(['FirstName' => $nameParts[0], 'LastName' => $nameParts[1]]);
if ($statementAvatarName->rowCount() > 0) { if ($statementAvatarName->rowCount() > 0) {
$this->displayPage("Der gewählte Name ist bereits vergeben."); $this->displayPage("Der gewählte Name ist bereits vergeben.");
return;
} }
} }
$pass = trim($_POST['password']); $pass = trim($_POST['password']);
if (strlen($pass) < $this->app->config('password-min-length')) { if (strlen($pass) < $this->app->config('password-min-length')) {
$this->displayPage('Dein Passwort muss mindestens '.$this->app->config('password-min-length').' Zeichen lang sein.'); $this->displayPage('Dein Passwort muss mindestens '.$this->app->config('password-min-length').' Zeichen lang sein.');
return;
} }
$email = trim($_POST['email']); $email = trim($_POST['email']);
@ -71,6 +74,7 @@ class Register extends RequestHandler
$avatar = trim($_POST['avatar']); $avatar = trim($_POST['avatar']);
} else { } else {
$this->displayPage("Der gewählte Standardavatar existiert nicht."); $this->displayPage("Der gewählte Standardavatar existiert nicht.");
return;
} }
$opensim = new OpenSim($this->app->db()); $opensim = new OpenSim($this->app->db());
@ -82,7 +86,8 @@ class Register extends RequestHandler
$statementInviteDeleter = $this->app->db()->prepare('DELETE FROM mcp_invites WHERE InviteCode = :code'); $statementInviteDeleter = $this->app->db()->prepare('DELETE FROM mcp_invites WHERE InviteCode = :code');
$statementInviteDeleter->execute(['code' => $_REQUEST['code']]); $statementInviteDeleter->execute(['code' => $_REQUEST['code']]);
if ($statementInviteDeleter->rowCount() == 0) { if ($statementInviteDeleter->rowCount() == 0) {
$this->displayError("Der angegebene Einladungscode ist nicht mehr gültig."); Util::displayError($this->app, "Der angegebene Einladungscode ist nicht mehr gültig.");
return;
} }
try { try {
@ -116,6 +121,7 @@ class Register extends RequestHandler
$this->app->db()->rollBack(); $this->app->db()->rollBack();
error_log('Could not create Account: '.$pdoException->getMessage()); error_log('Could not create Account: '.$pdoException->getMessage());
$this->displayPage('Fehler bei der Erstellung deines Accounts. Bitte versuche es später erneut.'); $this->displayPage('Fehler bei der Erstellung deines Accounts. Bitte versuche es später erneut.');
return;
} }
session_abort(); session_abort();
@ -152,26 +158,18 @@ class Register extends RequestHandler
])->render(); ])->render();
} }
private function displayError(string $message): void
{
$this->app->template('error.php')->parent('__presession.php')->vars([
'error-message' => $message,
'title' => 'Fehler'
])->render();
}
private function checkInvite(): bool private function checkInvite(): bool
{ {
if (!isset($_REQUEST['code'])) { if (!isset($_REQUEST['code'])) {
$this->displayError("Du benötigst einen Einladungscode, um dich bei 4Creative zu registrieren."); Util::displayError($this->app, "Du benötigst einen Einladungscode, um dich bei 4Creative zu registrieren.");
} elseif (strlen($_REQUEST['code']) != 32 || !preg_match('/^[a-f0-9]+$/', $_REQUEST['code'])) { } elseif (strlen($_REQUEST['code']) != 32 || !preg_match('/^[a-f0-9]+$/', $_REQUEST['code'])) {
$this->displayError("Der angegebene Einladungscode ist nicht gültig. Nutze genau den Link, der dir zugeschickt wurde."); Util::displayError($this->app, "Der angegebene Einladungscode ist nicht gültig. Nutze genau den Link, der dir zugeschickt wurde.");
} else { } else {
$statementInviteCode = $this->app->db()->prepare("SELECT 1 FROM mcp_invites WHERE InviteCode = ? LIMIT 1"); $statementInviteCode = $this->app->db()->prepare("SELECT 1 FROM mcp_invites WHERE InviteCode = ? LIMIT 1");
$statementInviteCode->execute([$_REQUEST['code']]); $statementInviteCode->execute([$_REQUEST['code']]);
if ($statementInviteCode->rowCount() == 0) { if ($statementInviteCode->rowCount() == 0) {
$this->displayError("Der angegebene Einladungscode ist nicht gültig. Nutze genau den Link, der dir zugeschickt wurde."); Util::displayError($this->app, "Der angegebene Einladungscode ist nicht gültig. Nutze genau den Link, der dir zugeschickt wurde.");
return false; return false;
} }
return true; return true;