From 5d69af8ebe9b3b8a36df721c7d8cf9b9bde0118b Mon Sep 17 00:00:00 2001 From: VladislavV Date: Mon, 29 Sep 2025 11:31:24 +0300 Subject: [PATCH] add dwh allowance to patch_user_info --- userdata_api/utils/user.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/userdata_api/utils/user.py b/userdata_api/utils/user.py index d26328b..9a32865 100644 --- a/userdata_api/utils/user.py +++ b/userdata_api/utils/user.py @@ -14,10 +14,12 @@ async def patch_user_info(new: UserInfoUpdate, user_id: int, user: dict[str, int """ Обновить информацию о пользователе в соотетствии с переданным токеном. - Метод обновляет только информацию из источников `admin` и `user` + Метод обновляет только информацию из источников `admin`, `user` или `dwh`. Для обновления от имени админа нужен скоуп `userdata.info.admin` + Для обновления информации из dwh нужен скоуп `userdata.info.dwh` + Для обновления от иимени пользователя необходима владениие ининформацией Обноввляет только инормацую созданную самим источником @@ -35,9 +37,14 @@ async def patch_user_info(new: UserInfoUpdate, user_id: int, user: dict[str, int "Admin source requires 'userdata.info.admin' scope", "Источник 'администратор' требует право 'userdata.info.admin'", ) - if new.source != "admin" and new.source != "user": + if new.source == "dwh" and "userdata.info.dwh" not in scope_names: + raise Forbidden( + "Dwh source requires 'userdata.info.dwh' scope", + "Источник 'dwh' требует право 'userdata.info.dwh'", + ) + if new.source != "admin" and new.source != "user" and new.source != "dwh": raise Forbidden( - "HTTP protocol applying only 'admin' and 'user' source", + "HTTP protocol applying only 'admin', 'user' or 'dwh' source", "Данный источник информации не обновляется через HTTP", ) if new.source == "user" and user["id"] != user_id: