Yii2-user

Выкладываем свои наработки
dmeroff
Сообщения: 101
Зарегистрирован: 2012.06.05, 14:32
Откуда: Петрозаводск
Контактная информация:

Yii2-user

Сообщение dmeroff »

Здравствуйте, товарищи форумчане!
Хочу представить вашему вниманию модуль для работы с пользователями для Yii2. Актуальная на данный момент версия модуля (0.4.0) содержит следующие возможности:
  • Регистрация с опциональным подтверждение email
  • Авторизация по email и по username
  • Восстановление пароля
  • Панель управления пользователями
  • Консольные команды
  • Опциональная каптча на все важные действия
Демо приложения, использующего модуль, можно посмотреть здесь (код на Github). Все инструкции по установке и настройке есть в документации.
Обещаю оперативное исправление багов, сообщать о которых лучше всего в issue-трекер. Если будут какие-либо вопросы, обращайтесь - помогу, чем смогу :)

P.S. Предложения и критика приветствуются.
P.P.S. На мой взгляд, не лишним было бы разделить "Авторский код и библиотеки" на две части (для Yii1 и Yii2 соответственно).
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Yii2-user

Сообщение maleks »

для такого модуля не лишним функционал проверки сложности пароля.

В паролях пробелы по бокам игнорируете или нет?

Как то под такое название модуля ожидания чего то большего :) :
- управление профилем пользователя и в т.ч. обязательно аватаркой
- блокирование/разблокирование пользователя
- для простой схемы(когда в файле хранятся права) прав на основе RBAC, обычно роль пользователя хранят в таблице пользователя. У вас нет такого поля. Вообще какая то связка с модулем управления всех этих прав и доступов.
- не только страница логина.регистрации а и блоки.
Yii2 universal module sceleton - for basic and advanced templates
dmeroff
Сообщения: 101
Зарегистрирован: 2012.06.05, 14:32
Откуда: Петрозаводск
Контактная информация:

Re: Yii2-user

Сообщение dmeroff »

Спасибо за фидбек, по поводу пароля:
- Для проверки сложности пароля я встроил http://antelle.github.io/passfield/index.html ( + у этой либы есть еще несколько приятных плюшек)
- Пробелы с краев пароля не обрезаются
Все остальное, что вы перечислили есть в планах и будет реализовано как можно быстрее.
knowill
Сообщения: 74
Зарегистрирован: 2012.12.11, 16:27
Контактная информация:

Re: Yii2-user

Сообщение knowill »

dmeroff писал(а): P.S. Предложения и критика приветствуются.
поддержка других бд, будет плюсом.
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Yii2-user

Сообщение lancedevnull »

супер что с тестами :) а что уиишный кейс не по нраву? вот тут я бы айдишники вынес в отдельные переменные
https://github.com/dektrium/yii2-user/b ... erPage.php
а так супер, молодца! сколько времени заняло, если не секрет?
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Yii2-user

Сообщение lancedevnull »

вот тут ты пишешь тест https://github.com/dektrium/yii2-user/b ... ryTest.php создаешь Factory https://github.com/dektrium/yii2-user/b ... ryTest.php
связать аттрибуты огородит от каких либо проблем при изменении поля %) ты рубиист?
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Yii2-user

Сообщение lancedevnull »

https://github.com/dektrium/yii2-user/b ... st.php#L22
$this->assertInstanceOf($this->factory->modelClass, $user);
так поинтереснее мне кажется)
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Yii2-user

Сообщение lancedevnull »

и создавать тестовые записи через модели, это как то не интересно, тестовые я фигачу через буилдер :) а вообще надо с фикстурами разобраться, да туда повыносить )))
dmeroff
Сообщения: 101
Зарегистрирован: 2012.06.05, 14:32
Откуда: Петрозаводск
Контактная информация:

Re: Yii2-user

Сообщение dmeroff »

lancedevnull, пилю в неспешном темпе с ноября. Да, тесты хорошо бы отрефакторить, учту советы, спасибо :)
knowill, постараюсь сделать поддержку PostgreSQL к следующему релизу, насчет других БД не уверен (если есть желание и возможности присылайте пулл-реквесты ;) )
dmeroff
Сообщения: 101
Зарегистрирован: 2012.06.05, 14:32
Откуда: Петрозаводск
Контактная информация:

Re: Yii2-user

Сообщение dmeroff »

После долгого перерыва релизнул новую версию. Из заметных улучшений могу выделить управление аккаунтом (смена почты, пароля и редактирование профиля), страница профиля пользователя, улучшения в представлениях админки, блокировка пользователя, рефакторинг тестов (теперь используются миграции и фикстуры).

Со следующим релизом надеюсь не затягивать, в него точно виджеты (пользовательское меню и форма входа), поддержка PostgreSQL и авторизация через социальные сети. Внимательно выслушаю пожелания к следующему релизу.

Задавать вопросы по модулю можно здесь или в чате.
Полный список изменений здесь
Инструкции по установке тут
devv
Сообщения: 39
Зарегистрирован: 2015.04.26, 22:37

Re: Yii2-user

Сообщение devv »

Не надеюсь, что автор мне ответит но тем не менее.
Модуль хорош, но у меня есть конкретные особенности, в частности вывод содержимого в модальном окне. С js подгружаю содержимое /user/security/login, но выводится оно через обычный render, а мне бы хотелось через renderAjax, поэтому все выглядит криво а ещё с доп. ресурсами. Файлы в вендоре валяются, лезть туда нельзя. Можно как-нибудь решить это?
rommcr
Сообщения: 128
Зарегистрирован: 2014.12.24, 16:35

Re: Yii2-user

Сообщение rommcr »

Через соцсети только авторизация? Регистрации через соцсети нет?
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Yii2-user

Сообщение chesar »

rommcr писал(а):Через соцсети только авторизация? Регистрации через соцсети нет?
Из коробки врядли. Не смотрел, но знаю тут есть одно НО.
Как вы будете идентефицировать пользователя. В мире где пони какают радугой у пользователя один email. Но не все соц. сети предоставляют email, т.к. Задача oAuth доказать авторизованность, а не раз глашатаю его данные.
rommcr
Сообщения: 128
Зарегистрирован: 2014.12.24, 16:35

Re: Yii2-user

Сообщение rommcr »

Идентифицировать - по уникальному ID пользователя в соцсети. При регистрации вместе со всеми данными сохраняете этот ID.
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Yii2-user

Сообщение chesar »

rommcr писал(а):Идентифицировать - по уникальному ID пользователя в соцсети. При регистрации вместе со всеми данными сохраняете этот ID.
В чём смысл такой регистрации? Пароль и все операции с ним не нужны. Уведомления, рассылки отправлять некуда. Только запись в базе и какая-нибудь аналитика.
rommcr
Сообщения: 128
Зарегистрирован: 2014.12.24, 16:35

Re: Yii2-user

Сообщение rommcr »

Смысл - в регистрации в пару кликов и в привязке аккаунта соцсети к аккаунту в системе на этапе регистрации. Обязательные установочные поля (имя, email) импортируются из данных, предоставленных соцсетью (с возможностью изменить их), и в запись пользователя добавляется его ID в соцсети, идентификация пользователя при логине через соцсеть происходит именно по этому параметру, а не по email
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Yii2-user

Сообщение chesar »

Привязка аккаунта соц.сети к учетке !== регистрация через соц. сети
dmeroff
Сообщения: 101
Зарегистрирован: 2012.06.05, 14:32
Откуда: Петрозаводск
Контактная информация:

Re: Yii2-user

Сообщение dmeroff »

Регистрация через соцсеть реализуется следующим образом: если соцсеть вернула email, то создаем аккаунт с таким email и авторизуем пользователя. Если email соцсеть не возвращает, то показывается форма ввода email, после чего создается новый аккаунт, к которому привязывается аккаунт соцсети. К тому же на странице настроек аккаунта можно привязать несколько соцсетей.
rommcr
Сообщения: 128
Зарегистрирован: 2014.12.24, 16:35

Re: Yii2-user

Сообщение rommcr »

Дырявенько как-то..

После регистрации через соцсеть (google +) я был перенаправлен на ссылку вида http://yii2-user.dmeroff.ru/user/regist ... unt_id=xxx дабы указать email.

Если вручную менять ID по указанному адресу, рано или поздно попадаю на чей-то аккаунт, кто не указал email. Указываю какой-то мусор - и я внутри.

Например, вот: http://yii2-user.dmeroff.ru/user/regist ... unt_id=210
Аватара пользователя
vitaxa_prog
Сообщения: 306
Зарегистрирован: 2011.06.06, 22:44
Откуда: Волноваха

Re: Yii2-user

Сообщение vitaxa_prog »

Доброго времени суток.
Вопрос к автору:
Использую yii2-advanced шаблон. Установил модуль yii2-user через composer.
Для frontend все работает хорошо. А вот для backend не совсем хорошо.
В конфиге backend/config/main указал:

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

'modules' => [
        'user'=>[
            'class' => 'dektrium\user\Module',
            'as backend' => 'dektrium\user\filters\BackendFilter',
        ],
        'rbac' => [
            'class' => 'dektrium\rbac\Module',
        ],
    ],
    'components' => [
        'user' => [
            'identityClass' => 'dektrium\user\models\User',
            'enableAutoLogin' => true,
            'identityCookie' => [
                'name'     => '_backendIdentity',
                'path'     => '/admin',
                'httpOnly' => true,
            ],
        ],
        'session' => [
            'name' => 'BACKENDSESSID',
            'cookieParams' => [
                'httpOnly' => true,
                'path'     => '/admin',
            ],
        ],
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
        'request'=>[
            'class' => 'common\components\Request',
            'web'=> '/backend/web',
            'adminUrl' => '/admin'
        ], 
В итоге у меня получаются url вида site.loc/admin/user/login и site.loc/admin/user/logout

При попытке войти выдает ошибку 404. Если закомментировать строчку

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

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

То ошибка не появляется. Посмотрел код фильтра. Там просто проверка есть ли контроллер в массиве указанных.
Я смутно догадываюсь, что дело в url rules. Но как прописать правила и где, не совсем понимаю.
Подскажите пожалуйста как решить эту проблему?
В принципе ничего нет невозможного.
— Вы думаете?
— Для человека. С интеллектом.
Ответить