Initial commit

This commit is contained in:
Chris Smith
2025-02-19 14:51:16 +01:00
commit d82a6cad96
198 changed files with 13819 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
<?php
namespace frontend\models;
use common\jobs\EmailJob;
use Yii;
use yii\base\Model;
use common\models\User;
use const donatj\UserAgent\BROWSER;
use const donatj\UserAgent\PLATFORM;
/**
* Password reset request form
*/
class PasswordResetRequestForm extends Model
{
public $email;
/**
* {@inheritdoc}
*/
public function rules()
{
return [
['email', 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'exist',
'targetClass' => '\common\models\User',
'filter' => ['status' => User::STATUS_ACTIVE],
'message' => 'There is no user with this email address.'
],
];
}
/**
* Sends an email with a link, for resetting the password.
*
* @return bool whether the email was send
*/
public function sendEmail()
{
/* @var $user User */
$user = User::findOne([
'status' => User::STATUS_ACTIVE,
'email' => $this->email,
]);
if (!$user) {
return true;
}
if (!User::isPasswordResetTokenValid($user->password_reset_token)) {
$user->generatePasswordResetToken();
if (!$user->save()) {
return true;
}
}
try {
$uaInfo = \donatj\UserAgent\parse_user_agent();
} catch (\Exception $e) {
$uaInfo[PLATFORM] = 'unknown';
$uaInfo[BROWSER] = 'unknown';
}
Yii::$app->queue->push(new EmailJob([
'templateAlias' => EmailJob::PASSWORD_RESET,
'email' => $this->email,
'templateModel' => [
'name' => $user->first_name,
"operating_system" => $uaInfo[PLATFORM],
"action_url" => Yii::$app->urlManager->createAbsoluteUrl(['site/reset-password', 'token' => $user->password_reset_token]),
"browser_name" => $uaInfo[BROWSER],
]
]));
return true;
}
}