User.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. namespace app\models\user;
  3. use dektrium\user\helpers\Password;
  4. use dektrium\user\models\Token;
  5. use Exception;
  6. use RuntimeException;
  7. use Yii;
  8. use yii\helpers\ArrayHelper;
  9. use yii\helpers\Html;
  10. use yii\helpers\Url;
  11. use dektrium\user\models\User as BaseUser;
  12. use yii\web\Application as WebApplication;
  13. /**
  14. *
  15. * @property Organizations $organization
  16. */
  17. class User extends BaseUser
  18. {
  19. /** @inheritdoc */
  20. public function attributeLabels()
  21. {
  22. return [
  23. 'uuid' => \Yii::t('user', 'Nomer Dogovora'),
  24. 'username' => \Yii::t('user', 'Username'),
  25. 'fio' => \Yii::t('user', 'Fio'),
  26. 'cname' => \Yii::t('user', 'Company name'),
  27. 'type' => \Yii::t('user', 'Role'),
  28. 'email' => \Yii::t('user', 'Email'),
  29. 'phone' => \Yii::t('user', 'Phone'),
  30. 'address' => \Yii::t('user', 'Address'),
  31. 'balance' => \Yii::t('user', 'Balance'),
  32. 'plan_title' => \Yii::t('user', 'Plan title'),
  33. 'plan_price' => \Yii::t('user', 'Plan price'),
  34. 'payment_online' => \Yii::t('user', 'Payment online'),
  35. 'registration_ip' => \Yii::t('user', 'Registration ip'),
  36. 'unconfirmed_email' => \Yii::t('user', 'New email'),
  37. 'password' => \Yii::t('user', 'Password'),
  38. 'created_at' => \Yii::t('user', 'Registration time'),
  39. 'last_login_at' => \Yii::t('user', 'Last login'),
  40. 'confirmed_at' => \Yii::t('user', 'Confirmation time'),
  41. ];
  42. }
  43. public function scenarios()
  44. {
  45. $scenarios = parent::scenarios();
  46. return ArrayHelper::merge($scenarios, [
  47. 'api' => ['username', 'password'],
  48. ]);
  49. }
  50. /** @inheritdoc */
  51. public function rules()
  52. {
  53. return [
  54. // username rules
  55. 'usernameTrim' => ['username', 'trim'],
  56. 'usernameRequired' => ['username', 'required', 'on' => ['register', 'create', 'connect', 'update']],
  57. 'usernameMatch' => ['username', 'match', 'pattern' => static::$usernameRegexp],
  58. 'usernameLength' => ['username', 'string', 'min' => 3, 'max' => 255],
  59. 'usernameUnique' => [
  60. 'username',
  61. 'unique',
  62. 'message' => \Yii::t('user', 'This username has already been taken')
  63. ],
  64. // uuid rules
  65. 'uuidInt' => ['uuid', 'integer'],
  66. 'uuidRequired' => ['uuid', 'required', 'on' => ['register', 'create', 'connect', 'update']],
  67. 'uuidUnique' => [
  68. 'username',
  69. 'unique',
  70. 'message' => \Yii::t('user', 'This username has already been taken')
  71. ],
  72. 'fioTrim' => ['fio', 'trim'],
  73. 'cnameTrim' => ['cname', 'trim'],
  74. 'balanceInt' => [['balance', 'plan_price', 'payment_online'], 'integer'],
  75. 'planLength' => ['plan_title', 'string', 'max' => 255],
  76. 'addressLength' => ['address', 'string', 'max' => 255],
  77. 'phone' => ['phone', 'string'],
  78. 'roleIsEmpty' => ['type', 'default', 'value' => function($model){return empty($model->type) ? 'client': '';}],
  79. // email rules
  80. 'emailIsEmpty' => ['email', 'default', 'value' => function($model){return empty($model->email) ? $model->username . '@example.com': $model->email;}],
  81. 'emailTrim' => ['email', 'trim'],
  82. 'emailRequired' => ['email', 'required', 'on' => ['register', 'connect', 'create', 'update']],
  83. 'emailPattern' => ['email', 'email'],
  84. 'emailLength' => ['email', 'string', 'max' => 255],
  85. 'emailUnique2' => [
  86. 'email',
  87. 'unique',
  88. 'except' => ['api']
  89. ],
  90. 'emailUnique' => [
  91. 'email',
  92. 'unique',
  93. 'message' => \Yii::t('user', 'This email address has already been taken')
  94. ],
  95. // password rules
  96. 'passwordRequired' => ['password', 'required', 'on' => ['register']],
  97. 'passwordLength' => ['password', 'string', 'min' => 6, 'max' => 72, 'on' => ['register', 'create']],
  98. ];
  99. }
  100. public static function typeNames()
  101. {
  102. return [
  103. 'admin' => t('Адміністратор майданчика'),
  104. ];
  105. }
  106. public static function findIdentityByAccessToken($token, $type = null)
  107. {
  108. return static::findOne(['auth_key' => $token]);
  109. }
  110. /** @inheritdoc */
  111. public function beforeSave($insert)
  112. {
  113. if(!$insert){
  114. if ($this->getAttribute('balance') > $this->getOldAttribute('balance')){
  115. $this->setAttribute('payment_online', NULL);
  116. }
  117. }
  118. return parent::beforeSave($insert);
  119. }
  120. }