Доступ только авторизированым пользователям

Главные вкладки

Аватар пользователя Bochagov Bochagov 16 апреля 2015 в 23:40

Добрый день!

Прошу помочь по следующей задаче:

Есть сервис, доступ к которому есть только у зарегистрированных пользователей.
Пользователей регистрирует/удаляет/меняет пароли и т.п. только администратор
То есть у пользователя нет возможности ни сменить пароль, ни восстановить его через почту
Зайти под аккаунтом можно только с одного рабочего места

Сервис работает через аякс и фактически это получается одна страница, которая не перезагружается (если конечно не нажать релоад в браузере).

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

С друпал довольно плотно общался одно время (но воле судеб давно не касался), поэтому решил делать на том, что более менее знакомо
Если есть другие, более простые варианты решения задачи, буду благодарен за наводку.

А сейчас по реализации на Drupal
1. Создал тему, страницу page.tpl.php в ней один регион "Login form"
2. В этот регион вывожу форму авторизации (если пользователь зарегистрирован, drupal форму не выводит)
3. И добавляю проверку, если пользователь не зарегистрирован, то перенаправляю его на главную
если прошёл авторизацию, дальше идёт страница сервиса.

В общем вопрос в следующем.
Насколько такая реализация правильна. В целом всё работает, но почему-то остаются сомнения, поэтому решил обратиться к коллективному разуму.
Ограничение по количеству подключений помог реализовать модуль session_limit
и перенаправление на главную после авторизации, не мудрствуя лукаво, сделал с помощью модуля login_destination

Вот код страницы page.tpl.php


<?php    
    
global $user;
    foreach(
$user->roles as $k => $v)
        if(
$v=='anonymous user'){        
            
header('Location: http://localhost/my_site_nam');
            exit;
        }
        else
            print(
"Good luck!</br>");
                
    print(
$title);
                
?>

<div id="LoginContainer">
    <?php if ($page['login_form']): ?>
        <?php print render($page['login_form']); ?>
    <?php endif; ?>
</div>
?>

Комментарии

Аватар пользователя Bochagov Bochagov 16 апреля 2015 в 23:45

Да, забыл добавить!

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

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

Буду благодарен за помощь.