Константы

Имя Значение Описание
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 Время жизни сессии пользователя

Формирует объект Cookie для идентификации сессии пользователя.

obj.make_cookie([uid], [request], [is_secure], [is_httponly])

Возвращает: Объект 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