Страница 2 из 5

Re: Yii2-user

Добавлено: 2015.09.25, 01:32
faeton
Замечательный модуль!

При регистрации через соц.сеть какой пароль задается пользователю?

Re: Yii2-user

Добавлено: 2015.09.25, 16:55
Tivos
Всем привет.
Добавил поле в форму регистрации, а оно не сохраняется в БД.
Подскажите, пожалуйста в чем ошибка?
мой код, все делал по инструкции:

Код: Выделить всё

'user' => [
    'class' => 'dektrium\user\Module',
    'modelMap' => [
        'RegisterForm' => 'app\models\RegisterForm',
    ],
],

Код: Выделить всё

'components' => [
    'view' => [
        'theme' => [
            'pathMap' => [
                '@dektrium/user/views' => '@app/views/user'
            ],
        ],
    ],
],
Добавил в БД новое поле 'field'.
Создал в моделях файл "RegisterForm.php"

Код: Выделить всё

<?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;
    }
    
}
Так же создал представление "register.php"

Код: Выделить всё

<?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>
Сам модуль работает, отображается новое поле, но введенные данные в это поле не сохраняются(

Re: Yii2-user

Добавлено: 2015.09.25, 18:20
ElisDN
Tivos писал(а):Всем привет. Добавил поле в форму регистрации, а оно не сохраняется в БД.
Базовый класс RegistrationForm в методе регистрации все поля в $user присваявает. Там тоже добавьте.

Re: Yii2-user

Добавлено: 2015.09.25, 19:18
vitaxa_prog
ElisDN писал(а):
Tivos писал(а):Всем привет. Добавил поле в форму регистрации, а оно не сохраняется в БД.
Базовый класс RegistrationForm в методе регистрации все поля в $user присваявает. Там тоже добавьте.
Наверное не в базовый класс добавить, а в своем классе RegistrationForm переопределить метод register().

Re: Yii2-user

Добавлено: 2015.09.25, 19:26
vitaxa_prog
vitaxa_prog писал(а): При попытке войти выдает ошибку 404. Если закомментировать строчку

Код: Выделить всё

'as backend' => 'dektrium\user\filters\BackendFilter',

То ошибка не появляется. Посмотрел код фильтра. Там просто проверка есть ли контроллер в массиве указанных.
Подскажите пожалуйста как решить эту проблему?
Отвечаю сам же на свой вопрос.
Плохо смотрел код фильтра!
Я так и не понял какую роль выполняет этот фильтр. Почему если текущий контроллер попадает в массив предопределенных контроллеров, то возвращаем 404 ошибку? Я не стал ломать голову над тем, что задумывал автор. Просто взял и написал свой фильтр с нужной мне логикой.
Все работает. Спасибо автору за модуль. За два дня копания в нем, пришло понимание, что это весьма неплохой фундамент для расширения.

Re: Yii2-user

Добавлено: 2015.09.25, 19:29
faeton
Я тоже попал на эту ошибку

Re: Yii2-user

Добавлено: 2015.09.28, 12:39
Tivos
у этого модуля есть функция генерации пароля

Код: Выделить всё

'enableGeneratingPassword' => true, 
А как быть если на сайте есть две формы: в одной нужно ручками вносить пароль, а в другой нужно генерировать пароль?

Re: Yii2-user

Добавлено: 2015.10.30, 19:38
des1roer
как отключить подтвеждение мыла?

Re: Yii2-user

Добавлено: 2015.10.30, 20:04
ElisDN

Код: Выделить всё

'enableConfirmation' => false, 

Re: Yii2-user

Добавлено: 2015.11.18, 11:43
Arroyo
Установил Yii2-user и Yii2-RBAC. Как сделать чтобы роль присваивалась при регистрации автоматически?

Re: Yii2-user

Добавлено: 2015.11.18, 12:20
andrei.obuhovski
Arroyo писал(а):Установил Yii2-user и Yii2-RBAC. Как сделать чтобы роль присваивалась при регистрации автоматически?
попробуйте:

Код: Выделить всё

            $role = Yii::$app->authManager->getRole('RoleName');
            Yii::$app->authManager->assign($role, $user->getId());

Re: Yii2-user

Добавлено: 2016.01.27, 21:31
kutuev93
Подскажите, при выходе из системы получаю ошибку:

Method Not Allowed (#405)
Method Not Allowed. This url can only handle the following request methods: POST.

Подозреваю, что надо $depends как то измениить. Юзаю такой код:

echo Menu::widget([
'items' => [
Yii::$app->user->isGuest ?
['label' => 'Sign in', 'url' => ['/user/security/login']] :
['label' => 'Sign out (' . Yii::$app->user->identity->username . ')',
'url' => ['/user/security/logout'],
'linkOptions' => ['data-method' => 'post']

],
['label' => 'Register', 'url' => ['/user/registration/register'], 'visible' => Yii::$app->user->isGuest]
],
]);

Заранее спасибо

Re: Yii2-user

Добавлено: 2016.01.27, 22:48
ElisDN
Очистите web/assets и обновите страницу.

Re: Yii2-user

Добавлено: 2016.01.27, 23:35
kutuev93
ElisDN писал(а):Очистите web/assets и обновите страницу.
Папку очистил перезапустил - та же проблема :|
Сверху имеется:

<?php
use yii\helpers\Html;
use yii\widgets\Menu;
use app\assets\AppAsset;
AppAsset::register($this);
?>

Это массив depends в appasset:

public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];

Re: Yii2-user

Добавлено: 2016.01.28, 00:04
kutuev93
ElisDN писал(а):Очистите web/assets и обновите страницу.
Странно, но такая ссылка заработала:

<a href="<?= Url::to(['/user/security/logout'])?>" data-method="post">Выход</a>

Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?

Заранее спасибо! ;)

Re: Yii2-user

Добавлено: 2016.01.28, 00:17
ElisDN
kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.

Re: Yii2-user

Добавлено: 2016.01.29, 11:11
kutuev93
ElisDN писал(а):
kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.
Здравствуйте, возник еще один вопрос на основе данного модуля.
Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:

1. В модальном окне тупо выдрать див, с полной формой
2. Перед этим создать модель $model = Yii::createObject(LoginForm::className());

Работает, но идея очень некрасивая, потому что я думаю:

1. Я уже завязал логику в вид
2. Возможно, будет уязвимое место на сайте

Потенциальное решение для себя:

Нужно как то получать экземпляр модели не здесь, но тогда где, моя кнопка с авторизацией находится в хеадере шаблона, соответственно доступна из любого контроллера сайта


Спасибо

Re: Yii2-user

Добавлено: 2016.01.29, 11:15
Onotole
kutuev93 писал(а):
ElisDN писал(а):
kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.
Здравствуйте, возник еще один вопрос на основе данного модуля.
Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:

1. В модальном окне тупо выдрать див, с полной формой
2. Перед этим создать модель $model = Yii::createObject(LoginForm::className());

Работает, но идея очень некрасивая, потому что я думаю:

1. Я уже завязал логику в вид
2. Возможно, будет уязвимое место на сайте

Потенциальное решение для себя:

Нужно как то получать экземпляр модели не здесь, но тогда где, моя кнопка с авторизацией находится в хеадере шаблона, соответственно доступна из любого контроллера сайта


Спасибо
Создать виджет авторизации, как вариант, и там, где формируется меню, или кнопка, нажатие на которую должно вызывать модальное окно, подключать этот виджет

Re: Yii2-user

Добавлено: 2016.01.29, 12:19
kutuev93
Onotole писал(а):
kutuev93 писал(а):
ElisDN писал(а): Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.
Здравствуйте, возник еще один вопрос на основе данного модуля.
Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:

1. В модальном окне тупо выдрать див, с полной формой
2. Перед этим создать модель $model = Yii::createObject(LoginForm::className());

Работает, но идея очень некрасивая, потому что я думаю:

1. Я уже завязал логику в вид
2. Возможно, будет уязвимое место на сайте

Потенциальное решение для себя:

Нужно как то получать экземпляр модели не здесь, но тогда где, моя кнопка с авторизацией находится в хеадере шаблона, соответственно доступна из любого контроллера сайта


Спасибо
Создать виджет авторизации, как вариант, и там, где формируется меню, или кнопка, нажатие на которую должно вызывать модальное окно, подключать этот виджет
Я правильно понимаю, что в виджите будет как раз браться экземпляр модели: $model = Yii::createObject(LoginForm::className());
Далее мне нужно будет вынести форму авторизации отдельно, а в методе run() как раз отрисовывать кусок формы, все верно?

Re: Yii2-user

Добавлено: 2016.01.29, 15:17
vitaxa_prog
kutuev93 писал(а): Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:
В документации написано, что можно всё переопределять. Я бы посоветовал вам унаследовать нужные части от yii-user. Я у себя в проекте так и сделал. И все прекрасно работает.