Регистрация на сайте. Структура моделей

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Andrewkha
Сообщения: 132
Зарегистрирован: 2014.11.08, 21:27

Регистрация на сайте. Структура моделей

Сообщение Andrewkha »

Друзья, всем привет

Пишу свой первый проект на Yii 2, начатый с учебной целью. Дошел до реализации регистрации пользователей на сайте. В принципе представляю, как нужно сделать, однако смущает один момент, нужен просто совет, как правильно это организовать.
Итак, есть таблица пользователей. Для простоты, с полями username, email, password (в виде хэша ессно). Есть соответствующая автоматически сгенерированная AR модель User.
делаем формочку для регистрации. И понимаем, что нам надо еще одно поле для подтверждения пароля. Какое в данном случае будет правильное решение для реализации? Я собрался создать еще одну модель singupForm и унаследовать ее от модели User, добавив еще одно свойство passwordConfirmation. Но что-то засомневался в правильности решения.
подскажите, пожалуйста, как это делается правильно с точки зрения общепринятых практик :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Регистрация на сайте. Структура моделей

Сообщение zelenin »

на гитхабе куча проектов по запросу yii2 user
Andrewkha
Сообщения: 132
Зарегистрирован: 2014.11.08, 21:27

Re: Регистрация на сайте. Структура моделей

Сообщение Andrewkha »

хочу сам реализовать
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Регистрация на сайте. Структура моделей

Сообщение zelenin »

Andrewkha писал(а):хочу сам реализовать
так реализовывайте. а ответ на ваш вопрос можно посмотреть в уже реализованных проектах.
Andrewkha
Сообщения: 132
Зарегистрирован: 2014.11.08, 21:27

Re: Регистрация на сайте. Структура моделей

Сообщение Andrewkha »

Для разбирающегося человека ответить на данный вопрос - дело 3 минут. Вы потратили уже больше времени, я так думаю. Искать проекты, разбираться, как они устроены, я буду не один час (учитывая мой начальный уровень)
Я же не попросил написать за мня код. Я попросил совет, как лучше сделать. При всем моем уважении к Вам (а Вы не раз отвечали на мои вопросы и реально помогали), я бы попросил - либо по существу, либо никак
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Регистрация на сайте. Структура моделей

Сообщение zelenin »

Andrewkha писал(а):Для разбирающегося человека ответить на данный вопрос - дело 3 минут. Вы потратили уже больше времени, я так думаю. Искать проекты, разбираться, как они устроены, я буду не один час (учитывая мой начальный уровень)
Я же не попросил написать за мня код. Я попросил совет, как лучше сделать. При всем моем уважении к Вам (а Вы не раз отвечали на мои вопросы и реально помогали), я бы попросил - либо по существу, либо никак
если вы беспокоитесь о моем потраченном времени, то думаю вы должны беспокоиться о времени любого человека, от которого ждете ответ. Поэтому не тратьте чужое время на то, что можете сами найти. Не думаю, что на разбор чужого кода может уйти больше 10 минут вместе с поиском расширения, учитывая то, что вы уже все сформулировали - осталось только зайти в модель и посмотреть.
Помочь в неординарном вопросе - это одно. Пересказать то, что реализовано десятки раз - другое.
Andrewkha
Сообщения: 132
Зарегистрирован: 2014.11.08, 21:27

Re: Регистрация на сайте. Структура моделей

Сообщение Andrewkha »

Ваша позиция ясна, спасибо
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

Re: Регистрация на сайте. Структура моделей

Сообщение PaSiS »

Выход - создать модель формы RegisterForm, со своим набором полей, некоторые из которых могут отсутствовать в модели User.
Потом, уже через модель формы, создавать нового пользователя (либо методами формы, либо вызывая соответствующие методы модели User с передачей ей уже валидированных данных).
Andrewkha
Сообщения: 132
Зарегистрирован: 2014.11.08, 21:27

Re: Регистрация на сайте. Структура моделей

Сообщение Andrewkha »

PaSiS писал(а):Выход - создать модель формы RegisterForm, со своим набором полей, некоторые из которых могут отсутствовать в модели User.
Потом, уже через модель формы, создавать нового пользователя (либо методами формы, либо вызывая соответствующие методы модели User с передачей ей уже валидированных данных).
Я думал о создании модели формы... Но в таком случае я не смогу валидировать введенные username/email на уникальность. Именно поэтому предполагал наследовать новую модель от модели users. Хотя, нутром чую, что коряво...
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

Re: Регистрация на сайте. Структура моделей

Сообщение PaSiS »

Andrewkha писал(а):
PaSiS писал(а):Выход - создать модель формы RegisterForm, со своим набором полей, некоторые из которых могут отсутствовать в модели User.
Потом, уже через модель формы, создавать нового пользователя (либо методами формы, либо вызывая соответствующие методы модели User с передачей ей уже валидированных данных).
Я думал о создании модели формы... Но в таком случае я не смогу валидировать введенные username/email на уникальность. Именно поэтому предполагал наследовать новую модель от модели users. Хотя, нутром чую, что коряво...
Да, я в такой ситуации использовал что-то подобное:

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

if (User::findOne(['email' => $this->email])) {
            $this->addError('email', 'Пользователь с этим адресом уже зарегистрирован.');
            return false;
        } 
Не знаю, есть ли способ это как-то лучше оформить
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Регистрация на сайте. Структура моделей

Сообщение zelenin »

Andrewkha писал(а):
PaSiS писал(а):Выход - создать модель формы RegisterForm, со своим набором полей, некоторые из которых могут отсутствовать в модели User.
Потом, уже через модель формы, создавать нового пользователя (либо методами формы, либо вызывая соответствующие методы модели User с передачей ей уже валидированных данных).
Я думал о создании модели формы... Но в таком случае я не смогу валидировать введенные username/email на уникальность. Именно поэтому предполагал наследовать новую модель от модели users. Хотя, нутром чую, что коряво...
https://github.com/yiisoft/yii2/blob/ma ... torunique-
Andrewkha
Сообщения: 132
Зарегистрирован: 2014.11.08, 21:27

Re: Регистрация на сайте. Структура моделей

Сообщение Andrewkha »

Спасибо.
В общем, если никто не посоветует чего-то поумнее, делаю совсем по тупому - добавляю в модель users еще одно свойство $password_repeat и работаю с моделью users, хотя, чувствую это тоже не совсем правильно... Все-таки для формы должна быть отдельная модель...
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

Re: Регистрация на сайте. Структура моделей

Сообщение PaSiS »

zelenin писал(а):
Andrewkha писал(а):
PaSiS писал(а):Выход - создать модель формы RegisterForm, со своим набором полей, некоторые из которых могут отсутствовать в модели User.
Потом, уже через модель формы, создавать нового пользователя (либо методами формы, либо вызывая соответствующие методы модели User с передачей ей уже валидированных данных).
Я думал о создании модели формы... Но в таком случае я не смогу валидировать введенные username/email на уникальность. Именно поэтому предполагал наследовать новую модель от модели users. Хотя, нутром чую, что коряво...
https://github.com/yiisoft/yii2/blob/ma ... torunique-
Спасибо! Я как-то не обращал внимания на возможность обращения к другому классу AR в этом валидаторе :)
Andrewkha
Сообщения: 132
Зарегистрирован: 2014.11.08, 21:27

Re: Регистрация на сайте. Структура моделей

Сообщение Andrewkha »

PaSiS писал(а):
zelenin писал(а):
Andrewkha писал(а): Я думал о создании модели формы... Но в таком случае я не смогу валидировать введенные username/email на уникальность. Именно поэтому предполагал наследовать новую модель от модели users. Хотя, нутром чую, что коряво...
https://github.com/yiisoft/yii2/blob/ma ... torunique-
Спасибо! Я как-то не обращал внимания на возможность обращения к другому классу AR в этом валидаторе :)
Аналогично. Спасибо
nextdrift
Сообщения: 26
Зарегистрирован: 2015.05.21, 21:54

Re: Регистрация на сайте. Структура моделей

Сообщение nextdrift »

Сейчас возникла ситуация создания аутентификации модераторов/админов.

Есть грубо говоря модераторы и пользователи. Можете подсказать как лучше организовать решение данной проблемы?

Вначале думал сделать отдельно таблицу модераторов и отдельно таблицу пользователей.
Везде примеры основаны на User.

Сам никогда таким вопросом не занимался на Yii.
Как лучше организовать базу?

Сделать таблицу Users с полем типа "type". В таблицах moderators и peoples ссылаться на user_id.
Или сделать отдельные модели для аутентификации?
nextdrift
Сообщения: 26
Зарегистрирован: 2015.05.21, 21:54

Re: Регистрация на сайте. Структура моделей

Сообщение nextdrift »

zelenin писал(а):rbac
Да вот второй день голову ломаю с ним. Вроде всё понятно, но понимаю, что я не понимаю.

Кажется всё громоздким, что не сразу понятно что и как, и где, и как это внедрить.

Есть ли на русском языке описание?
Аватара пользователя
ksetrin
Сообщения: 81
Зарегистрирован: 2015.03.06, 10:00
Контактная информация:

Re: Регистрация на сайте. Структура моделей

Сообщение ksetrin »

nextdrift писал(а):
zelenin писал(а):rbac
Да вот второй день голову ломаю с ним. Вроде всё понятно, но понимаю, что я не понимаю.

Кажется всё громоздким, что не сразу понятно что и как, и где, и как это внедрить.

Есть ли на русском языке описание?
Посмотрите пример реализации в advanced там довольно просто реализовано, настраивается для контроллера простыми правилами

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

    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'actions' => ['login', 'error'], //доступ всем
                        'allow' => true,
                    ],
                    [
                        'actions' => ['logout', 'index', 'price'],  //доступ только авторизованным
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'], // пропускать только POST остальное отвергать
                ],
            ],
        ];
    }
 
nextdrift
Сообщения: 26
Зарегистрирован: 2015.05.21, 21:54

Re: Регистрация на сайте. Структура моделей

Сообщение nextdrift »

В контроллере я вроде как разобрался. Использовать просто впринципе.

А вот в понимании модели (аутентификация + rbac) у меня происходят трудности.
Andrewkha
Сообщения: 132
Зарегистрирован: 2014.11.08, 21:27

Re: Регистрация на сайте. Структура моделей

Сообщение Andrewkha »

nextdrift писал(а):В контроллере я вроде как разобрался. Использовать просто впринципе.

А вот в понимании модели (аутентификация + rbac) у меня происходят трудности.
Почитайте книгу Mark Safronov, Jeffrey Winesett - Web Application Development with Yii 2 and PHP - 2014, там очень хорошо написано. Я тоже сначала запутался, после прочтения все стало на места. Не знаю, разрешено ли правилами форума выкладывать ссылки, но найти ее легко. Если что, обращайтесь в личку
Ответить