py.lib.aw_web_tools
py.lib.aw_web_tools/src/aw_web_tools/id_helper.py
.. 1.202411.1 . Переделываем под новые веяния SDK * Рефакторинг
1 # coding: utf-8
2 """\
3 Модуль вспомогательных средств обеспечения идентификации пользователей
4 """
19 Общий класс ошибок идентификации
20 """
25 Ошибка проверки ID
26 """
31 Запрос не идентифицирован
32 """
39 Ошибки при работе с классом пользовательского идентификатора
40 """
45 Класс пользовательского идентификатора.
47 Обеспечивает хранение идентификационной информации о пользователе.
48 """
55 ):
57 :param uname: Имя пользователя внутри системы
58 :param acc_level: Уровень допуска пользователя. Интерпретация целиком на стороне приложения.
59 :param sess_id: Идентификатор сессии пользователя
60 :param acc_tags: Строковые константы, определяющие конкретное множество доступных пользователю ресурсов.
61 Интерпретация целиком на стороне приложения
62 :param user_meta: Иная полезная приложению информация, сохранённая в виде тег-значение
63 """
72 Преобразует объект в форму, пригодную для получения подписи сессии
73 """
85 Получить теги доступа пользователя, если они имелись
86 """
95 Получить метаданные пользователя, если они имелись.
96 """
105 Преобразование текущего состояния объекта в массив
106 """
110 )
125 Сохранение своего экземпляра в контекст запроса
126 """
129 @classmethod
132 Разбор словаря, созданного методом ``to_dict`` и восстановление из него экземпляра объекта,
133 подобного сохранённому
134 """
137 # User name
150 # Session Identity
163 # Access Level
174 )
178 # Access Tags
192 # User Metadata
209 @classmethod
212 Извлечение экземпляра объекта из контекста запроса, если он там сохранён.
213 """
227 Класс поддержки идентификации
228 """
233 ):
235 :param app_name: Имя приложения. Допускаются цифры символы латиницы и знак ``-``
236 :param sign_secret: Секрет, которым будет подписываться JWT.
237 :param sess_timeout: Время жизни сессии пользователя.
238 """
248 # Свойства необходимые для работы в качестве плагина Bottle
258 Формируем ``Cookie`` для идентификации сессии пользователя.
260 :param uid: Экземпляр ``UID``, идентифицирующий сессию. Если нет получаем из контекста запроса
261 :param request: Экземпляр запроса, на основании которого формируется ответ.
262 :param is_secure: Установить признак ``secure`` на cookie
263 :param is_httponly: Установить признак ``httponly`` на cookie
264 """
277 )
283 ):
285 Установка cookie на ответ пользователю
287 :param uid: Объект ``UID``, которым идентифицируется сессия. По умолчанию берётся из контекста запроса.
288 :param response: Объект ответа, на который устанавливаем cookie. По умолчанию ``bottle.response``
289 :param request: Экземпляр запроса, на основании которого формируется ответ. По умолчанию ``bottle.request``
290 :param is_secure: Установить признак ``secure`` на cookie
291 :param is_httponly: Установить признак ``httponly`` на cookie
292 """
293 cookie = self.make_cookie(uid=uid, request=request, is_secure=is_secure, is_httponly=is_httponly)
298 Реализация получения ID и сохранения его в контекст запроса для последующего применения
299 в других методах класса.
300 """
324 Декоратор для конкретных точек входа приложения
325 """
335 @staticmethod
338 Получаем ID из контекста запроса (для случая, когда проверка и валидация ID проведена на уровне
339 плагина или декоратора
340 """
343 # Реализация методов для работы в качестве Bottle плагина
345 pass