Initial commit,修正

This commit is contained in:
2025-07-13 19:37:38 +08:00
parent 38ce288e27
commit 65bbd06981
12384 changed files with 3985464 additions and 8 deletions
+66
View File
@@ -0,0 +1,66 @@
<?php
namespace mdm\admin\models\form;
use Yii;
use mdm\admin\models\User;
use yii\base\Model;
/**
* Description of ChangePassword
*
* @author Misbahul D Munir <misbahuldmunir@gmail.com>
* @since 1.0
*/
class ChangePassword extends Model
{
public $oldPassword;
public $newPassword;
public $retypePassword;
/**
* @inheritdoc
*/
public function rules()
{
return [
[['oldPassword', 'newPassword', 'retypePassword'], 'required'],
[['oldPassword'], 'validatePassword'],
[['newPassword'], 'string', 'min' => 6],
[['retypePassword'], 'compare', 'compareAttribute' => 'newPassword'],
];
}
/**
* Validates the password.
* This method serves as the inline validation for password.
*/
public function validatePassword()
{
/* @var $user User */
$user = Yii::$app->user->identity;
if (!$user || !$user->validatePassword($this->oldPassword)) {
$this->addError('oldPassword', 'Incorrect old password.');
}
}
/**
* Change password.
*
* @return User|null the saved model or null if saving fails
*/
public function change()
{
if ($this->validate()) {
/* @var $user User */
$user = Yii::$app->user->identity;
$user->setPassword($this->newPassword);
$user->generateAuthKey();
if ($user->save()) {
return true;
}
}
return false;
}
}
+79
View File
@@ -0,0 +1,79 @@
<?php
namespace mdm\admin\models\form;
use Yii;
use yii\base\Model;
use mdm\admin\models\User;
/**
* Login form
*/
class Login extends Model
{
public $username;
public $password;
public $rememberMe = true;
private $_user = false;
/**
* @inheritdoc
*/
public function rules()
{
return [
// username and password are both required
[['username', 'password'], 'required'],
// rememberMe must be a boolean value
['rememberMe', 'boolean'],
// password is validated by validatePassword()
['password', 'validatePassword'],
];
}
/**
* Validates the password.
* This method serves as the inline validation for password.
*
* @param string $attribute the attribute currently being validated
* @param array $params the additional name-value pairs given in the rule
*/
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || !$user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect username or password.');
}
}
}
/**
* Logs in a user using the provided username and password.
*
* @return boolean whether the user is logged in successfully
*/
public function login()
{
if ($this->validate()) {
return Yii::$app->getUser()->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
} else {
return false;
}
}
/**
* Finds user by [[username]]
*
* @return User|null
*/
public function getUser()
{
if ($this->_user === false) {
$this->_user = User::findByUsername($this->username);
}
return $this->_user;
}
}
+61
View File
@@ -0,0 +1,61 @@
<?php
namespace mdm\admin\models\form;
use Yii;
use mdm\admin\models\User;
use yii\base\Model;
/**
* Password reset request form
*/
class PasswordResetRequest extends Model
{
public $email;
/**
* @inheritdoc
*/
public function rules()
{
return [
['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'exist',
'targetClass' => 'mdm\admin\models\User',
'filter' => ['status' => User::STATUS_ACTIVE],
'message' => 'There is no user with such email.'
],
];
}
/**
* Sends an email with a link, for resetting the password.
*
* @return boolean whether the email was send
*/
public function sendEmail()
{
/* @var $user User */
$user = User::findOne([
'status' => User::STATUS_ACTIVE,
'email' => $this->email,
]);
if ($user) {
if (!User::isPasswordResetTokenValid($user->password_reset_token)) {
$user->generatePasswordResetToken();
}
if ($user->save()) {
return Yii::$app->mailer->compose(['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'], ['user' => $user])
->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name . ' robot'])
->setTo($this->email)
->setSubject('Password reset for ' . Yii::$app->name)
->send();
}
}
return false;
}
}
+64
View File
@@ -0,0 +1,64 @@
<?php
namespace mdm\admin\models\form;
use Yii;
use mdm\admin\models\User;
use yii\base\InvalidParamException;
use yii\base\Model;
/**
* Password reset form
*/
class ResetPassword extends Model
{
public $password;
/**
* @var User
*/
private $_user;
/**
* Creates a form model given a token.
*
* @param string $token
* @param array $config name-value pairs that will be used to initialize the object properties
* @throws \yii\base\InvalidParamException if token is empty or not valid
*/
public function __construct($token, $config = [])
{
if (empty($token) || !is_string($token)) {
throw new InvalidParamException('Password reset token cannot be blank.');
}
$this->_user = User::findByPasswordResetToken($token);
if (!$this->_user) {
throw new InvalidParamException('Wrong password reset token.');
}
parent::__construct($config);
}
/**
* @inheritdoc
*/
public function rules()
{
return [
['password', 'required'],
['password', 'string', 'min' => 6],
];
}
/**
* Resets password.
*
* @return boolean if password was reset.
*/
public function resetPassword()
{
$user = $this->_user;
$user->setPassword($this->password);
$user->removePasswordResetToken();
return $user->save(false);
}
}
+58
View File
@@ -0,0 +1,58 @@
<?php
namespace mdm\admin\models\form;
use Yii;
use mdm\admin\models\User;
use yii\base\Model;
/**
* Signup form
*/
class Signup extends Model
{
public $username;
public $email;
public $password;
/**
* @inheritdoc
*/
public function rules()
{
return [
['username', 'filter', 'filter' => 'trim'],
['username', 'required'],
['username', 'unique', 'targetClass' => 'mdm\admin\models\User', 'message' => 'This username has already been taken.'],
['username', 'string', 'min' => 2, 'max' => 255],
['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'unique', 'targetClass' => 'mdm\admin\models\User', 'message' => 'This email address has already been taken.'],
['password', 'required'],
['password', 'string', 'min' => 6],
];
}
/**
* Signs user up.
*
* @return User|null the saved model or null if saving fails
*/
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
if ($user->save()) {
return $user;
}
}
return null;
}
}