Авторизация по любым полям из профиля и по API

+21
2.65K
Представляю уважаемому сообществу небольшое дополнение для доработки авторизации вашего сайта, а также для интеграции двух сайтов на Instantcms друг с другом.
Дополнение выполнено в виде отдельного компонента "Расширенная авторизация" с системным именем authplus.
Дополнение состоит из двух хуков и набора опций в админке для управления работой этих хуков.
Принцип работы дополнения примерно следующий:

Иллюстрация

В админке компонента "Расширенная авторизация" можно включить/выключить опции альтернативной авторизации и настроить поля для авторизации и доступ к удаленному сайту с установленным компонентом InstantCMS JSON API .
Иллюстрация
Адрес удаленного сайта в настройках нужно вводить вместе с http:// или https://
Ключ для подключения можно скопировать в админке удаленного сайта в настройках компонента InstantCMS JSON API.
Авторизация по API возможна только по паре email — пароль! Так устроен компонент InstantCMS JSON API.
При попытке авторизации с емейлом — паролем с удаленного сайта компонент получает данные пользователя с удаленного сайта и просто регистрирует его, как нового пользователя. При этом скачивается и загружается на сайт аватар пользователя.

Внимание!

Авторизация по неуникальным полям сильно ухудшает безопасность сайта!

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

Загрузить компонент "Расширенная авторизация"

+1
vikont vikont 4 года назад #
Очень ценю ваши усилия, да еще в женский день! smile +++
Компонент конечно нужный. Инстанту явно не хватает сквозной авторизации между сайтами!!!
Но всего два сайта!!! Этого явно мало.

Считаю, что правильно - это когда пользовательские таблицы выделяются в отдельную базу или указываются в одной базе как общие для всех остальных сайтов. И для этого придется что то менять в Инстанте и расширять конфиг (или создавать дополнительный)...
Все это мечты! Когда они реализуются Fuze ответа не дает, так как понимает, что это уже начало мультисайтинга. smile
+2
Александр Александр 4 года назад #
спасибо Ris, как всегда толково, но пару вопросов,

а что будет если емаил есть и там и там с разными паролями и авторизируется на первом сайте с паролем от второго через апи?

и второй момент, к основному сайту донору (условно или серверу) можно цеплять много (условно новых) сайтов по апи, чтобы с него на них тащили свои аккаунты пользователи?
+2
Ris Ris 4 года назад #
а что будет если емаил есть и там и там с разными паролями и авторизируется на первом сайте с паролем от второго через апи?
Выпадает в ошибку 503
Код PHP:
  1. Ошибка в запросе БД:
  2. Дублирующаяся запись '***@***.ru' по ключу 'email'
Надо сделать проверку на наличие емейла.
и второй момент, к основному сайту донору (условно или серверу) можно цеплять много (условно новых) сайтов по апи, чтобы с него на них тащили свои аккаунты пользователи?
Сколько угодно.
+2
Dark Space Dark Space 4 года назад #
Спасибо вам за ваши труды Ris, с уважением.
+1
Dark Space Dark Space 4 года назад #
Админка защищена по ip.
Администратор и представители администрации сделать авторизация по ip. Доступ по айпи для админа в аккаунт. Такое делают?
+1
Ris Ris 4 года назад #
А это будет удобно вбивать айпи вместо никнейма?
+1
Dark Space Dark Space 4 года назад #
Доступы по ip. Авторизация обычная.
Так же как в админке безопасность.
(Если кто то сольет данные, то авторизоваться все равно не смогут).
?
+1
Ris Ris 4 года назад #
Если честно, я не понял, зачем это нужно.
Если уж сильно хочется - выберете в качестве альтернативного поля для авторизации например site, потом в phpmyadmin в таблице cms_controllers в колонке options исправьте site на ip.
+1
Dark Space Dark Space 4 года назад #
Это не поле. А доступ.
На хосте авторизация ограничение по ip для безопасности.
Авторизация не системная. Поэтому такой вопрос появился.
0
Dark Space Dark Space 4 года назад #
Оврал на работе, дома редко бываю. Когда будет свободное время в л/с напишу.
В безопасности не очень знаю. Спасибо;)
0
Денис Васильевич Денис Васильевич 4 года назад #
Если упрощать регистрацию, то до регистрации в один клик без запроса ввода какого либо поля ))
0
Денис Васильевич Денис Васильевич 4 года назад #
Тут лучшим вариантом был был вход через аккаунт соцсети, но не об этом.. ))
0
Ris Ris 4 года назад #
У меня стоит юлогин. Думал, щас как попрет народ регистрироваться - успевай модерировать.
За три года 10 (десять) регистраций через соцсети...
0
Денис Васильевич Денис Васильевич 4 года назад #
Может надо проще. Нажал кнопку и ты на сайте как юзер.
Если это соцети, вывести только популярные кнопки. Если без них или для соцети нет email то генерирвать email по id юзера на домен сайта. После чего предлогать сменить пароль, или если хочет получать уведомления и иметь возможность восстановить пароль в случае утери то и email или секретное слово.
0
Денис Васильевич Денис Васильевич 4 года назад #
это я делал для автризации через вк
0
Ris Ris 4 года назад #
Многим нужна авторизация по номеру телефона (поле можно сделать уникальным).
Я, например применяю авторизацию по уникальному полю логин (осталось с первой ветки).
Мало ли по каким полям можно сделать авторизацию.
Кому-то даже делал автоматическую авторизацию при добавлении контента гостем...
0
Игорь ФИН Игорь ФИН 4 года назад #
Нужно делать набор ку полей в настройках.
0
Ris Ris 4 года назад #
Обозначьте отличия ку полей от кю полей.
0
RSN RSN 4 года назад #
Обозначьте отличия ку полей от кю полей.
Спойлер
zst
0
Денис Васильевич Денис Васильевич 4 года назад #
т.е. если мы для авторизации используем своё поле то в любом случае нужно будет ввести ещё и пароль? Или возможна авторизация лишь по одному только полю?
0
Ris Ris 4 года назад #
Или возможна авторизация лишь по одному только полю?
Тогда вообще зачем нужна какая-то авторизация? Разрешить гостям всё, да и не мучаться.
0
Денис Васильевич Денис Васильевич 4 года назад #
Ну, ну не доводить до обсурда ) Нужна чтобы была привязка контента к пользователю, да и некоторые функции системы нацелены на работу с пользователем а не гостем )
0
Ris Ris 4 года назад #
Авторизация по одному полю возможна. Но тогда это должен быть некий код, где одна половина должна строго соответствовать другой.
Это в принципе та же пара логин/пароль, просто вводится в одну строку.
Олег Васильевич я Олег Васильевич я 4 года назад #
Комментарий удален
0
Денис Васильевич Денис Васильевич 4 года назад #
А в чём по твоему обсурд заключается? ))
Я предложил ещё больше упрастить регистрацию, а мне предложили вовсе отказаться от неё, это и посчитал бессмыслицей, выворачиванием на изнанку ))
+1
Ris Ris 4 года назад #
Есть вещи, которые нельзя "упрастить". Например, пароль.
Отказ от пароля === полный отказ от аутентификации.
Чтобы понять это даже не нужно быть специалистом по безопасности. Достаточно элементарной логики.
Поэтому "обстрактное" предложение авторизации по одному полю является "обсурдом".
0
Денис Васильевич Денис Васильевич 4 года назад #
Так я и не специалист, и с логика видимо у меня в прироитете )) А почему поле не может быть логином и паролем? Разве я предлагал отказаться от пароля как такового? ))
0
Денис Васильевич Денис Васильевич 4 года назад #
Это уже другой вариант )) Мы ведь не от него ветку обсуждения развили ))
0
Денис Васильевич Денис Васильевич 4 года назад #
И то был вопрос о регистрации, далее я пояснял как это можно было бы реализовать.
0
Игорь ФИН Игорь ФИН 4 года назад #
а можешь помочь разобраться с InstantCMS JSON API а то у меня не получается авторизация?
0
Dark Space Dark Space 4 года назад #
Ставить буду, компонент нужный +++++.
Год назад 25 значный сложный пароль не помог, подобрали.
0
Dark Space Dark Space 4 года назад #
Андрей, компонент регистрация и авторизация по логину, без интеграции двух сайтов на Instantcms друг с другом. Он рабочий? Самый первый вариант. Чтобы на сайт лишнее не ставить. И как с обновлениями. Нужно его обновлять каждый раз?
0
Ris Ris 4 года назад #
Да, он рабочий.
Но этот компонент без изменения системный файлов.
dmitriybarinov dmitriybarinov 4 года назад #
Комментарий удален
+1
Ris Ris 4 года назад #
Я имел в виду, что использование пары никнейм - пароль небезопасно. Или еще что-то, что может видеть любой на сайте. Номер телефона и т.д.
А диметилтетроэтилхродиддизогонию использовать можно. Парадиметиламинобензальдегид тоже хорош.

Еще от автора

Сверхлёгкий webserver на Alpine linux
Не знаю, как нормальных людей, но меня всё время мучает вопрос, зачем для размещения небольшого сайта на виртуальном сервере я вынужден устанавливать
Накрутка рейтинга и кармы пользователям, контенту и фото.
По многочисленным просьбам изготовил новый инструмент для изменения администратором сайта рейтинга и кармы пользователей.
Утилита  от @fazer для очистки upload.
Вашему вниманию предлагается утилита для очистки папки upload от неиспользуемых изображений. Написана @fazer на языке PERL.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.