/
sejeenn
/
python_basic
Обзор
Документация
Войти
/
sejeenn
/
python_basic
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Module29/01_permissions/main.py
44 строки
1 KB
Eugene Vorontsov
Copy repo python basic
03 фев 2025, 20:23
03 фев 2025, 20:23
a8fce4a
Код
Авторство
О чём код?
import functools from typing import Callable def check_permission(user_name: str) -> Callable: """Декоратор (с аргументами) передаёт имя пользователя для проверки. """ authorized_user = ['admin'] def check_permission_2(func: Callable) -> Callable: """Декоратор, который проверяет, соответствует ли переданное имя пользователя разрешенному. """ @functools.wraps(func) def wrapped(*args, **kwargs) -> Callable: try: if user_name in authorized_user: return func(*args, **kwargs) else: raise PermissionError except PermissionError as er: print(er) print('У пользователя недостаточно прав, чтобы выполнить функцию {func_name}'.format( func_name=func.__name__)) return wrapped return check_permission_2 user_permissions = ['admin'] @check_permission('admin') def delete_site(): print('Удаляем сайт') @check_permission('user_1') def add_comment(): print('Добавляем комментарий') delete_site() add_comment()