|
|
(15 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Расширение]]/[[Доступ к ejudge из программ на Питоне]]/[[Python: Работа с базой пользователей]]/[[Python: Авторизация в базе пользователей]].
| + | [[Category:Deleted]] |
− | | |
− | В системе ejudge различается несколько уровней привилегий пользователей:
| |
− | * Обычный пользователь. Для него доступны только возможности, заданные в конфигурационном файле турнира.
| |
− | * Координатор, проверяющий, старший проверяющий. Имеют ограниченные возможности по ручной проверке решений и по назначению проверяющих на проверку решений. В данный момент эти привилегии не реализованы до конца.
| |
− | * Судья. Имеет возможность использовать административный интерфейс new-judge. Точные полномочия для судьи устанавливаются с помощью бит полномочий в конфигурационном файле турнира. В частности, к судьям относятся и наблюдатели, которые могут следить за ходом турнира, но не могут в него вмешиваться.
| |
− | * Администратор. Имеет возможность использовать административный интерфейс new-master. Точные полномочия для администраторов устанавливаются с помощью бит полномочий в конфигурационном файле турнира.
| |
− | | |
− | Авторизация выполняется один раз при работе с сервером. Уже авторизованное соединение не может быть авторизовано по-другому.
| |
− | | |
− | Уровень привилегий выбирается при начальной авторизации и также не может быть изменен в дальнейшем. Уровни привилегий не включаются друг в друга, то есть, например, администратор может не иметь прав координатора. Администратор и судья всегда могут входить как обычные пользователи.
| |
− | | |
− | Для обычных пользователей различаются два вида авторизации: общая авторизация и авторизация на конкретный турнир. Общая авторизация производится при создании новых пользователей, регистрации пользователя на турнир и т. п., то есть при выполнении операций в программе new-register. Авторизация на конкретный турнир выполняется при входе в программу new-client. Авторизация на турнир может требовать отдельного пароля, накладывать другие ограничения на IP-адреса и т. д. Поэтому для участия в турнире (сдачи задач, просмотра текущих результатов и т. д.) необходима турнирная авторизация. Для изменения регистрационных настроек необходима регистрационная авторизация.
| |
− | | |
− | И для обычных пользователей, и для привилегированных пользователей авторизация проводится либо по паре логин-пароль, либо по сессионному ключу. Сессионный ключ генерируется при авторизации по логину. Сессионный ключ действителен 24 часа.
| |
− | | |
− | Далее кратно рассматриваются поддерживаемые запросы на авторизацию соединения.
| |
− | | |
− | === Авторизация обычных пользователей ===
| |
− | | |
− | Для регистрационной авторизации по логину и паролю используется запрос login
| |
− | res = clnt.login([[ip_str|Python:ip_str]], ssl_flag, contest_id, locale_id, login, password)
| |
− | Идентификатор турнира может быть равен 0. Если операция завершилась с ошибкой выбрасывается исключение IOError. Если операция завершилась успешно, то res - это словарь следующего вида:
| |
− | { 'user_id' : user_id, 'sid' : sid, 'name' : name }
| |
− | | |
− | | |
− | === Авторизация привилегированных пользователей ===
| |