Формулировка проблемы: необходим метод аутентификации пользователя, который будет использоваться для сопряжения с модулем nginx ngx_http_auth_request_module, причём, помимо того, что должна проверяться возможность пользователя входить в систему, также (в зависимости от параметра) должна проверяться роль пользователя (суперадминистратор либо суперметодолог).
Решение: необходимо реализовать метод API, который проверяет возможность пользователя, идентифицируемого с помощью HTTP Basic Auth, входить в систему. Помимо того, если передан URI-параметр, дополнительно проверяется наличие у пользователя роли суперадминистратора либо суперметодолога.
Результат запроса - HTTP код 200 в случае успешной аутентификации, 401 - если пользователь не имеет доступа в систему, не найден или передан неправильный пароль, 403 - в случае, если он не обладает указанной ролью, 500 - ошибка на сервере.
URI метода: /rest/api/auth/{role}
.
Тип запроса: GET
.
Метод принимает следующий необязательный URI-параметр
role
- роль пользователя, с которой он хочет
авторизоваться, один из трех вариантов:
user
- пользователь (по умолчанию)
methodologist
- суперметодолог
administrator
- суперадминистратор
Если пользователь имеет доступ в систему и обладает указанной ролью, код возврата HTTP - 200.
Альтернативные потоки событий.
Альтернативный поток №1. Переданный в HTTP Basic Auth пароль пользователя неверен, такой пользователь отсутствует в системе или он не имеет доступа в систему. Сервер возвращает ошибку HTTP 401.
Альтернативный поток №2. Пользователь не обладает указанной в параметре ролью. Сервер возвращает ошибку HTTP 403.
Альтернативный поток №3. Во время выполнения метода на сервере произошла ошибка. Сервер возвращает ошибку HTTP 500.