AlexanderZharyuk/async-auth

Реализовать эндпоинт для управления ролями у пользователя

Closed this issue · 3 comments

Что нужно сделать

Необходимо реализовать эндпоинт по следующему пути:
/api/v1/users/{id}/roles

Как нужно сделать

Роутер может принимать запросы:
GET - для просмотра ролей пользователя;
POST - для назначения роли пользователю;
DELETE - для отзыва роли у пользователя.

Запрос POST должен содержать в теле запроса:

{

    "role_id": string,
}

Запрос DELETE должен содержать в теле запроса:

{
    "role_id": string,
}

Сервис должен валидировать тело запроса в случае. Если его нет или же оно не прошло валидацию, должно выходить информативное сообщение и возвращаться код ошибки 400 Bad Request.
При передаче в теле запроса полей id, сервис должен выполнять его поиск в базе данных. В случае ошибки, возвращать сообщение, что такой id не найден и код ошибки 404 Not Found.
При запросе информации о ролях пользователя ответ должен быть вида:

{

    "roles": [Role],
}

Код должен быть покрыт юнит-тестами, которые имитируют все описываемые запросы.

Ожидаемый результат

При успешном выполнении GET запроса:

  • Информация о ролях пользователя
  • Код 200 ОК

При успешном выполнении 'POST', 'DELETE' запросов:

  • Код 200 ОК

В ином случае:

  • Информативное сообщение об ошибке
  • Код ошибки

Ответ с ролями скорее должен быть таким, как мне кажется?

"roles": [string, string]

Ответ с ролями скорее должен быть таким, как мне кажется?

"roles": [string, string]

Я подумала еще, что лучше будет тут указать объект Role.
По аналогии с выводом данных в аpi кинотеатра.
Как считаешь?

GET /api/v1/users/{id}/roles по идее должен возвращать список из объектов Role