REST - разграничение прав

Есть такой эндпоинт, создаем некую сущность.

var postdata = {
    user_id: 15,
    title: "Title",
    text: "Text"
}

POST /entity

В приложении есть несколько ролей - администратор, пользователь.

  • Пользователь может создавать сущности только для своего user_id.
  • Администратор может создавать сущности с любым user_id (может
    добавлять сущности любому юзеру)

Пример бєкенда

$postdata = [
    // если текущий юзер админ - берем user_id из запроса, если нет, берем user_id текущего юзера
    "user_id" => $currentUser->isAdmin() ? $request->user_id : $currentUser->id 
    "title"   => $request->title,
    "text"    => $request->text
];

Entity::create($postdata);

Проблема в том что код становится не удобным для понимания. Ибо таких проверок может быть несколько в одном запросе. Правильный ли такой подход?

Не проще ли создать отдельные эндпоинты для юзера, и для админа? Админ может изменять все, юзер только свое. Да будет дублирование кода, но код будет проще для понимания.

Как правильнее?


Ответы (0 шт):