checkIfAuthenticated(false)) {
header("Location: ./index.php");
die();
}
$webUi = new WebUiGenerator(MENU_LOGIN);
$webUi->addHeader();
if (isUserSetUp())
$webUi->addCard("Login", getHtmlLogin($result));
else
$webUi->addCard("Create User", getHtmlCreateUser($result));
$webUi->addFooter();
$webUi->printHtml();
function login(): void {
global $result;
global $auth;
try {
$auth->loginWithUsername($_POST['username'], $_POST['password'], (int)(60 * 60 * 24 * 365.25));
header("Location: ./index.php");
die();
} catch (\Delight\Auth\UnknownUsernameException $e) {
$result = 'Wrong username or password';
} catch (\Delight\Auth\InvalidPasswordException $e) {
$result = 'Wrong username or password';
} catch (\Delight\Auth\TooManyRequestsException $e) {
$result = 'Too many requests';
}
}
function createUser(): void {
global $result;
global $auth;
if (isUserSetUp())
die("Unauthorized");
if (strlen($_POST["username"]) < 2) {
$result = "The username needs to be at least 2 characters long";
}
if (strlen($_POST["password"]) < 6) {
$result = "The password needs to be at least 6 characters long";
}
if ($_POST["password"] != $_POST["password_r"]) {
$result = "Passwords don't match";
}
//No error has occured
if ($result == null) {
changeUserName(sanitizeString($_POST["username"]));
$auth->admin()->changePasswordForUserById(1, $_POST['password']);
$auth->admin()->addRoleForUserById(1, \Delight\Auth\Role::ADMIN);
$auth->admin()->logInAsUserById(1);
header("Location: ./index.php");
die();
}
}
function getHtmlCreateUser(?string $result): string {
$html = new UiEditor();
$html->addHtml("Please enter a username and password:");
$html->addLineBreak(2);
$editValue = "";
if (isset($_POST["username"]))
$editValue = $_POST["username"];
$html->buildEditField('username', 'Username', $editValue)
->minlength(2)
->generate();
$html->addLineBreak();
$html->buildEditField('password', 'Password')
->minlength(6)
->type("password")
->generate();
$html->addLineBreak();
$html->buildEditField('password_r', 'Password (repeat)')
->minlength(6)
->type("password")
->generate();
if ($result != null) {
$html->addLineBreak(2);
$html->addHtml('' . $result . '');
}
$html->addLineBreak(2);
$html->buildButton("button_create", "Create")
->setSubmit()
->setRaised()
->setIsAccent()
->generate();
$html->addLineBreak(3);
$html->addHtml("Note: If you do not want to use authentication, you can disable it by editing /data/config.php");
return $html->getHtml();
}
function getHtmlLogin(?string $result): string {
global $CONFIG;
$html = new UiEditor();
$editValue = "";
if (isset($_POST["username"]))
$editValue = $_POST["username"];
$html->buildEditField('username', 'Username', $editValue)
->generate();
$html->addLineBreak();
$html->buildEditField('password', 'Password')
->type("password")
->generate();
if ($result != null) {
$html->addLineBreak(2);
$html->addHtml('' . $result . '');
}
$html->addLineBreak(2);
$html->buildButton("button_login", "Login")
->setSubmit()
->setRaised()
->setIsAccent()
->generate();
$pathUsers = realpath($CONFIG->AUTHDB_PATH);
$html->buildButton("button_forgot", "Forgot Password")
->setOnClick("alert('If you forgot your password, please delete the file $pathUsers')")
->generate();
return $html->getHtml();
}