Логины в InstantCMS 2 – открытое тестирование

+30
6.43K
Прошу протестировать вариант реализации логинов в InstantCMS 2. Если этот вариант окажется удачным, понравится пользователям и в нём будут устранены ошибки, тогда можно будет просить разработчиков InstantCMS 2 включить его в систему «из коробки». Поэтому нужна ваша активная помощь.
Иллюстрация

Встроить логины в Двойку обычным компонентом и хуками не представляется возможным, поэтому пришлось править много системных файлов. Я просмотрел и проверил всё, что смог. Но всё же предупреждаю:

Данный вариант НЕ ПРЕДНАЗНАЧЕН для использования в реальных проектах.
Он выложен тут ТОЛЬКО ДЛЯ ТЕСТИРОВАНИЯ.


Возможности:

• Логины — уникальный идентификатор пользователя на сайте. Теперь на сайте не будет двух пользователей с одинаковыми именами. Можно в шаблонах вместо ников выводить логины. Или к никам добавлять логины в скобках. Или ещё как угодно это сочетать.

• Логины вместо id в адресах профилей пользователей: site.ru/users/vasya (спасибо Fuze за идеи по оптимальной подстановке, а также за помощь и понимание).

• Есть возможность использовать логины в адресах страниц через переменную шаблона {user_login}. Например, можно создавать блоги с адресами site.ru/blogs/vasya.

• Возможность «по горячему» на работающем сайте переключаться из режима «логины» в «id» и обратно. Но зачем это нужно – не знаю. И при этом есть нюансы (см. ниже в «Особенности»)

• При включении логинов можно скрыть профили реальных админов сайта, задав им какие-то нестандартные логины вместо id=1 (или любого другого). При условии, что главный админ не будет модерировать контент, а будет только управлять сайтом, этот логин никто не узнает. Он будет выглядеть как обычный пользователь. Это повышает безопасность.

• Опциональная авторизация по логину вместо email. Это привычно для пользователей и желаемо многими вебмастерами. А также будет востребовано для корпоративных сайтов при входе сотрудников на сайт. Или при сопоставлении (связывании) пользователей сайта с пользователями корпоративной интрасети по LDAP (Active Directory, Samba). А также для сайтов с пользователями-юрлицами (авторизация по коду ОКПО фирмы, например).

• При выборе логина во время регистрации новому пользователю сразу будет показан адрес его будущей страницы с этим логином – это наглядно и повышает вероятность выбора красивых логинов пользователями (спасибо Нил™ за идею и пример кода).

• Полное управление логинами в Админке. При отключении логинов, связанные с ними поля и функции также скрываются в Админке.

• Дополнительная возможность: галка «Согласен с правилами сайта» при регистрации.

Как всё работает:

Всё очень просто. В настройках компонента «Авторизация и регистрация появились новые опции.

Галка «Запрашивать логин и использовать его в адресах вместо id»

Если она включена, то во время регистрации пользователю предлагается заполнить новое поле «Логин». При вводе логина в это поле пользователю тут же показывается, как будет выглядеть адрес его страницы. Допустимые символы: маленькие латинские буквы, цифры и «подчёркивание». Введённый логин проверяется на уникальность и сохраняется в новое поле login таблицы cms_users вместе с остальными введёнными данными.
В дальнейшем эти логины подставляются в адреса страниц пользовательских профилей и, при задании соответствующих шаблонов адресов типов контента, в адреса контента. Также при включении этой галки добавляются поля логинов в Админке.
У пользователей нет возможности изменить логины самостоятельно. Это может сделать только админ в Админке.

Если эта галка выключена, то при регистрации логин пользователя не запрашивается, а в поле login таблицы cms_users подставляются id (для возможности переключиться в режим с логинами. В адреса страниц пользовательских профилей подставляются id. Поля логинов в Админке скрыты.

Галка «Авторизация по логину вместо e-mail»

Если включена, то при авторизации запрашивается логин, если выключена – email.

Поле «Запрещенные логины»

Аналогично полю «Запрещенные никнеймы». Можно использовать маски.

Поле «Ссылка на "Правила сайта"»

Если это поле заполнено, то при регистрации внизу под всеми полями появляется галка «Я подтверждаю, что прочитал(-а) и принимаю "Пользовательское соглашение"», где под "Пользовательское соглашение" подставляется ссылка из этого поля. Кнопка «Продолжить» появляется лишь при включении галки согласия с правилами. При выключенной галке эта кнопка скрывается.

Информация для разработчиков компонентов и шаблонов:

Чтобы ваш продукт был совместим с логинами в данной реализации, вам нужно убедиться, что везде в вашем коде, где создаются адреса страниц пользовательских профилей, используется вызов функций href_to(), а не простое объединение строк. Вообще-то так и должно быть по стандарту, но мало ли… Замена id на логины в адресах производится именно в этих функциях.

«Особенности» реализации:

1. Логины вместо id подставляются только в адреса пользовательских страниц (контроллера users) вида site.ru/users/id или site.ru//users/id/что-то_ещё. В служебных адресах вида site.ru/users/action_name/id логины не подставляются и там в любом режиме остаются id. То есть подстановка делается только там, где id стоит на первом месте после имени контроллера users. Это сделано для ускорения работы подстановки.
По идее, должно работать переименование users во что-то другое (см в документации «Замена URL компонентов»).

2. Я не нашёл способа автоматической подстановки логина вместо id в меню. Поэтому в пункте «Мой профиль» в «Персональном меню» нужно будет вручную изменять ссылку на users/{user.login} при логинах и обратно на users/{user.id} при id.

3. Если в ленту активности попало событие «Дружба пользователей», то в БД сохраняется адрес профиля второго пользователя в том виде, в каком он построился на момент дружбы (по id или по логину). И при смене режима подстановки в адреса id/логинов этот адрес уже не меняется и по нему профиль пользователя может уже оказаться недоступен.

4. При использовании модулей регистрации новых пользователей из соцсетей, может понадобиться доработка этих модулей, чтобы они сохраняли логины пользователей или подставляли вместо логинов в поле login их id.

Как тестировать:

Скачайте пакет установки и стандартным образом установите его в новую InstantCMS 2.4.0 с демо-данными. Замена системных файлов и добавление/обновление нужных полей БД будет выполнено автоматически. Также автоматически включатся логины.

Вход по логину admin с заданным вами паролем для Администратора.

А далее заходите в настройки компонента «Авторизация и регистрация», включайте/выключаете логины и смотрите, удобно ли пользоваться, есть ли ошибки. Все найденные ошибки и умные мысли пишите тут в комментариях.

Скачать пакет установки версии 0.2.240

Заранее спасибо за помощь!

UPD 23.02.2016
Изменения в версии 0.2.240:
— Исправлена ошибка при обновлении аватара.
— Исправлены ошибки обновления БД. Теперь id копируются в логины для всех пользователей с пустыми логинами, кроме id=1.

UPD 28.02.2016
Создал на форуме обсуждение вариантов визуальной идентификации пользователей на сайте Ники и логины на сайте.
0
reload reload 8 лет назад #
Отличное дополнение!
мысли:
0
WebMan WebMan 8 лет назад #
reload:
1. было бы хорошо сделать авторизацию и по мылу и по логину одновременно - это удобно!)
Думал об этом. И даже сначала хотел сделать. Но потом подумал, что всё-таки нужно сделать как можно проще - или по логинам, или по мылу. Для нового проекта проблемы с незапоминанием как входить у пользователей не существует. А переводить существующие проекты на логины мало кто будет. Как мне кажется.
Если найдутся желающие пользоваться такой авторизацией и если разработчики поддержат такой универсальный вариант - сделаю.
Кому ещё нужен такой вариант, отзовитесь!

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

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

Ещё я сначала думал про вариант с раздельными опциями "Запрашивать логин при регистрации" и "Подставлять логины в адреса". И даже в текущую реализацию всё для этого уже заложено. Но подстановка логинов в адреса вместо id занимает дополнительное время. Небольшое, менее 0.5% времени скрипта на одного уникального пользователя на странице. То есть, например, для 20 разных пользователей на странице замедление будет менее 10%. Для одинаковых ссылок на пользователей логины кэшируются и времени не занимают. Если сделать такой универсальный вариант, то придётся подставлять логины всегда, даже при использовании id. Мне как-то жалко утяжелять систему там, где это не нужно.
0
Ris Ris 8 лет назад #
Когда-то давно делал хак для авторизации по никнейму:
http://instantcms.ru/forum/thread21606-1.html
Там вполне возможно было авторизоваться и по емейлу.
Попробую прикрутить проверку на уникальность именно никнейма...
0
WebMan WebMan 8 лет назад #
Использовать ники для авторизации не годится. Они могут содержать русские буквы и пробелы. Для авторизации люди давно придумали уникальные логины с ограниченным количеством универсальных символов (латиница, цифры и иногда один-два знаков препинания).

Сделать универсальную авторизацию по логину или по мылу можно. Можно даже до проверки по БД выяснять, что именно пришло, логин или почтовый адрес, а потом искать только одно сочетание.
Вопрос не в возможности. Вопрос: зачем?
0
Ris Ris 8 лет назад #
Использовать ники для авторизации не годится. Они могут содержать русские буквы и пробелы.
Могут содержать. Ни регистрации ни авторизации это не мешает. Только что проверил.

Вопрос не в возможности. Вопрос: зачем?
Вопрос религиозный.
Зачем? Для удобства пользователей. Сколько раз бывало, что юзер помнит ник и не помнит емайл, с которого регистрировался и наоборот, мыло помнит, а логин - нет.

По поводу самого дополнения:
Замена системных файлов и добавление/обновление нужных полей БД будет выполнено автоматически. Также автоматически включатся логины.

Копирование системных файлов почему-то не происходит, приходится дублировать вручную.
Хотя, возможно, это проблема самого движка.
0
WebMan WebMan 8 лет назад #
Авторизации по никам точно не будет. Для этого (в том числе) делались логины.

Универсальную авторизацию по логину и по мылу сделать постараюсь. Но реально не знаю, насколько она будет востребована.

У меня копирование при установке и обновлении работает. Убедитесь, что при установке компонента у Вас отключена галка "Пропустить этот шаг". Если она включена, то копирование пропускается.
0
Ris Ris 8 лет назад #
Да, галка была отключена. Дважды пробовал - дважды не скопировались файлы.
Возможно проблема у меня на локальном опенсервере. Да у меня еще и php7 установлено...

Универсальную авторизацию по логину и по мылу сделать постараюсь. Но реально не знаю, насколько она будет востребована.
На самом деле Вы правы. Она будет востребована только в одном случае: в интернет-магазине, куда пользователи иногда заходят раз в полгода и ничего не помнят.
Авторизации по никам точно не будет.
А мне от этого не деться никуда. При переносе сайта с первой ветки, да еще когда никто мыла своего не помнит...
Ваше решение мне тоже не подойдет, потому что большинство логинов на сайте с большой буквы.

Для нового сайта отличное решение! v
0
WebMan WebMan 8 лет назад #
Ваше решение мне тоже не подойдет, потому что большинство логинов на сайте с большой буквы.
Сейчас при регистрации запрашиваются и сохраняются логины только с прописными (маленькими) буквами. Но авторизация происходит независимо от регистра букв в логине. Так что в этом плане у Вас проблем не будет.

В адреса будут подставляться логины в том виде, в котором они хранятся в БД. Для URL лучше, если все буквы логина будут прописными. Поэтому сохранение так и сделано. Но для старых логинов из первой ветки регистр букв в адресах останется прежним.

При переносе сайта с первой ветки, да еще когда никто мыла своего не помнит...
При авторизации по логинам (как в первой ветке) свой e-mail пользователи посмотрят в своём профиле. Так что получится решение совместимое с первой веткой и обеспечивающее беспроблемный переход с неё.
0
Ris Ris 8 лет назад #
Спасибо за совет! Попробую.

При авторизации по логинам (как в первой ветке) свой e-mail пользователи посмотрят в своём профиле.
А если запрещен просмотр неавторизованным?

А вообще... вижу всё больше полезных дополнений, которые добавляют во второй инстант полезный функционал из первого. Может разработчикам обратить внимание на это?
0
WebMan WebMan 8 лет назад #
При авторизации по логинам (как в первой ветке) свой e-mail пользователи посмотрят в своём профиле.
То есть, зашёл по своему логину, открыл свой профиль и увидел. smile

Может разработчикам обратить внимание на это?
Не переживайте, разработчики всё видят. Всё идёт хорошо, своим путём. smile
0
Ris Ris 8 лет назад #
Перенес пользователей из базы от первой ветки мигратором, предварительно дописав в мигратор перенос поля login. Всё работает.
0
WebMan WebMan 8 лет назад #
Ура! smile
0
Алексей Т Алексей Т 8 лет назад #
Общий + и отлично что сделали проверку на уникальность
Забрал на тест
0
WebMan WebMan 8 лет назад #
Спасибо. Жду Вашего мнения и отзывов.
0
sosed sosed 8 лет назад #
Нужно ставить на чистую 2.4?
При установке на сайт вызывает ошибку:
Код PHP:
  1. Ошибка в запросе БД:
  2. Duplicate entry '' for key 'login'
  3. --
  4. -- Добавление поля логина
  5. --
  6. ALTER TABLE `cms_users` ADD `login` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT 'Логин' AFTER `is_admin` ,
  7. ADD UNIQUE (`login`);
0
sosed sosed 8 лет назад #
При входе на сайт пишет:
Код PHP:
  1. Unknown column 'u.login' in 'field list'
  2. SELECT i.*, u.nickname as user_nickname, u.login as user_login, f.title as folder_title
  3. FROM cms_con_news i
  4. FORCE INDEX (date_pub)
  5. INNER JOIN cms_users as u FORCE INDEX (PRIMARY) ON u.id = i.user_id
  6. LEFT JOIN cms_content_folders as f ON f.id = i.folder_id
  7. WHERE (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1')
  8. ORDER BY i.date_pub desc
  9. LIMIT 10
это не на чистой установке а на рабочей 2.4
0
sosed sosed 8 лет назад #
На чистую 2.4 установка прошла без ошибок. Буду разбираться.
0
sosed sosed 8 лет назад #
После установки/смены аватара сохранение уводит на 404, при этом открывается http://сайт.ru/users/1
0
sosed sosed 8 лет назад #
Когда я задавал вопрос, целью являлось исключить возможность создать десяток Вась к примеру на сайте, нужна жесткая идентификация пользователей при общении.
0
WebMan WebMan 8 лет назад #
Проверю сегодня вечером. Спасибо.
0
WebMan WebMan 8 лет назад #
Ошибку исправил, спасибо. Установите поверх версию 0.2.240 из топика и всё должно заработать нормально.
0
WebMan WebMan 8 лет назад #
Да, этот запрос годится только для демки с одним пользователем. Я учту этот момент и в следующем обновлении разобью его на два запроса. Спасибо.
+3
WebMan WebMan 8 лет назад #
Обновление до версии 0.2.240:
- Исправлена ошибка при обновлении аватара.
- Исправлены ошибки обновления БД. Теперь id копируются в логины для всех пользователей с пустыми логинами, кроме id=1.

Версию 0.2.240 можно устанавливать и как первую установку на свежую Двойку 2.4.0, и как обновление уже установленных логинов версии 0.1.240.

Друзья, с праздником! dance
0
sosed sosed 8 лет назад #
Вы бы не могли сделать проще? При регистрации пользователь вводит никнейм и указывает почту. Никнейм должен быть проверен (как почта) по базе и если в базе такого никнейма еще нет, то только тогда регистрировать пользователя. Т,е. проверяется и почта (это есть) и никнейм (этого нет). Нельзя допускать возможность создать пользователей с одинаковыми никнеймами. И нельзя, чтобы пользователь мог поменять никнейм после регистрации. Только если администратор сменит (обязательно должен иметь возможность).
Как сейчас все обстоит. Пользователь меняет никнейм с Миши на Олю без проблем. Может на сайте быть хоть сколько Оль, Вась и т.п. Это недопустимо, когда пользователи с одними никнеймами на сайте общаются.
Вы идете к какой-то своей, более усложненной цели, мне же нужно только то, что я описал. Этого вполне достаточно. К примеру, у меня есть жители поселка на сайте, соседи, они регистрируются, начинают общаться между собой, и тут сложность, три пользователя под одним никнеймом. Как разрулить? Админ может (должен иметь возможность) поменять, сам житель (если захочет) может поменять, но лучше не допускать. Назовется пользователь Администратором (кто помешает в двойке?) и будет прикалываться по сайту. Вот такие проблемы у меня, да и у всех наверно, кто реально сайт создает для общения людей.
0
WebMan WebMan 8 лет назад #
1. А если у Вас в посёлке окажется два Ивановых Ивана Ивановича? Тогда одному из них запретить регистрироваться под своим именем?
А если это сайт региона, а не посёлка? Или межрегиональный? Тогда таких одинаковых И.И.И. будет ещё больше.
2. Ники содержат практически ненормированные символы. Это недопустимо для входа.
3. Можно легко сделать визуально похожие, но по символам разные ники, заменив одну или более русских букв на латинские похожие. Никто не заметит. С логинами это не прокатит.

Над этой проблемой ломают головы и копья уже десятки лет. Реальных решений, как я вижу, только два:
- Использовать только уникальные логины. Они же - ники на сайте. По ним же и вход. Как на хабре, например.
- Уникальные логины или id для задания адресов страниц пользователя + неуникальные ники. Рядом с ником или при наведении на него мышки пишется ник и другие подробности о пользователе. Вход по логину или почте.

Вариант с логинами, который я предлагаю, позволит сделать любой из этих вариантов. На крайний случай, сделаю я или разработчики галку "уникальные" для ников. Но ещё раз подтверждаю, что по никам входа не будет.

Назовется пользователь Администратором (кто помешает в двойке?)
Вы помешаете smile
Видимо Вы не очень внимательно смотрели настройки Двойки и не читали в этом топике описание настроек логинов. Там есть поля для задания запрещённых к регистрации логинов и ников. Причём с масками. Например, можно запретить ники "Админ*", как это уже, кстати, по умолчанию сделано в Двойке. И описанный Вами случай отпадёт сам собой.
0
Ris Ris 8 лет назад #
Я думаю, что ник всё же тоже нужно сделать уникальным. И совместное использование латиницы и кириллицы в нике запретить (я где-то видел, это возможно).
А второй Иван Иваныч Иванов пусть придумывает другой ник. Александру Панкратову - Черному не в лом было и Иван Иваныч не переломится.
0
Kreator Kreator 8 лет назад #
По как то видимо причинам (интересно каким?) в полях в профиле пользователей нет свойства у поля "Уникальное значение"
0
Ris Ris 8 лет назад #
Проверено, что если никнейму выставить уникальное значение, то при регистрации неуникального ника выкидывает в 503.
Там ниже есть ссылка на тему, где Лоадырь подсказал решение.
0
sosed sosed 8 лет назад #
Обновил. При регистрации по логину проверяет, но на сайте отображается никнейм, а его не проверяет ...к большому сожалению.
0
Ris Ris 8 лет назад #
Если нужно - поставьте проверку ника на уникальность.
Последний пост в теме: http://instantcms.ru/forum/thread22549.html
0
sosed sosed 8 лет назад #
Надо еще и поле в профиле пользователя сделать видимым и право редактировать только админу. Для защиты от изменения. Это просто сделать. Пользователь в профиле просто перестает видеть это поле. Остается только правильная защита во время регистрации. Попробую совет по ссылке. Спасибо!
0
sosed sosed 8 лет назад #
Код PHP:
  1. LDblue, достаточно в файле system\controllers\auth\forms\form_registration.php добавить правило после строки 23:
  2. Код PHP:
  3. array('unique', 'cms_users', 'nickname')
Это работает. Не дает делать дубли. Вопрос решен.
Далее, в профиле пользователя, в поле никнейм доступ для чтения оставил всем, а доступ для изменения дал только админу.
Результат: После при регистрации не сообщает о дубле. После регистрации поле никнейм остается пустым!.
Администратор может использовать данное право править и называет пользователя самостоятельно. Только тогда на сайте у пользователя появляется имя.
Позволяет ли движок админу создать дубль никнейма? Да, заходишь в пользователи и пишешь хоть что в никнейм.
Вопрос остался: как запретить пользователю изменять свой никнейм и оставить это право у админа?
0
WebMan WebMan 8 лет назад #
sosed, Вы сейчас начали обсуждение не по теме топика, а скорее по решению Вашей личной задачи для Вашего проекта. Причём обсуждаете вариант, который не является универсальным и не может быть внедрён в систему "из коробки", что является темой этого топика. Предлагаю Вам перенести дальнейшее обсуждение Вашего варианта в более подходящее место. Например, в тему на форуме Одинаковые ники.
0
sosed sosed 8 лет назад #
Да, о чем я писал, не универсально. Ваш вариант больше подойдет для всех. Будем обсуждать его, от своего я отказываюсь, т.к. нет перспектив развития. Обсуждая же тестируемое, согласен, что ники могут быть одинаковами, и наверно это даже то, что и должно быть. Регистрация по логинам, но как все - таки отличить на сайте двух пользователей с одинаковыми именами? Что-то уже придумано? Выводить рядом и ник и логин как-то громоздко. Предлагаю значек после никнейма небольшой, скажем, круглый как смайлик, на нем абревиатура, указывающая на принадлежность к группе, а при наведении чтобы выплывал логин. Можно конечно проще, при наведении сразу выплывающее окошко с логином и возможно еще информацией. Может еще какие то решения есть? Нужно предлагать, обсуждать.
0
WebMan WebMan 8 лет назад #
Есть несколько способов. Я ещё сам для себя не выбрал. smile
Давайте соберём в список основные варианты:
1. Самый простой: показывать только логины: @vasya. Очень просто, наглядно и заставляет пользователей сразу придумывать подходящие логины. Но учитывая ограничения на символы логинов, при большом количестве пользователей будет вызывать затруднения при придумывании новых логинов. Можно к логинам добавлять символ "@" слева - это уже становится общепринятым. Как на хабре, например.
Дополнительный плюс - на мобильных устройствах сразу виден уникальный логин.
2. Показывать ники с ссылками на профиль: Вася Пупкин. При наведении мышки в строке состояния браузера будет виден адрес профиля пользователя с его логином (если включена подстановка логинов в адреса). Так сделано в первой ветке Инстанта.
На мобильных устройствах можно увидеть логин пользователя только при переходе по ссылке в его профиль.
3. Показывать рядом с никами @логины: Вася Пупкин @vasya. Можно оформлять логины и ники разными цветами для наглядности. Сходу не вспомню, где видел. Наглядно, но длинно. Зато очень чётко определяет пользователя даже на мобильных устройствах.
4. Показывать ники, а при наведении мышки всплывает окно с инфой о пользователе. Пример - Facebook. Это очень наглядно при просмотре на компах. Но на мобильных устройствах это окошко показать нет возможности, поскольку нет курсора мыши и навести нечего.
5. Показывать @логины, а при наведении мышки всплывает окно с инфой о пользователе. Пример - Твиттер. Ситуация аналогична п.4. Только на мобильных устройствах сразу виден логин, что очень удобно.
0
sosed sosed 8 лет назад #
Да, самый подходящий на мой взгляд вариант. Очень важно, чтобы для мобильников подходило! Разделить цветом, и нужно дать возможность админу, что на сайте нужно: Никнейм с логином или только что-то одно. Чтоб мог отключать отображение. Мне вариант 3 полностью нравится. Логин недоступен впоследствии для изменения админом?
0
WebMan WebMan 8 лет назад #
В текущем варианте логины могут менять только админы в Админке. Пользователям это недоступно, иначе начнётся неконтролируемый подбор похожих логинов и другая чехарда. А ники можно менять самостоятельно сколько угодно раз.

sosed:
Предлагаю значек после никнейма небольшой, скажем, круглый как смайлик, на нем абревиатура, указывающая на принадлежность к группе
Это уже каждый решит сам, как оформлять группы на своём сайте. Обычно группы админов и модераторов выделяют цветом ника/логина. Иногда под ником/логином пишут название группы. Для большинства проектов этого достаточно.
0
sosed sosed 8 лет назад #
Тестировал, на чистом сайте нормально все проходит, не пропускает повторений ни по Логинам, ни по Никнеймам. В админке меняется логин пользователя, все нормально. Ждем дальнейших обновлений.
0
WebMan WebMan 8 лет назад #
Создал тему и опрос на форуме Ники и логины на сайте. Давайте обсудим это там.
0
Soulfood Soulfood 7 лет назад #
При этом варианте новый юзер после регистрации не имеет логина вообще!
Или я что-то не так делаю?
0
WebMan WebMan 7 лет назад #
Возможно Вы не включили галку "Обязательное поле" у поля "Никнейм" и он не запрашивается при регистрации, поэтому и остаётся пустым.
0
WebMan WebMan 7 лет назад #
Кроме того, это не самый универсальный вариант реализации логинов. Есть более новый вариант. Но он требует большого количества мелких правок в шаблоне.
+1
BoAnRo BoAnRo 8 лет назад #
Прекрасно! Поддерживаю именно такой вариант - уникальные логины и неуникальные ники с выводом и ников и логинов авторов публикаций или комментариев. Тогда никаких проблем с идентификацией пользователей и в тоже время каждый может использовать свои настоящие имена, которые могут быть одинаковыми с именами других пользователей.

Спасибо большое WebMan, что начал работу в этом направлении. На выходных установлю дополнение на тестовый сайт и протестирую что смогу.
0
Нико Нико 8 лет назад #
Добрый ночи хочу дать совет так же не знаю как это сделать, но сам плохо разбираюсь в инстант.
Отключить функцию id вообще из админки он не нужен потому что может случится путаница нужно определится или это или то + добавить уведомления когда пишут в статусах + упоминания memories @ivan + хештеги.
А да и само главное нужно убрать поле где пользователь вписывает свою ссылку, потому что не каждый привык это делать, пользователь не поймет что это и уйдет от сайта, то есть если пользователь вписал логин пусть этот же логин будет ему ссылкой + и поставить редактирование пользователя, где он может отредактировать свою ссылку с лимитом 3 раза. если это возможно. остальное все супер.
0
Нико Нико 8 лет назад #
Если хотите при успешной регистрации сразу же перекидывало на сайт (не надо будет вводить опять данные для входа).

Откройте файл /system/controllers/auth/actions/register.php

Строка 6 замените это

Код PHP:
  1. if (cmsUser::isLogged()) { $this->redirectToHome(); }
на
Код PHP:
  1. if (cmsUser::isLogged() && !cmsUser::isAdmin()) { $this->redirectToHome(); }
и в этом же файле

добавляем код где то внизу

Код PHP:
  1. // если всё верно, авто-авторизация после регистрации
  2. $logged_id = cmsUser::login($user['email'], $user['password1']);
  3. if ( $logged_id ){
  4. if ($is_site_offline){
  5. $userSession = cmsUser::sessionGet('user');
  6. if (!$userSession['is_admin']){
  7. cmsUser::addSessionMessage(LANG_LOGIN_ADMIN_ONLY, 'error');
  8. cmsUser::logout();
  9. $this->redirectBack();
  10. }
  11. }
  12. cmsEventsManager::hook('auth_login', $logged_id);
  13. }
+1
Capitan Capitan 7 лет назад #
Так работает уже авторизация и регистрация по логину?
0
WebMan WebMan 7 лет назад #
В официальных релизах логинов пока нет. Когда будет - это вопрос к разработчикам.
Здесь описан всего лишь вариант хака движка. Новая, более универсальная версия такого хака в другой записи моего блога.

Еще от автора

Хуки-хухуки: Исключаем неактивных пользователей из списков
Как иногда начинают свой монолог неопытные стендаперы: «У всех в жизни было такое …
«Расширенная отладка» для InstantCMS 2.14.1 (v.14.1.2) – большое обновление для разработчиков
Новые возможности и удобства, облегчающие разработчикам отладку компонентов и шаблонов.
Использование расширенной отладки. Часть 11. Анализ ошибок 403/404 и редиректов
Одной из неудобных задач при отладке для меня является поиск причины ошибки 403/404.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.