Closed eugemos closed 2 months ago
При тестировании поняла, что пользователь с существующим user_id не сможет изменить id_hash на какой-то другой свободный. Потенциально может быть полезно изменить id_hash (без создания дублирующей записи, как сейчас в develop).
При тестировании поняла, что пользователь с существующим user_id не сможет изменить id_hash на какой-то другой свободный. Потенциально может быть полезно изменить id_hash (без создания дублирующей записи, как сейчас в develop).
Не уверен: id_hash
, ведь, напрямую выводится сайтом из user_id
, поэтому изменение id_hash
при неизменном user_id
выглядит сомнительно.
Не уверен:
id_hash
, ведь, напрямую выводится сайтом изuser_id
, поэтому изменениеid_hash
при неизменномuser_id
выглядит сомнительно.
Только если хэширующая функция не будет изменена. Ладно, вероятность того, что её поменяют, маленькая. Наверное можно не предусматривать, что id_hash могут меняться.
Сейчас при попытке изменить id_hash у существующего пользователя возвращается 400 Bad Request “Изменение id_hash у существующего пользователя запрещено.” - так и должно быть, судя по последним комментам?
Сейчас при попытке изменить id_hash у существующего пользователя возвращается 400 Bad Request “Изменение id_hash у существующего пользователя запрещено.” - так и должно быть, судя по последним комментам?
Да, пока базовое поведение такое.
Забавная история с этим id_hash
получается. Вообще-то этот PR решает задачу о запрете создания записей с одинаковым external_id
, про одинаковые id_hash
в её условии ничего не говорится. Запрет на создание двух неархивных записей с одинаковым id_hash
я ввёл по своей инициативе, потому что это прямо реальные грабли. Наличие же в БД нескольких записей с одинаковыми id_hash
, из которых только одна неархивная, никаких проблем не создаёт, хотя, конечно, так быть не должно, т.е. это свидетельствует о каких-то проблемах в работе внешнего сайта.
В связи с этим есть вопросы, @gorskyolga:
external_id
мы так и пишем, что "Пользователь удален. Обновление невозможно."Мне кажется, нужно запрещать создание двух записей (архивной и неархивной) с одинаковым id_hash.
Сообщение об ошибке можно сделать: "Указанный id_hash не может быть установлен.".
Обновил описание.
Протестировано, ок. Запрещается создание двух записей (архивной и неархивной) с одинаковым id_hash с сообщением об ошибке: "Указанный id_hash не может быть установлен."
Что сделано
Поведение эндпойнтов
api/auth/external_user_registration/fund
иapi/auth/external_user_registration/volunteer
изменено в соответствии с условиями задачи #615. Дополнительно введён запрет на создание вexternal_site_users
двух неархивных записей с одинаковымid_hash
, так как наличие таких записей приводит к непредсказуемому поведению при регистрации пользователя в боте командой\start id_hash
. Логика поведения данных эндпойнтов теперь такая (обновлено):Как проверял
Локально. Для обращения к эндпойнтам использовал страницу документации API. Для просмотра и внесения изменений в БД использовал DBeaver. При этом, перезапускал бот после изменений БД вручную. Проверил, что логика работы эндпойнтов соответствует заявленной выше.