/
peyli
/
Practice
Обзор
Документация
Войти
/
peyli
/
Practice
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
models/SignupForm.php
80 строк
2 KB
Катя
Перевод
27 июн 2026, 14:37
27 июн 2026, 14:37
e27c8eb
Код
Авторство
О чём код?
<?php namespace app\models; use Yii; use yii\base\Model; class SignupForm extends Model { public $first_name; public $username; public $last_name; public $patronymic; public $password; public $email; public $phone; public $auth_key; public $is_admin; public function rules() { return [ [['username','first_name', 'last_name', 'password', 'email', 'phone'], 'required'], [['patronymic'], 'default', 'value' => null], [['username', 'first_name', 'last_name', 'patronymic'], 'string', 'max' => 50], ['username', 'unique', 'targetClass' => User::class, 'message' => 'Этот логин уже занят'], ['password', 'string', 'min' => 6, 'message' => 'Пароль должен содержать минимум 6 символов'], ['email', 'email'], ['email', 'string', 'max' => 100], ['email', 'unique', 'targetClass' => User::class, 'message' => 'Эта почта уже занята'], ['phone', 'string', 'min' => 6], ['phone', 'unique', 'targetClass' => User::class, 'message' => 'Этот номер телефона уже занят'], [['password', 'auth_key'], 'string', 'max' => 255], [['is_admin'], 'default', 'value' => 0], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'username' => 'Логин', 'first_name' => 'Имя', 'last_name' => 'Фамилия', 'patronymic' => 'Отчество', 'email' => 'Email', 'phone' => 'Номер телефона', 'password' => 'Пароль', ]; } public function signup() { if (!$this->validate()){ return null; } $user = new User(); $user->username = $this->username; $user->first_name = $this->first_name; $user->last_name = $this->last_name; $user->patronymic = $this->patronymic; $user->email = $this->email; $user->phone = $this->phone; $user->password = Yii::$app->security->generatePasswordHash($this->password); $user->auth_key = Yii::$app->security->generateRandomString(); return $user->save() ? $user : null; } }