Re: Yii2-user
Добавлено: 2015.09.25, 01:32
Замечательный модуль!
При регистрации через соц.сеть какой пароль задается пользователю?
При регистрации через соц.сеть какой пароль задается пользователю?
Код: Выделить всё
'user' => [
'class' => 'dektrium\user\Module',
'modelMap' => [
'RegisterForm' => 'app\models\RegisterForm',
],
],
Код: Выделить всё
'components' => [
'view' => [
'theme' => [
'pathMap' => [
'@dektrium/user/views' => '@app/views/user'
],
],
],
],
Код: Выделить всё
<?php
namespace app\models;
use dektrium\user\models\RegistrationForm as BaseRegistrationForm;
class RegistrationForm extends BaseRegistrationForm
{
/**
* @var string
*/
public $field;
/**
* @inheritdoc
*/
public function rules()
{
$rules = parent::rules();
$rules['fieldRequired'] = ['field', 'required'];
$rules['fieldLength'] = ['field', 'string', 'max' => 10];
return $rules;
}
}
Код: Выделить всё
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/**
* @var yii\web\View $this
* @var yii\widgets\ActiveForm $form
* @var dektrium\user\models\User $user
*/
$this->title = Yii::t('user', 'Sign up');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><?= Html::encode($this->title) ?></h3>
</div>
<div class="panel-body">
<?php $form = ActiveForm::begin([
'id' => 'registration-form',
]); ?>
<?= $form->field($model, 'field') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= Html::submitButton(Yii::t('user', 'Sign up'), ['class' => 'btn btn-success btn-block']) ?>
<?php ActiveForm::end(); ?>
</div>
</div>
<p class="text-center">
<?= Html::a(Yii::t('user', 'Already registered? Sign in!'), ['/user/security/login']) ?>
</p>
</div>
</div>
Базовый класс RegistrationForm в методе регистрации все поля в $user присваявает. Там тоже добавьте.Tivos писал(а):Всем привет. Добавил поле в форму регистрации, а оно не сохраняется в БД.
Наверное не в базовый класс добавить, а в своем классе RegistrationForm переопределить метод register().ElisDN писал(а):Базовый класс RegistrationForm в методе регистрации все поля в $user присваявает. Там тоже добавьте.Tivos писал(а):Всем привет. Добавил поле в форму регистрации, а оно не сохраняется в БД.
Отвечаю сам же на свой вопрос.vitaxa_prog писал(а): При попытке войти выдает ошибку 404. Если закомментировать строчкуКод: Выделить всё
'as backend' => 'dektrium\user\filters\BackendFilter',
То ошибка не появляется. Посмотрел код фильтра. Там просто проверка есть ли контроллер в массиве указанных.
Подскажите пожалуйста как решить эту проблему?
Код: Выделить всё
'enableGeneratingPassword' => true,
попробуйте:Arroyo писал(а):Установил Yii2-user и Yii2-RBAC. Как сделать чтобы роль присваивалась при регистрации автоматически?
Код: Выделить всё
$role = Yii::$app->authManager->getRole('RoleName');
Yii::$app->authManager->assign($role, $user->getId());
Папку очистил перезапустил - та же проблемаElisDN писал(а):Очистите web/assets и обновите страницу.
Странно, но такая ссылка заработала:ElisDN писал(а):Очистите web/assets и обновите страницу.
Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Здравствуйте, возник еще один вопрос на основе данного модуля.ElisDN писал(а):Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Создать виджет авторизации, как вариант, и там, где формируется меню, или кнопка, нажатие на которую должно вызывать модальное окно, подключать этот виджетkutuev93 писал(а):Здравствуйте, возник еще один вопрос на основе данного модуля.ElisDN писал(а):Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:
1. В модальном окне тупо выдрать див, с полной формой
2. Перед этим создать модель $model = Yii::createObject(LoginForm::className());
Работает, но идея очень некрасивая, потому что я думаю:
1. Я уже завязал логику в вид
2. Возможно, будет уязвимое место на сайте
Потенциальное решение для себя:
Нужно как то получать экземпляр модели не здесь, но тогда где, моя кнопка с авторизацией находится в хеадере шаблона, соответственно доступна из любого контроллера сайта
Спасибо
Я правильно понимаю, что в виджите будет как раз браться экземпляр модели: $model = Yii::createObject(LoginForm::className());Onotole писал(а):Создать виджет авторизации, как вариант, и там, где формируется меню, или кнопка, нажатие на которую должно вызывать модальное окно, подключать этот виджетkutuev93 писал(а):Здравствуйте, возник еще один вопрос на основе данного модуля.ElisDN писал(а): Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.
Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:
1. В модальном окне тупо выдрать див, с полной формой
2. Перед этим создать модель $model = Yii::createObject(LoginForm::className());
Работает, но идея очень некрасивая, потому что я думаю:
1. Я уже завязал логику в вид
2. Возможно, будет уязвимое место на сайте
Потенциальное решение для себя:
Нужно как то получать экземпляр модели не здесь, но тогда где, моя кнопка с авторизацией находится в хеадере шаблона, соответственно доступна из любого контроллера сайта
Спасибо
В документации написано, что можно всё переопределять. Я бы посоветовал вам унаследовать нужные части от yii-user. Я у себя в проекте так и сделал. И все прекрасно работает.kutuev93 писал(а): Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как: