Зарегистрируйте нового анонимного пользователя с определенной ролью через rest api в Drupal 8

Я использую сервис отдыха Drupal 8 для регистрации нового анонимного пользователя, и он отлично работает; пользователь создан в Drupal.

Затем я попытался указать настраиваемую роль, отправив запрос ниже

{
    "name": { "value": "FooBar" },
    "mail": { "value": "foo@bar.com" },
    "pass": { "value": "secretSauce" },
    "roles": [
        "my_role"
    ]
}

но я получаю ошибку

{
    "message": "Access denied on creating field 'roles'."
}

Я проверил разрешения, но не понимаю, чего не хватает.

2 ответа

Решение

Анонимный пользователь не может назначить себе роль. Drupal автоматически назначает пользователю роль "Прошедший проверку". Вы можете соответствующим образом изменить разрешения этой роли, если это соответствует вашим потребностям.

* Если вы используете отличный модуль Simple oAuth для аутентификации, вы также можете назначить пользователю, создаваемому через REST API, определенную "Область" (роль) на основе идентификатора потребителя, используемого при создании учетной записи. Затем в своем приложении вы можете создать логику для конкретной роли, которая будет назначена конкретному пользователю.

* Все это предполагает, что вы используете безголовый подход, а пользователи создаются из интерфейса JS.

РЕДАКТИРОВАТЬ

  • Создать настраиваемое поле для пользователей Drupal
  • Установите модуль правил (https://www.drupal.org/project/rules)
  • Создайте правило для действия с новым пользователем и назначьте соответствующую роль в соответствии со значением настраиваемого поля.
  • Передайте желаемое значение для настраиваемого поля из вашего внешнего интерфейса (как в вашем примере выше)

Я знаю, что это может быть очень глупо, но на самом деле у меня была такая же ошибка, и проблема заключалась в том, что я отправлял запрос GET вместо POST.

Другие вопросы по тегам