Хасура: Разрешить пользователям не голосовать за собственное сообщение

У меня три модели: Пользователь, Публикация, Голосование

schema

Я попытался создать авторизацию на основе ролей, при которой автор (пользователь, создающий сообщение / блог) не может голосовать за свой собственный пост / блог. Для идентификации пользователей я использовал переменные сеанса Hasura X-Hasura-User-Id. Настройка (вставка строки) Правил разрешений для таблицы голосования с помощью,

picture

Ошибка:

{
  "errors": [
    {
      "extensions": {
        "path": "$.selectionSet.insert_Vote_one.args.object",
        "code": "permission-error"
      },
      "message": "Check constraint violation. insert check constraint failed"
    }
  ]
}

Но это дало нарушение ограничений для автора и других пользователей, когда они пытались проголосовать за сообщение / блог. Как решить эту проблему в последнем случае, используя правила разрешений?

Обновлять

Настройка аутентификации

Я использую один из моих серверов аутентификации (экспресс) для создания пользователя и access_token, которые содержат user.id как переменные сеанса Hasura X-Hasura-User-Id.

Затем я использую этот access_token для поддержки авторизации на основе ролей:

access_token


person falamiw    schedule 10.12.2020    source источник
comment
Какая у вас настройка аутентификации?   -  person Abraham Labkovsky    schedule 11.12.2020
comment
Обновляю свой вопрос @AbrahamLabkovsky   -  person falamiw    schedule 11.12.2020


Ответы (1)


Похоже, вы должны установить следующее правило: X-Hasura-User-Id! = Vote.blog.User_id (при условии, что отношение хасуры называется blog для FK Vote.Blog_id).

Вместо этого вы проверяете, что Vote.User_id! = X-Hasura-User-Id. Я предполагаю, что пользователь, отправивший голосование, всегда будет иметь тот же идентификатор, что и он сам. Это всегда будет приводить к нарушению ограничений разрешений.

Если я что-то не понял ...

Сообщите нам, если это поможет.

person Abraham Labkovsky    schedule 14.12.2020
comment
Спасибо, неправильно применил правило. - person falamiw; 14.12.2020
comment
Пожалуйста! - person Abraham Labkovsky; 14.12.2020