mirror of
https://github.com/slawkens/myaac.git
synced 2025-10-13 17:24:54 +02:00

* feat: Resend Email Verify + rework the whole concept, based on new table for email hashes This make it possible that every email will work, not matter if first or last * Nothing important: change variable name * Change message
95 lines
2.9 KiB
PHP
95 lines
2.9 KiB
PHP
<?php
|
|
|
|
use MyAAC\Models\AccountEmailVerify;
|
|
|
|
defined('MYAAC') or die('Direct access not allowed!');
|
|
|
|
$title = 'Resend Email';
|
|
|
|
$errorWithBackButton = function ($msg) use ($twig) {
|
|
$errors = [$msg];
|
|
|
|
$twig->display('error_box.html.twig', ['errors' => $errors]);
|
|
$twig->display('account.back_button.html.twig', [
|
|
'action' => getLink('account/resend-email-verify'),
|
|
]);
|
|
};
|
|
|
|
if (!setting('core.mail_enabled') || !setting('core.account_mail_verify')) {
|
|
$errorWithBackButton('Resending email is not possible on this server.');
|
|
return;
|
|
}
|
|
|
|
$showForm = true;
|
|
|
|
if (isset($_POST['submit']) && $_POST['submit'] == '1') {
|
|
$email = $_REQUEST['email'];
|
|
|
|
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
$errorWithBackButton('Please enter valid Email.');
|
|
return;
|
|
}
|
|
|
|
$account = new OTS_Account();
|
|
$account->findByEMail($email);
|
|
if ($account->isLoaded()) {
|
|
if ($account->getCustomField('email_verified') == '1') {
|
|
$errorWithBackButton('This account is already verified! You can <a href=' . getLink('account/manage') . '>log in</a> on the website.');
|
|
return;
|
|
}
|
|
|
|
$accountEmailVerify = AccountEmailVerify::where('account_id', $account->getId())->orderBy('sent_at', 'DESC')->first();
|
|
if ($accountEmailVerify && time() - $accountEmailVerify->sent_at < 60) {
|
|
$errorWithBackButton('Only one Email per minute is allowed. Please try again later.');
|
|
return;
|
|
}
|
|
|
|
$tmp_account = $email;
|
|
if (!config('account_login_by_email')) {
|
|
$tmp_account = (USE_ACCOUNT_NAME ? $account->getName() : $account->getId());
|
|
}
|
|
|
|
$hash = md5(generateRandomString(16, true, true) . $email);
|
|
|
|
AccountEmailVerify::create([
|
|
'account_id' => $account->getId(),
|
|
'hash' => $hash,
|
|
'sent_at' => time(),
|
|
]);
|
|
|
|
$verify_url = getLink('account/confirm-email/' . $hash);
|
|
$body_html = $twig->render('mail.account.resend-email-verify.html.twig', array(
|
|
'account' => $tmp_account,
|
|
'verify_url' => generateLink($verify_url, $verify_url, true)
|
|
));
|
|
|
|
if (_mail($account->getEMail(), configLua('serverName') . ' - Verify Account', $body_html)) {
|
|
$message = "If account with this email exists - you will become an email with verification link.";
|
|
$showForm = false;
|
|
} else {
|
|
$message = "<p class='error'>An error occurred while sending email (<b>{$email}</b> )! Try again later. For Admin: More info can be found in system/logs/mailer-error.log</p>";
|
|
}
|
|
}
|
|
else {
|
|
$message = "<br />If account with this email exists - you will become an email with verification link.";
|
|
$showForm = false;
|
|
}
|
|
|
|
$twig->display('success.html.twig', array(
|
|
'title' => 'Verify Email Sent',
|
|
'description' => $message,
|
|
));
|
|
}
|
|
|
|
//show errors if not empty
|
|
if (!empty($errors)) {
|
|
$twig->display('error_box.html.twig', ['errors' => $errors]);
|
|
$twig->display('account.back_button.html.twig', [
|
|
'action' => getLink('account/resend-email-verify'),
|
|
]);
|
|
}
|
|
|
|
if ($showForm) {
|
|
$twig->display('account.resend-email-verify.html.twig');
|
|
}
|