EJIO.user package

Inheritance diagram of EJIO.user.flags.UserPermissions, EJIO.user.flags.UserRole, EJIO.user.model.User, EJIO.user.facade.UserFacade

Subpackages

Submodules

EJIO.user.base_error module

exception EJIO.user.base_error.UserBaseError(message: str)[исходный код]

Базовые классы: EJIOBaseError

Базовое исключение пакета user.

EJIO.user.err module

exception EJIO.user.err.FacadeNotInitializedError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой взаимодействия с неинициализированным фасадом пользователя.

exception EJIO.user.err.IncorrectLoginError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с некорректным переданным в конструктор логином.

exception EJIO.user.err.IncorrectPasswordError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой входа при некорректных данных.

exception EJIO.user.err.InvalidCredentialsError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой входа при некорректных данных.

exception EJIO.user.err.ManagerNotInitializedError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой взаимодействия с неинициализированным менеджером.

exception EJIO.user.err.SaltNotFoundError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой вызвать конструктор до генерации соли.

exception EJIO.user.err.ServiceNotInitializedError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой вызова неинициализированного сервиса.

exception EJIO.user.err.UserAlreadyAuthenticatedError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой входа при активной сессии.

exception EJIO.user.err.UserAlreadyExistsError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой регистрации уже зарегестрированного пользователя.

exception EJIO.user.err.UserBaseError(message: str)[исходный код]

Базовые классы: EJIOBaseError

Базовое исключение пакета user.

exception EJIO.user.err.UserNotAuthenticatedError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой выхода при неактивной сессии.

exception EJIO.user.err.UserNotFoundError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой входа при отсутствии запрашеваемого пользователя в базе данных.

exception EJIO.user.err.UserSessionNotFoundError(message: str)[исходный код]

Базовые классы: UserBaseError

Исключение связанное с попыткой автоматического входа при отсутствии активной сессии.

EJIO.user.facade module

class EJIO.user.facade.UserFacade(*args: tuple[object, ...], **kwargs: dict[str, object])[исходный код]

Базовые классы: StaticClass, Disposable

Центральный фасад управления пользователями. Отвечает за генерацию ID, соли, авторизацию и атомарное сохранение базы.

classmethod authenticate(login: str | None = None, password: str | None = None, remember_me: bool = False) → User[исходный код]

Синхронный метод авторизации. Проверяет логин, берет соль из БД, солит введенный пароль и сверяет хэши. В случае успеха возвращает готовый заполненный класс User.

avatar_service: FileFacade | None = None
classmethod clear() → None[исходный код]

Метод полной очистки внутреннего хранилища/состояния.

Исключение:

NotImplementedError – должен быть реализован в подклассах.

classmethod commit() → None[исходный код]
classmethod create_user(login: str, password: str, fill_gaps: bool = False) → User[исходный код]

Фабрика: принимает строго список из логина и пароля. Просит базу выдать уникальный ID, генерирует соль и ключ ровно ОДИН раз.

classmethod emit(user: User) → None[исходный код]

Фиксирует пользователя в репозитории и сохраняет зашифрованную базу на диск.

classmethod filter_users(predicate: Callable[[User], bool]) → list[User][исходный код]
classmethod get_all_users() → list[User][исходный код]
classmethod get_by_id(user_id: str) → User | None[исходный код]
classmethod initialize() → None[исходный код]
classmethod logout() → None[исходный код]

Принудительно разлогинивает пользователя и стирает файлы сессий.

EJIO.user.flags module

class EJIO.user.flags.UserPermissions(*values)[исходный код]

Базовые классы: IntFlag

Побитовые флаги разрешений системы.

ALL = 15
DELETE = 4
MANAGE_USERS = 8
NONE = 0
READ = 1
WRITE = 2
class EJIO.user.flags.UserRole(*values)[исходный код]

Базовые классы: IntEnum

Иерархический реестр ролей пользователей.

ADMIN = 4
GUEST = 1
MODERATOR = 3
ROOT = 5
USER = 2
property permissions: UserPermissions

Возвращает жестко закрепленный набор разрешений для текущей роли.

Результат:

Набор разрешений для роли.

EJIO.user.model module

class EJIO.user.model.User(id: str = '', login: str = '', name: str = '', role: UserRole = UserRole.USER, crypto_key: str = '', avatar_id: str | None = None, password_hash: str = '', salt: str = '')[исходный код]

Базовые классы: object

Модель пользователя. Сравнивается по регистронезависимому логину.

property avatar: str | None

Возвращает абсолютный путь к физическому файлу изображения в ОС.

avatar_id: str | None
classmethod create_bare(login: str) → Self[исходный код]

Внутренний фабричный метод создания «голой» заготовки пользователя. Имя по умолчанию выставляется равным логину.

crypto_key: str
classmethod from_dict(data: dict[str, Any]) → User[исходный код]

Восстанавливает объект из словаря, сохраняя все оригинальные ID с диска.

id: str
login: str
name: str
property password: str

Возвращает текущий сохраненный хэш пароля.

password_hash: str
role: UserRole
salt: str
to_dict() → dict[str, Any][исходный код]

Автоматическая сериализация свойств на базе dataclasses.asdict.

EJIO.user.repository module

class EJIO.user.repository.UserRepository[исходный код]

Базовые классы: object

Внутренний репозиторий управления коллекцией пользователей в ОЗУ. Обеспечивает потокобезопасные CRUD и SQL-подобные операции выборки.

add(user: User) → None[исходный код]
clear() → None[исходный код]
filter(predicate: Callable[[User], bool]) → list[User][исходный код]

Выполняет продвинутую фильтрацию пользователей на основе лямбда-предиката. Аналог SQL WHERE.

get_all() → list[User][исходный код]
get_all_raw() → list[dict[str, Any]][исходный код]
get_by_id(user_id: str) → User | None[исходный код]
get_by_login(login: str) → User | None[исходный код]

Ищет пользователя по уникальному логину (регистронезависимо).

load_raw_list(raw_list: list[dict[str, Any]]) → None[исходный код]

Быстрая атомарная заливка сырых словарей из файла конфигурации.

remove(user_id: str) → None[исходный код]

EJIO.user.session module

class EJIO.user.session.UserSessionManager(*args: tuple[object, ...], **kwargs: dict[str, object])[исходный код]

Базовые классы: StaticClass, Disposable

Статический менеджер пользовательских сессий («Запомнить меня»). Записывает зашифрованный токен авторизации на жесткий диск.

classmethod active_user() → User | None[исходный код]
classmethod clear() → None[исходный код]

Метод полной очистки внутреннего хранилища/состояния.

Исключение:

NotImplementedError – должен быть реализован в подклассах.

classmethod get_stored_user_id() → str | None[исходный код]

Считывает зашифрованный файл сессии и возвращает ID пользователя, если сессия валидна.

classmethod initialize(app_path: Path) → None[исходный код]
classmethod logout() → None[исходный код]

Разлогинивает пользователя и стирает сессию с диска.

classmethod save_session(user_id: str, remember_me: bool) → None[исходный код]

Сохраняет токен сессии на диск, если пользователь поставил галочку.

Module contents

class EJIO.user.User(id: str = '', login: str = '', name: str = '', role: UserRole = UserRole.USER, crypto_key: str = '', avatar_id: str | None = None, password_hash: str = '', salt: str = '')[исходный код]

Базовые классы: object

Модель пользователя. Сравнивается по регистронезависимому логину.

property avatar: str | None

Возвращает абсолютный путь к физическому файлу изображения в ОС.

avatar_id: str | None
classmethod create_bare(login: str) → Self[исходный код]

Внутренний фабричный метод создания «голой» заготовки пользователя. Имя по умолчанию выставляется равным логину.

crypto_key: str
classmethod from_dict(data: dict[str, Any]) → User[исходный код]

Восстанавливает объект из словаря, сохраняя все оригинальные ID с диска.

id: str
login: str
name: str
property password: str

Возвращает текущий сохраненный хэш пароля.

password_hash: str
role: UserRole
salt: str
to_dict() → dict[str, Any][исходный код]

Автоматическая сериализация свойств на базе dataclasses.asdict.

class EJIO.user.UserFacade(*args: tuple[object, ...], **kwargs: dict[str, object])[исходный код]

Базовые классы: StaticClass, Disposable

Центральный фасад управления пользователями. Отвечает за генерацию ID, соли, авторизацию и атомарное сохранение базы.

classmethod authenticate(login: str | None = None, password: str | None = None, remember_me: bool = False) → User[исходный код]

Синхронный метод авторизации. Проверяет логин, берет соль из БД, солит введенный пароль и сверяет хэши. В случае успеха возвращает готовый заполненный класс User.

avatar_service: FileFacade | None = None
classmethod clear() → None[исходный код]

Метод полной очистки внутреннего хранилища/состояния.

Исключение:

NotImplementedError – должен быть реализован в подклассах.

classmethod commit() → None[исходный код]
classmethod create_user(login: str, password: str, fill_gaps: bool = False) → User[исходный код]

Фабрика: принимает строго список из логина и пароля. Просит базу выдать уникальный ID, генерирует соль и ключ ровно ОДИН раз.

classmethod emit(user: User) → None[исходный код]

Фиксирует пользователя в репозитории и сохраняет зашифрованную базу на диск.

classmethod filter_users(predicate: Callable[[User], bool]) → list[User][исходный код]
classmethod get_all_users() → list[User][исходный код]
classmethod get_by_id(user_id: str) → User | None[исходный код]
classmethod initialize() → None[исходный код]
classmethod logout() → None[исходный код]

Принудительно разлогинивает пользователя и стирает файлы сессий.

class EJIO.user.UserPermissions(*values)[исходный код]

Базовые классы: IntFlag

Побитовые флаги разрешений системы.

ALL = 15
DELETE = 4
MANAGE_USERS = 8
NONE = 0
READ = 1
WRITE = 2
class EJIO.user.UserRole(*values)[исходный код]

Базовые классы: IntEnum

Иерархический реестр ролей пользователей.

ADMIN = 4
GUEST = 1
MODERATOR = 3
ROOT = 5
USER = 2
property permissions: UserPermissions

Возвращает жестко закрепленный набор разрешений для текущей роли.

Результат:

Набор разрешений для роли.