====== Константы ======
^ Имя ^ Значение ^ Описание ^
| ''SESSION_TIMEOUT'' | ''86400'' | Продолжительность сессии пользователя в секундах |
====== Исключения ======
^ Имя ^ Предок ^ Описание ^
| ''IDError'' | ''aw_web_tools.Error'' | Общий класс ошибок идентификации |
| ''IDCheckError'' | ''IDError'' | Ошибка проверки ID |
| ''IDNotFound'' | ''IDCheckError'' | Запрос не идентифицирован |
| ''UIDError'' | ''IDError'' | Ошибки при работе с классом пользовательского идентификатора |
====== Классы объектов ======
===== UID =====
Класс пользовательского идентификатора.
Обеспечивает хранение идентификационной информации о пользователе.
==== Свойства объекта ====
^ Свойство ^ Описание ^
| ''name'' | Имя пользователя |
| ''level'' | Заданный пользователю уровень допуска |
| ''sess_id'' | Заданный ID сессии работы с системой |
==== Конструктор ====
UID(uname, [acc_level], [sess_id], [acc_tags], [user_meta])
^ Параметр ^ Тип ^ По умолчанию ^ Описание ^
| ''uname'' | ''str'' | -- | Имя пользователя внутри системы |
| ''acc_level'' | ''int'' | ''-1'' | Уровень допуска пользователя. Интерпретация целиком на стороне приложения. |
| ''sess_id'' | ''str'' | ''None'' | Идентификатор сессии пользователя |
| ''acc_tags'' | ''Iterable[str]'' | ''None'' | Строковые константы, определяющие конкретное множество доступных пользователю ресурсов. Интерпретация целиком на стороне приложения. |
| ''user_meta'' | ''Dict[str, str]'' | ''None'' | Иная полезная приложению информация, сохранённая в виде тег-значение |
==== Преобразование в строку ====
При вызове
str(obj)
Значением будет имя пользователя.
==== get_access() ====
Получить теги доступа, заданные параметром ''acc_tags'' конструктора.
obj.get_access()
**Возвращает:** Список тегов доступа либо пустой список, если их не заданно.
==== get_meta() ====
Получить словарь метаинформации о пользователе, заданной параметром ''user_meta'' конструктора.
obj.get_meta()
**Возвращает:** Словарь с мета-информацией либо пустой словарь, если она не заданна.
==== to_dict() ====
Создаёт словарь на основе объекта. Словарь получается следующей структуры:
n: obj.name,
id: obj.sess_id
al: obj.level
a: obj.get_access()
m: obj.get_meta()
===== IDHelper =====
Класс поддержки идентификации. Может выступать в качестве **плагина ''bottle''**, а также декорировать методы обработки url данного фреймворка.
==== Конструктор ====
IDHelper(app_name, sign_secret, [sess_timeout])
^ Параметр ^ Тип ^ По умолчанию ^ Описание ^
| ''app_name'' | ''str'' | -- | Имя приложения. Допускаются цифры символы латиницы и знак ''-'', остальное запрещено |
| ''sign_secret'' | ''str'' | -- | Ключ подпись JWT для построения cookie |
| ''sess_timeout'' | ''int'' | ''SESSION_TIMEOUT'' | Время жизни сессии пользователя |
==== make_cookie() ====
Формирует объект ''Cookie'' для идентификации сессии пользователя.
obj.make_cookie([uid], [request], [is_secure], [is_httponly])
**Возвращает:** Объект [[.:cookie#Cookie]], на основе данного [[#UID]].
^ Параметр ^ Тип ^ По умолчанию ^ Описание ^
| ''uid'' | ''UID'' | ''None'' | [[#UID]] на основе которого формируется cookie. Если не задано (''None'') берётся из контекста запроса |
| ''request'' | ''bottle.BaseRequest'' | ''bottle.request'' | Экземпляр запроса, на основании которого формируется ответ. |
| ''is_secure'' | ''bool'' | ''True'' | Установить признак ''secure'' на cookie |
| ''is_httponly'' | ''bool'' | ''True'' | Установить признак ''httponly'' на cookie |
Имя cookie при этом имеет вид:
X-ID-${obj.app_name}
То есть строится на основе имени приложения, заданного при создании объекта
==== set_id() ====
Установка cookie на ответ пользователю
obj.set_id([uid], [response], [request], [is_secure], [is_httponly])
^ Параметр ^ Тип ^ По умолчанию ^ Описание ^
| ''uid'' | ''UID'' | ''None'' | [[#UID]] на основе которого формируется cookie. Если не задано (''None'') берётся из контекста запроса |
| ''response'' | ''bottle.BaseResponse'' | ''bottle.response'' | Объект ответа, на который устанавливаем cookie. |
| ''request'' | ''bottle.BaseRequest'' | ''bottle.request'' | Экземпляр запроса, на основании которого формируется ответ. |
| ''is_secure'' | ''bool'' | ''True'' | Установить признак ''secure'' на cookie |
| ''is_httponly'' | ''bool'' | ''True'' | Установить признак ''httponly'' на cookie |
==== env_id() ====
Получаем ID из контекста запроса (для случая, когда проверка и валидация ID проведена на уровне плагина или декоратора
**Метод статический**
IDHelper.env_id([request])
**Возвращает:** Объект [[#UID]], связанный с данным запросом, или возбуждает ''IDNotFound'', если он не задан.
^ Параметр ^ Тип ^ По умолчанию ^ Описание ^
| ''request'' | ''bottle.BaseRequest'' | ''bottle.request'' | Экземпляр обрабатываемого запроса. |
==== need_id() ====
Декоратор для проверки UID для заданного пути в приложении.
app = bottle.Bottle()
id_helper = IDHelper('some_name', 'some Very $ecr3t K3y')
@id_helper.need_id
@app.get('/resource'):
pass