easyAuth [1.0.0-beta]

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



Изначально компонент был разработан для платного доступа к видео-трансляции на сайте — администратор генерировал пароли, которые рассылались по почте с ограничением времени доступа.
Сейчас пришли в голову такие вот примеры использования:
  • Доступ к видеоконференции
  • Временный доступ к материалам для скачивания
  • Доступ к закрытому разделу с документами
Компонент умеет:
  • Ограничивать доступ по дате



  • Ограничивать доступ по «количеству входов»


  • Ограничивать доступ по количество времени, проведенном в «закрытом разделе»



  • Администратор в любой момент может заблокировать пользователя и его «выбросит» в течении 10 секунд


Компонент фиксирует количество входов пользователя, время в закрытом разделе.
Есть некоторые поля для пользовательской информации.



Изначально планировалось сделать привязку «открытых паролей» к пользователям MODX, даже были сделаны поля в таблицах для этого, но на текущий момент такой привязки нет.

Демка фронта: easyauth.vo-it.ru/index.php?id=2

Обратите внимание, для фиксации времени пребывания и отключения пользователя в нужный момент, каждые 10 секунд компонент шлет ajax-запрос к серверу (когда пользователь авторизован). Таким образом, немного модифицировав код, можно, например, разлогинить всех пользователей сразу. :)

Использование компонента очень простое, достаточно вызывать сниппет isLoggedIn, который принимает 2 чанка — чанк формы авторизации и чанк с закрытым контентом.

Компонент в modstore, цена 490 рублей.

P.S. для тех, кто будет говорить, что хранить пароль в открытом виде плохо — это не пароли, это «коды доступа» =)
Лев Вербицкий
17 октября 2016, 10:35
modx.pro
14
2 179
+21

Комментарии: 12

Василий Наумкин
17 октября 2016, 13:53
0
Обратите внимание, для фиксации времени пребывания и отключения пользователя в нужный момент, каждые 10 секунд компонент шлет ajax-запрос к серверу (когда пользователь авторизован).
Мне кажется, что правильнее просто ставить флаг в БД и выкидывать юзера при следующей загрузке страницы.
    Лев Вербицкий
    17 октября 2016, 14:00
    +3
    Это тоже делается, но время в любом случае, надо же как то считать время в онлайне)
Dmitry L.
24 марта 2017, 02:15
0
Товарищи, подскажите, как реализовать вывод контента (ресурсы в Коллекциях) на страницу (одна единственная, контент меняется) при входе определенного пользователя.
Например, есть коллекция ресурсов Иванов Иван — список статей, при авторизации выводятся именно ресурсы, привязанные к авторизующемуся пользователю?
Alexander V
16 апреля 2017, 11:34
0
Вы не могли бы показать пример создание пользователя без админки и получение данных о достигнутых лимитах?
API наверное какой-то есть?
rifo_BLR
19 мая 2017, 12:26
0
Демо не работает
Andre
09 августа 2017, 17:34
0
Каким образом реализовать скрытие части контента странички?
Имеется ввиду если пользователь не авторизирован часть контента по хайдом.
Такое решение используем на форумах тегами [[hide]]
Andre
09 августа 2017, 17:49
0
на вордпресе такое решение
<?php if ( is_user_logged_in() ) { 
echo "Содержание для зарегистрированных  пользователей"; } 
else { 
echo "Чтобы увидеть текст, Вам нужно авторизоваться"; } ?>
а как с MODX
    Василий Столейков
    09 августа 2017, 18:08
    +1
    Если на родном парсере MODX, то:
    [[!+modx.user.id:isloggedin:is=`1`:then=`Содержание для зарегистрированных  пользователей`:else=`Чтобы увидеть текст, Вам нужно авторизоваться`]]
    Если на парсере Fenom, то:
    {if '' | isloggedin}Содержание для зарегистрированных  пользователей{else}Чтобы увидеть текст, Вам нужно авторизоваться{/if}
    Или используя этот пакет: modx.com/extras/package/personalize (кстати, в нём можно увидеть и php-код, которые это делает.
Сергей
06 декабря 2017, 13:44
0
Можно ограничить доступ к группе ресурсов или к категории и всем вложенным ресурсам? Если да то надо будет добавлять каждый созданный ресурс в эту группу или можно как то наладить все автоматически?
    Лев Вербицкий
    06 декабря 2017, 13:51
    0
    Нет, нельзя. Компонент не для этого предназначен.
Дмитрий
12 декабря 2017, 15:58
0
Спасибо за компонент! Внезапно пригодился и дико выручил. Заказчик в восторге.
От себя хочу поделиться тем, как я привязал компонент к шаблонизатору Fenom.
Нужно было закрыть сайт целиком от посторонних глаз, а значит, закрыть вообще все страницы. Вставлять на каждый шаблон вызов сниппета и подставлять шаблон если авторизовались, или форму с авторизацией, если нет — очень топорное решение, подумал и запилил такой сниппет:
<?php
/** @var array $scriptProperties */
/** @var easyAuth $easyAuth */
if (!$easyAuth = $modx->getService('easyauth', 'easyAuth', $modx->getOption('easyauth_core_path', null, $modx->getOption('core_path') . 'components/easyauth/') . 'model/easyauth/', $scriptProperties)) {
    return 'Could not load easyAuth class!';
}
$easyAuth->loadJsCss();

if ($easyAuth->authIsLoggedIn()||$modx->user->isAuthenticated('mgr')) {
    $res = true;
} else {
    $res = false;
}

return $res;
А в шаблоне base, от которого наследуются все остальные, прописал следующее:
{var $logged = $_modx->runSnippet('!isLoggedInBoolean')}
        {if !$logged?}
            {include 'tpl.easyAuth.authForm'}
        {else}
            {block 'content'}
//тут контент сайта.
	{/block}
{/if}
Получилось, вроде бы, очень даже ничего.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
12