update folder location

This commit is contained in:
Antonio Ramirez
2017-01-11 21:31:42 +01:00
parent 1cb60f0740
commit 13255a5117
167 changed files with 4770 additions and 8 deletions

140
src/User/Form/LoginForm.php Normal file
View File

@ -0,0 +1,140 @@
<?php
/*
* This file is part of the 2amigos/yii2-usuario project.
*
* (c) 2amigOS! <http://2amigos.us/>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Da\User\Form;
use Da\User\Helper\SecurityHelper;
use Da\User\Model\User;
use Da\User\Query\UserQuery;
use Da\User\Traits\ModuleAwareTrait;
use Yii;
use yii\base\Model;
class LoginForm extends Model
{
use ModuleAwareTrait;
/**
* @var string login User's email or username
*/
public $login;
/**
* @var string User's password
*/
public $password;
/**
* @var bool whether to remember User's login
*/
public $rememberMe = false;
/**
* @var User
*/
protected $user;
/**
* @var UserQuery
*/
protected $query;
/**
* @var SecurityHelper
*/
protected $securityHelper;
/**
* @param UserQuery $query
* @param SecurityHelper $securityHelper
* @param array $config
*/
public function __construct(UserQuery $query, SecurityHelper $securityHelper, $config = [])
{
$this->query = $query;
$this->securityHelper = $securityHelper;
parent::__construct($config);
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'login' => Yii::t('usuario', 'Login'),
'password' => Yii::t('usuario', 'Password'),
'rememberMe' => Yii::t('usuario', 'Remember me next time'),
];
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
'requiredFields' => [['login', 'password'], 'required'],
'loginTrim' => ['login', 'trim'],
'passwordValidate' => [
'password',
function ($attribute) {
if ($this->user === null ||
!$this->securityHelper->validatePassword($this->password, $this->user->password_hash)
) {
$this->addError($attribute, Yii::t('usuario', 'Invalid login or password'));
}
},
],
'confirmationValidate' => [
'login',
function ($attribute) {
if ($this->user !== null) {
$module = $this->getModule();
$confirmationRequired = $module->enableEmailConfirmation && !$module->allowUnconfirmedEmailLogin;
if ($confirmationRequired && !$this->user->getIsConfirmed()) {
$this->addError($attribute, Yii::t('usuario', 'You need to confirm your email address'));
}
if ($this->user->getIsBlocked()) {
$this->addError($attribute, Yii::t('usuario', 'Your account has been blocked'));
}
}
},
],
'rememberMe' => ['rememberMe', 'boolean'],
];
}
/**
* Validates form and logs the user in.
*
* @return bool whether the user is logged in successfully
*/
public function login()
{
if ($this->validate()) {
$duration = $this->rememberMe ? $this->module->rememberLoginLifespan : 0;
return Yii::$app->getUser()->login($this->user, $duration);
} else {
return false;
}
}
/**
* {@inheritdoc}
*/
public function beforeValidate()
{
if (parent::beforeValidate()) {
$this->user = $this->query->whereUsernameOrEmail(trim($this->login))->one();
return true;
}
return false;
}
}

View File

@ -0,0 +1,84 @@
<?php
/*
* This file is part of the 2amigos/yii2-usuario project.
*
* (c) 2amigOS! <http://2amigos.us/>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Da\User\Form;
use Da\User\Query\UserQuery;
use Da\User\Traits\ContainerAwareTrait;
use Yii;
use yii\base\Model;
class RecoveryForm extends Model
{
use ContainerAwareTrait;
const SCENARIO_REQUEST = 'request';
const SCENARIO_RESET = 'reset';
/**
* @var string User's email
*/
public $email;
/**
* @var string User's password
*/
public $password;
/**
* @var UserQuery
*/
protected $query;
/**
* @param UserQuery $query
* @param array $config
*/
public function __construct(UserQuery $query, array $config = [])
{
$this->query = $query;
parent::__construct($config);
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'email' => Yii::t('usuario', 'Email'),
'password' => Yii::t('usuario', 'Password'),
];
}
/**
* {@inheritdoc}
*/
public function scenarios()
{
return [
self::SCENARIO_REQUEST => ['email'],
self::SCENARIO_RESET => ['password'],
];
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
'emailTrim' => ['email', 'filter', 'filter' => 'trim'],
'emailRequired' => ['email', 'required'],
'emailPattern' => ['email', 'email'],
'passwordRequired' => ['password', 'required'],
'passwordLength' => ['password', 'string', 'max' => 72, 'min' => 6],
];
}
}

View File

@ -0,0 +1,85 @@
<?php
/*
* This file is part of the 2amigos/yii2-usuario project.
*
* (c) 2amigOS! <http://2amigos.us/>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Da\User\Form;
use Da\User\Model\User;
use Da\User\Traits\ContainerAwareTrait;
use Da\User\Traits\ModuleAwareTrait;
use Yii;
use yii\base\Model;
class RegistrationForm extends Model
{
use ModuleAwareTrait;
use ContainerAwareTrait;
/**
* @var string User email address
*/
public $email;
/**
* @var string Username
*/
public $username;
/**
* @var string Password
*/
public $password;
/**
* {@inheritdoc}
*/
public function rules()
{
/** @var User $user */
$user = $this->getClassMap()->get(User::class);
return [
// username rules
'usernameLength' => ['username', 'string', 'min' => 3, 'max' => 255],
'usernameTrim' => ['username', 'filter', 'filter' => 'trim'],
'usernamePattern' => ['username', 'match', 'pattern' => '/^[-a-zA-Z0-9_\.@]+$/'],
'usernameRequired' => ['username', 'required'],
'usernameUnique' => [
'username',
'unique',
'targetClass' => $user,
'message' => Yii::t('usuario', 'This username has already been taken'),
],
// email rules
'emailTrim' => ['email', 'filter', 'filter' => 'trim'],
'emailRequired' => ['email', 'required'],
'emailPattern' => ['email', 'email'],
'emailUnique' => [
'email',
'unique',
'targetClass' => $user,
'message' => Yii::t('usuario', 'This email address has already been taken'),
],
// password rules
'passwordRequired' => ['password', 'required', 'skipOnEmpty' => $this->module->generatePasswords],
'passwordLength' => ['password', 'string', 'min' => 6, 'max' => 72],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'email' => Yii::t('usuario', 'Email'),
'username' => Yii::t('usuario', 'Username'),
'password' => Yii::t('usuario', 'Password'),
];
}
}

View File

@ -0,0 +1,59 @@
<?php
/*
* This file is part of the 2amigos/yii2-usuario project.
*
* (c) 2amigOS! <http://2amigos.us/>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Da\User\Form;
use Da\User\Query\UserQuery;
use Yii;
use yii\base\Model;
class ResendForm extends Model
{
/**
* @var string
*/
public $email;
/**
* @var UserQuery
*/
protected $userQuery;
/**
* @param UserQuery $userQuery
* @param array $config
*/
public function __construct(UserQuery $userQuery, $config = [])
{
$this->userQuery = $userQuery;
parent::__construct($config);
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
'emailRequired' => ['email', 'required'],
'emailPattern' => ['email', 'email'],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'email' => Yii::t('usuario', 'Email'),
];
}
}

View File

@ -0,0 +1,143 @@
<?php
/*
* This file is part of the 2amigos/yii2-usuario project.
*
* (c) 2amigOS! <http://2amigos.us/>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Da\User\Form;
use Da\User\Factory\EmailChangeStrategyFactory;
use Da\User\Helper\SecurityHelper;
use Da\User\Model\User;
use Da\User\Traits\ContainerAwareTrait;
use Da\User\Traits\ModuleAwareTrait;
use Yii;
use yii\base\Model;
class SettingsForm extends Model
{
use ModuleAwareTrait;
use ContainerAwareTrait;
/**
* @var string
*/
public $email;
/**
* @var string
*/
public $username;
/**
* @var string
*/
public $new_password;
/**
* @var string
*/
public $current_password;
/**
* @var SecurityHelper
*/
protected $securityHelper;
/** @var User */
protected $user;
public function __construct(SecurityHelper $securityHelper, array $config = [])
{
$this->securityHelper = $securityHelper;
parent::__construct($config);
}
/**
* @return array
*/
public function rules()
{
return [
'usernameRequired' => ['username', 'required'],
'usernameTrim' => ['username', 'filter', 'filter' => 'trim'],
'usernameLength' => ['username', 'string', 'min' => 3, 'max' => 255],
'usernamePattern' => ['username', 'match', 'pattern' => '/^[-a-zA-Z0-9_\.@]+$/'],
'emailRequired' => ['email', 'required'],
'emailTrim' => ['email', 'filter', 'filter' => 'trim'],
'emailPattern' => ['email', 'email'],
'emailUsernameUnique' => [
['email', 'username'],
'unique',
'when' => function ($model, $attribute) {
return $this->getUser()->$attribute != $model->$attribute;
},
'targetClass' => $this->getClassMap()->get(User::class),
],
'newPasswordLength' => ['new_password', 'string', 'max' => 72, 'min' => 6],
'currentPasswordRequired' => ['current_password', 'required'],
'currentPasswordValidate' => [
'current_password',
function ($attribute) {
if (!$this->securityHelper->validatePassword($this->$attribute, $this->getUser()->password_hash)) {
$this->addError($attribute, Yii::t('usuario', 'Current password is not valid'));
}
},
],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'email' => Yii::t('usuario', 'Email'),
'username' => Yii::t('usuario', 'Username'),
'new_password' => Yii::t('usuario', 'New password'),
'current_password' => Yii::t('usuario', 'Current password'),
];
}
/**
* @return User|null|\yii\web\IdentityInterface
*/
public function getUser()
{
if ($this->user == null) {
$this->user = Yii::$app->user->identity;
}
return $this->user;
}
/**
* Saves new account settings.
*
* @return bool
*/
public function save()
{
if ($this->validate()) {
$this->user->scenario = 'settings';
$this->user->username = $this->username;
$this->user->password = $this->new_password;
if ($this->email == $this->user->email && $this->user->unconfirmed_email != null) {
$this->user->unconfirmed_email = null;
} elseif ($this->email != $this->user->email) {
$strategy = EmailChangeStrategyFactory::makeByStrategyType(
$this->getModule()->emailChangeStrategy,
$this
);
return $strategy->run();
}
return $this->user->save();
}
return false;
}
}