initial
This commit is contained in:
40
include/newpassword.php
Normal file
40
include/newpassword.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
include 'renderer.php';
|
||||
|
||||
class Newpassword extends Renderer {
|
||||
protected array $formFields = [
|
||||
['label' => 'Email-Adresse', 'type' => 'email', 'size' => 50, 'name' => 'email', 'combine_with_next_line' => false],
|
||||
];
|
||||
protected string $formSendButtonLabel = 'Login-Name zusenden und Paßwort-Reset anfordern';
|
||||
|
||||
protected function formAction(): void {
|
||||
$email = trim(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL));
|
||||
$query = 'SELECT id, realname, email, username, salt FROM user';
|
||||
$dbResult = mysqli_query($this->dbConnection, $query);
|
||||
while ($row = mysqli_fetch_assoc($dbResult)) {
|
||||
if ($email === $this->decode($row['email'], $row['salt'])) {
|
||||
$salt = $row['salt'];
|
||||
$this->sendResetEmail($row['id'], $row['username'], $this->decode($row['email'], $salt), $this->decode($row['realname'], $salt));
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->templateName = 'newpassword_done';
|
||||
}
|
||||
|
||||
protected function sendResetEmail(int $id, string $username, string $emailAddress, string $realName) {
|
||||
$resetId = $this->generateRandomString();
|
||||
$query = 'update user set recreate_db_hash="' . $resetId . '" where id=' . $id;
|
||||
mysqli_query($this->dbConnection, $query);
|
||||
$mail = $this->initSmtpMailer();
|
||||
$mail->setFrom('foerderverein-ajs@gmx.de', 'Förderverein der August-Jaspert-Schule');
|
||||
$mail->addReplyTo('foerderverein-ajs@gmx.de', 'Förderverein der August-Jaspert-Schule');
|
||||
$mail->addAddress($emailAddress, $realName);
|
||||
$this->sendMail($mail, 'Passwort zurücksetzen für ' . filter_input(INPUT_SERVER, 'SERVER_NAME'), $this->getEmailBody($username, $realName, $resetId), $this->generateSignature(''));
|
||||
}
|
||||
|
||||
protected function getEmailBody(string $username, string $realname, string $code) {
|
||||
$rawBody = file_get_contents('templates/resetaccountmailbody.html');
|
||||
return str_replace(['{{name}}', '{{username}}', '{{server}}', '{{code}}', '{{protocol}}'],
|
||||
[$realname, $username, filter_input(INPUT_SERVER, 'SERVER_NAME'), $code, (filter_input(INPUT_SERVER, 'HTTPS') ? 's' : '') ], $rawBody);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user