SignupForm.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2019-05-11 22:26
  7. */
  8. namespace api\models\form;
  9. use Yii;
  10. use common\models\User;
  11. class SignupForm extends \yii\base\Model
  12. {
  13. public $username;
  14. public $email;
  15. public $password;
  16. public function rules()
  17. {
  18. return [
  19. ['username', 'filter', 'filter' => 'trim'],
  20. ['username', 'required'],
  21. [
  22. 'username',
  23. 'unique',
  24. 'targetClass' => User::className(),
  25. 'message' => Yii::t('app', 'This username has already been taken')
  26. ],
  27. ['username', 'string', 'min' => 2, 'max' => 255],
  28. ['email', 'filter', 'filter' => 'trim'],
  29. ['email', 'required'],
  30. ['email', 'email'],
  31. ['email', 'string', 'max' => 255],
  32. [
  33. 'email',
  34. 'unique',
  35. 'targetClass' => User::className(),
  36. 'message' => Yii::t('app', 'This email address has already been taken')
  37. ],
  38. ['password', 'required'],
  39. ['password', 'string', 'min' => 6],
  40. ];
  41. }
  42. public function attributeLabels()
  43. {
  44. return [
  45. 'username' => Yii::t('app', 'Username'),
  46. 'email' => Yii::t('app', 'Email'),
  47. 'password' => Yii::t('app', 'Password'),
  48. ];
  49. }
  50. public function signup()
  51. {
  52. if (! $this->validate()) {
  53. return null;
  54. }
  55. $user = new User();
  56. $user->username = $this->username;
  57. $user->email = $this->email;
  58. $user->setPassword($this->password);
  59. $user->generateAuthKey();
  60. return $user->save() ? $user : null;
  61. }
  62. }