66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| namespace frontend\models;
 | |
| 
 | |
| use common\classes\Debug;
 | |
| use Yii;
 | |
| use yii\base\Model;
 | |
| use common\models\User;
 | |
| 
 | |
| /**
 | |
|  * Signup form
 | |
|  */
 | |
| class SignupForm extends Model
 | |
| {
 | |
|     public $username;
 | |
|     public $email;
 | |
|     public $password;
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function rules()
 | |
|     {
 | |
|         return [
 | |
|             ['username', 'trim'],
 | |
|             ['username', 'required'],
 | |
|             ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
 | |
|             ['username', 'string', 'min' => 2, 'max' => 255],
 | |
| 
 | |
|             ['email', 'trim'],
 | |
|             ['email', 'required'],
 | |
|             ['email', 'email'],
 | |
|             ['email', 'string', 'max' => 255],
 | |
|             ['email', 'unique', 'targetClass' => '\common\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()) {
 | |
|             return null;
 | |
|         }
 | |
|         
 | |
|         $user = new User();
 | |
|         $user->username = $this->username;
 | |
|         $user->email = $this->email;
 | |
|         $user->setPassword($this->password);
 | |
|         $user->generateAuthKey();
 | |
|         $user->save();
 | |
| 
 | |
|         $auth = Yii::$app->authManager;
 | |
|         $authorRole = $auth->getRole('user');
 | |
|         $auth->assign($authorRole, $user->id);
 | |
|         
 | |
|         return $user->save() ? $user : null;
 | |
|     }
 | |
| }
 | 
