fitness-web/backend/models/UserUpdate.php
Schneider Roland 7adaf34677 merge app api
2023-01-19 17:43:10 +01:00

145 lines
4.1 KiB
PHP

<?php
namespace backend\models;
use Yii;
use common\models\User;
class UserUpdate extends User {
public $password_plain;
public $password_repeat;
public $selected_accounts = [];
public $selected_trainers = [];
public $role;
/**
* @inheritdoc
* @formatter:off
*/
public function rules()
{
return [
[['username','email'], 'required' ],
['email' ,'email' ],
// ['email' ,'unique' , 'targetClass' => User::className(), 'targetAttribute' => 'email'],
// ['username' ,'unique', 'targetClass' => User::className(), 'targetAttribute' => 'username'],
[['password_plain' ,'password_repeat'] ,'string','min' =>6 ],
[['password_repeat'] ,'validatePasswordRepeat' ],
[['username'] ,'validateUsername' ],
[['email'] ,'validateEmail' ],
['selected_accounts',function ($attribute, $params) {
if (!is_array($this->$attribute)) {
$this->addError($attribute, 'Invalid array');
}
}
],
['selected_trainers',function ($attribute, $params) {
if (!is_array($this->$attribute)) {
$this->addError($attribute, 'Invalid array');
}
}
],
[['role'], 'required'],
[['role'], 'string', 'max' => 20],
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
];
}
// public function validateEmail($attribute, $params){
// /** @var User $user */
// $user = User::find()
// ->andWhere(['email' => $this->email])->one();
//
// if (isset($user)){
// if ( $user->id != $this->id ){
// $this->addError($attribute,'Az email cím már használatban van!');
// }
// }
//
// }
//
// public function validateUsername($attribute, $params){
// /** @var User $user */
// $user = User::find()
// ->andWhere(['username' => $this->username])->one();
//
// if (isset($user)){
// if ( $user->id != $this->id ){
// $this->addError($attribute,'A felhasználónév már használatban van!');
// }
// }
//
// }
/**
* @formatter:on
*/
public function validatePasswordRepeat($attribute, $params) {
if (! $this->hasErrors ()) {
if ( !empty($this->password_plain) || !empty($this->password_repeat) ){
if ($this->password_plain != $this->password_repeat) {
$this->addError ( $attribute, Yii::t ( 'app', 'Jelszó és jelszó újra nem egyezik!' ) );
}
}
}
}
public function validateEmail($attribute, $params) {
if (! $this->hasErrors ()) {
if ( !empty($this->email) ){
$user = User::findOne(['email' => $this->email]);
if ( isset($user) && $user->id != $this->id){
$this->addError ( $attribute, "Az email már használatban van (".$user->username.")");
}
}
}
}
public function validateUsername($attribute, $params) {
if (! $this->hasErrors ()) {
if ( !empty($this->email) ){
$user = User::findOne(['username' => $this->username]);
if ( isset($user) && $user->id != $this->id){
$this->addError ( $attribute, "A felhasználónév már használatban van (".$user->username.")");
}
}
}
}
public function attributeLabels() {
return [
'status' => 'Státusz',
'email' => 'E-mail',
'username' => 'Felhasználónév',
'created_at' => 'Létrehozás dátuma',
'password_plain' => Yii::t ( 'app', 'Jelszó' ),
'password_repeat' => Yii::t ( 'app', 'Jelszó újra' )
]
;
}
public function beforeSave($insert) {
if (parent::beforeSave ( $insert )) {
if (! $insert) {
if ( !empty( $this->password_plain ) ) {
$this->setPassword($this->password_plain);
return true;
}
}
return true;
} else {
return false;
}
}
public function afterSave($insert, $changedAttributes){
parent::afterSave($insert, $changedAttributes);
$am = Yii::$app->authManager;
$am->revokeAll($this->id);
$role = $am->getRole($this->role);
Yii::$app->authManager->assign($role, $this->id);
}
}