UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: DZHETIGAPA от 01 Декабря 2011, 23:18:09

Название: Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 01 Декабря 2011, 23:18:09
вопрос в названии темы. Как сделать регистрацию-авторизацию по имейлу? Конечно есть варианты, например, вместо логина писать имейл.

Но как это сделать правильно?
Название: Re:Регистрация-авторизация по имейлу
Отправлено: kroxa от 01 Декабря 2011, 23:32:47
была тема востановить пароль по логину (http://umihelp.ru/forum/index.php/topic,89.msg380.html#msg380)
собственно это уже внедрили в последнею версию уми, можете сами подправить нужный файл Авторизация в системе как по логину, так и по адресу e-mail прозрачно и незаметно для пользователя (http://www.umi-cms.ru/support/hotfixes/)
смотрите тут: http://www.umi-cms.ru/files/hotfixes/18124.patch
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 02 Декабря 2011, 00:22:25
Спасибо. Обязательно гляну.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 02 Декабря 2011, 01:06:11
Мне нужно было организовать еще и регистрацию, где нет поля логин. Это сделал путем корректировки файла __register.php.

Вопрос: как сделать, чтобы мои корректировки не затерлись при обновлении?
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 02 Декабря 2011, 01:17:34
просто сделай, js заполнение скрытого поля логин, который заполняется одновременно с полем email

или скопируй макрос register_do, переделай его, положи его в __custom.php модуля users пропиши на него права в созданном тобой файле permissions.custom.php в этом же модуле и при обновлении он не перезатрется
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 17 Декабря 2011, 23:57:45
Укажите, что я делаю не так.. В файл class/midules/users/__custom.php заношу отредактированный метод register_do. Создаю файл permissions.custom.php в этой же папке, пишу  туда след строку:

<?php
$permissions = Array(
'registrate' => Array('registrate_do'),

);
?>

Но регистрация по имейлу в таком случае не происходит. Где мой косяк?
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 18 Декабря 2011, 13:51:21
попробуй назвать свою кастомную функцию не так как системную, например registrate_do_cust

я всегда избегаю дублирования названия, но никогда не проверял влияет ли это, может у тебя как раз такой случай
Название: Re:Регистрация-авторизация по имейлу
Отправлено: Vladimir от 18 Декабря 2011, 13:55:17
Вы точно уверены, что в одном модуле может быть два метода с одинаковыми названиями? А как ЮМИ узнает какой из двух применить?
Увы, но название своему придется давать отличное, и его указывать во всех местах, ссылающихся на регистрацию. Например, подумайте, что будет, когда регистрация завершится с ошибкой? не вылезет нигде ссылка по-умолчанию?
Потом не забудьдте, что есть еще редактирование настроек, и будет весьма некрасиво, если человек поменяет почту, а логин останется прежнем написании.
Вариант с js сомнителен, т.к. никто не обязан держать включенным яваскрипт исключительно для регистрации на вашем сайте.

Лично я обычно в таких случаях просто отправляю автора идеи регистрации по email по известному котокому адресу с основанием "в ЮМИ логин обязателен и не равен email. Без вариантов". В конце-концов, если этого не было в ТЗ (а в моиз случаях этого не было указано как обязательное требование), то вы не обязаны этого делать.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: Vladimir от 18 Декабря 2011, 13:56:41
Пока писал ответили.
Логика такая: ЮМИ ищет запрашиваемый метод в class.php. Если не находит, проверяет подключаемые абстрактные классы и ищет там. __custom подключается в последнюю очередь
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 18 Декабря 2011, 14:28:03
к слову стоит сказать что с версии 2.8.4.4 добавлена такая вещь

Цитировать
Авторизоваться в системе теперь можно как по логину, так и по e-mail прозрачно для пользователя (решение из коммьюнити UMI.Hub).
Название: Re:Регистрация-авторизация по имейлу
Отправлено: Vladimir от 18 Декабря 2011, 14:38:26
Авторизация и регистрация не одно и тоже.
Что-то я не помню в 2.8.5 в методе регистрации таких вещей. логин - отдельно проверяется, почта - отдельно, и оба - обязательные.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 18 Декабря 2011, 14:51:28
Цитировать
Лично я обычно в таких случаях просто отправляю автора идеи регистрации по email по известному котокому адресу с основанием "в ЮМИ логин обязателен и не равен email. Без вариантов". В конце-концов, если этого не было в ТЗ (а в моиз случаях этого не было указано как обязательное требование), то вы не обязаны этого делать.
Владимир, нельзя же так к клиенту, для них же стараемся)
Это изменение совсем не криминальная вещь, все что нам надо это, написать 3 обработчика событий

один будет срабатывать после регистрации (событие "users_registrate")
второй после изменения настроек пользователя (событие "users_settings_do")
третий при создании или изменении настроек пользователя в админке (события "systemCreateObject" и "systemModifyObject")

все обработчики будут дублировать email в поле логин.

Шаблоны для регистрации и редактирования настроек надо немного изменить. сделать поле логин скрытым и подставлять в него:
1.при регистрации: уникальное значение (например текущее время в миллисекундах), чтобы система не ругалась
2. во всех остальных случаях уже существующее значение из объекта пользователя

вроде ничего не забыл, и такой вариант предусмотрел все возможные вопросы и проблемы на пути регистрации только с email'ом
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 18 Декабря 2011, 15:11:51
Честно говоря не вижу никаких сложностей в редактировании методов settings_do, registrate_do. Если вы не можете удовлетворить минимальные требования клиента, то зачем тогда браться за разработку вообще?

Насчет переопределения методов. В большинстве админок есть определенные файлы или папки, где переопределяются методы, при этом не надо менять название метода. Но в юми видимо другая система. Тогда, админ, у меня вопрос. Например, сделаю все как ты говоришь, назову метод по-другому. но откуда юми узнает, что при регистрации нужно вызывать мой метод с моим названием, а не стандартный метод registrate_do? Вот этого как-то не понимаю. Фактически мне надо переопределить два метода: settings_do, registrate_do

Как сделать такое? Что-то не понимаю...
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 18 Декабря 2011, 16:09:07
ты можешь переопределить их и ссылки в шаблонах переделать руками (ссылку то на регистрацию ты в шаблоне прописываешь)

а для того чтобы ничего не переопределять я и предложил воспользоваться событийной моделью, так как в каждой из этих функций есть возможность вставить свои обработчики через точки событий (о чем я выше и писал)
В итоге, будут использоваться системные функции но благодаря обработчикам событий будет реализовано то, что ты хочешь
Для этого и создавались событийная модель, для расширения функционала существующих макросов.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: Vladimir от 18 Декабря 2011, 16:13:58
ЮМИ ничего сама не узнает, пока вы явно не укажете ей какой метод вызывать.Т.о. ссылка на страницу регистрации у вас будет не /users/registrate/, а /users/new_registrate/  Аналогично заменить везде название системного метода на свой.

Ну а что считать минимальными требованиями - вопрос дискуссионный.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: Vladimir от 18 Декабря 2011, 16:16:29
Да! Обработчики были бы очень к месту, но, к сожалению, проверка email при регистрации производится ДО вызова события. Это самое неприятное в данном методе. Все бы так красиво решалось...
Название: Re:Регистрация-авторизация по имейлу
Отправлено: Vladimir от 18 Декабря 2011, 16:20:22
Владимир, нельзя же так к клиенту, для них же стараемся)

Эх, наверно, да. Это меня довел последний магазан своими "а вот еще чтобы было..."
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 18 Декабря 2011, 21:43:15
Есть ли где в факе подробное описание переопределения стандартных методов? Чтобы я форум не засорял.... А то что-то делаю по описанию Владимира, но видимо что-то не так.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 18 Декабря 2011, 22:09:00
Цитировать
Это изменение совсем не криминальная вещь, все что нам надо это, написать 3 обработчика событий

один будет срабатывать после регистрации (событие "users_registrate")
второй после изменения настроек пользователя (событие "users_settings_do")
третий при создании или изменении настроек пользователя в админке (события "systemCreateObject" и "systemModifyObject")

все обработчики будут дублировать email в поле логин.

Шаблоны для регистрации и редактирования настроек надо немного изменить. сделать поле логин скрытым и подставлять в него:
1.при регистрации: уникальное значение (например текущее время в миллисекундах), чтобы система не ругалась
2. во всех остальных случаях уже существующее значение из объекта пользователя

вроде ничего не забыл, и такой вариант предусмотрел все возможные вопросы и проблемы на пути регистрации только с email'ом

Владимир, то что проверка email и логина происходит до обработки события тоже предусмотрено в моем сообщение выше.

DZHETIGAPA , я говорю про событийную модель о ней можно почитать в официальной документации api  (http://api.umi-cms.ru/events.html) , много примеров на wiki.umisoft например "События - подписка на рассылки при регистрации пользователя" (http://wiki.umisoft.ru/%D0%A1%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_-_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D0%BD%D0%B0_%D1%80%D0%B0%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8_%D0%BF%D1%80%D0%B8_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F) и на данном форуме уже приводились примеры например вот тут "Уведомление о новых комментариях на почту" (http://umihelp.ru/forum/index.php/topic,353.msg1138.html#msg1138)
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 19 Декабря 2011, 01:12:07
Разобрался. Сделал. Только одно пока понять не могу. Если я в админке смотрю список пользователей, то в качестве логина указан логин, который находился в скрытом поле логин. То есть логин у всех пользователей один, а имейл отличается в списке пользователей. Если же я захожу в сам объект конкретного пользователя, то там логин и имейл указаны верно, то есть как имейлы. Как это можно устранить? А то у меня выходит все пользователи в списке пользователей будут под одним логином, хотя на самом деле их логины отличаются
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 19 Декабря 2011, 03:26:15
а логины в админке в списке пользователей после чего стали одинаковы?

сделали как именно? через события?
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 19 Декабря 2011, 10:55:51
Да.. сделал через события...

Логины то такие какие нужны, но в списке пользователей, где поле Название, отображаются совсем не такие логины, а логин, который находится в скрытом поле и как я понял изначально заносится в БД, а потом уже я исправляю логин через события.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 19 Декабря 2011, 11:12:23
ты когда событием заполняет логин в соответсвии с полем email делаешь это примерно так ?
$user->login = $user->email;

если да, то добавь к изменению поля login еще и переименование объекта данного пользователя, то есть
$user->setName($user->email);
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 19 Декабря 2011, 11:46:01
Только я сделал вот так:

$email = $user->getValue('e-mail');
                $user->setValue('login', $email);
                $user->setName($email);

И все работает. Спасибо админ.

Буду тебе благодарен, если поможешь мне в соседней теме, где в письме с формы обратной связи приходят крокозябры.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 08 Февраля 2012, 12:50:41
Возникла проблема. В ИЕ8, ИЕ9 регистрация не проходит. Выдает ошибку. Хотя в других браузерах все гуд. В чем может быть дело?
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 08 Февраля 2012, 12:57:15
не проходит это как? какие начальные условия?

форма авторизации всплывает при помощи js или просто где-то выводиться или даже на системной странице авторизации не получается? что видно в адресной строке при попытке авторизации (не забыли ли отобразить ошибки) и т.д.
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 08 Февраля 2012, 14:23:19
В строке браузера появляется переменная error. Мол ошибка какая-то. И регистрация не проходит.

Форма авторизации не при чем. Я про форму регистрации. Нет никакого js. Хотя может юми как-то js и использует.

А как можно отобразить какая именно ошибка?
Название: Re:Регистрация-авторизация по имейлу
Отправлено: admin от 08 Февраля 2012, 14:27:18
прошу прощения, про регистрацию просмотрел, но все выше сказанное все равно подходит)

насчет ошибки при регистрации... Все такие ошибки выводит макрос %system listErrorMessages()% (http://help-dev.umi-cms.ru/system.listErrorMessages.html)

видимо в шаблоне (скорее всего основном, если это системная страница) нет этого макроса
Название: Re:Регистрация-авторизация по имейлу
Отправлено: DZHETIGAPA от 08 Февраля 2012, 14:42:49
Щас попробую ошибку вывести. А в чем может быть дело? в ИЕ никто не может зарегиться, а в остальных все гуд. Если я избавляюсь от событий и регистрации по имейлу, то все гуд работает. странно...