Studio-Yandex-Practicum / ProCharity_back_2.0

bot ProCharity (НКО Фонд Друзья)
13 stars 13 forks source link

Баг: можно создать записи в external_site_users с одинаковым external_id #615

Closed gorskyolga closed 3 weeks ago

gorskyolga commented 1 month ago

Сейчас можно создать дублирующие записи в external_site_users с одинаковым external_id через post-запросы к эндпоинтам "api/auth/external_user_registration/fund" или "api/auth/external_user_registration/volunteer". Нужно запретить такое поведение.

Первый вариант бага:

  1. Вручную создать в таблице external_site_users запись с external_id, но без значения id_hash (или удалить id_hash для записи, созданной через эндпоинт). Такие записи есть в БД на проде.
  2. Обратиться с post-запросом к "api/auth/external_user_registration/fund" или "api/auth/external_user_registration/volunteer" так, чтобы в теле запроса значение user_id было такое же как external_id в записи в БД.
  3. В БД появится запись с дублирующим external_id. При этом была ли первая запись (без id_hash) архивной или нет, не влияет на появление второй записи.

Корректное поведение: нужно обновлять первую запись с совпадающим external_id (которая была без id_hash).

Второй вариант бага:

  1. Создать в таблице external_site_users первую запись через эндпоинт.
  2. Обратиться с post-запросом к "api/auth/external_user_registration/fund" или "api/auth/external_user_registration/volunteer" так, чтобы в теле запроса значение user_id было такое же как external_id в записи в БД, но id_hash отличался от id_hash первой записи.
  3. В БД появится запись с дублирующим external_id. При этом была ли первая запись (без id_hash) архивной или нет, не влияет на появление второй записи.

Корректное поведение: нужно возвращать ошибку "Пользователь с таким user_id уже существует."