наверно имеет смысл использовать встроенный функционал.
вот модели сигнап
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
if ($user->save()) {
return $user;
}
}
return null;
}
но в таблице юзер два поля password_hash и auth_key
но основании чего он догадывается создать хэш и пароль занести в другое поле?
---
в общем то я хочу вообще минимального - возможность визуального добавления юзеров и установления им роли
более менее с тем что есть разобрался. пытаюсь повторить.
1. емэйл в базе делаем не обязательным.
2. создаем модель в бэке на основании таблицы юзер
3. создаем круд в беке
4. изменяю криэйт на сигнап
yii2rbac\backend\views\user\create.php
<?php
use yii\helpers\Html;
use frontend\models\SignupForm;
/* @var $this yii\web\View */
/* @var $model backend\models\MyUser */
$this->title = 'Create My User';
$this->params['breadcrumbs'][] = ['label' => 'My Users', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="my-user-create">
<h1><?= Html::encode($this->title) ?></h1>
<?php
$model = new SignupForm();
if ($model->load(Yii::$app->request->post()))
{
if ($user = $model->signup())
{
if (Yii::$app->getUser()->login($user))
{
return $this->goHome();
}
}
}
echo $this->render('_signup', [
'model' => $model,
])
?>
</div>
yii2rbac\backend\views\user\_signup.php
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \frontend\models\SignupForm */
$this->title = 'Signup';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-signup">
<h1><?= Html::encode($this->title) ?></h1>
<p>Please fill out the following fields to signup:</p>
<div class="row">
<div class="col-lg-5">
<?php $form = ActiveForm::begin(['id' => 'form-signup']); ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<div class="form-group">
<?= Html::submitButton('Signup', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
но нифига
\yii2rbac\backend\models\MyUser.php
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->username = $this->username;
//$user->email = $this->email;
$this->password_hash = Yii::$app->security->generatePasswordHash($password);
$this->auth_key = Yii::$app->security->generateRandomString();
//$user->setPassword($this->password);
//$user->generateAuthKey();
if ($user->save()) {
return $user;
}
}
return null;
}