У меня проблема с моим API. Я работаю с API Platform, и я довольно новичок в этом, поэтому заранее прошу прощения, если мой вопрос может быть глупым.
В моем API есть администратор, модератор и несколько пользователей. Я хочу, чтобы только посетитель мог создавать учетные записи для пользователей. Таким образом, администратор, модератор и пользователь не могут создавать учетные записи пользователей.
Вот мой файл иерархии (security.yaml):
role_hierarchy:
ROLE_MODERATOR: ROLE_USER
ROLE_ADMIN: ROLE_MODERATOR
Вот @ApiResource моего Entity User:
* @ApiResource(
* attributes={
* "normalization_context"={"groups"={"read-user"}},
* "denormalization_context"={"groups"={"write-user"}},
* "validation_groups"=App\Validator\ValidationGroupsGenerator::class
* },
* collectionOperations={
* "get"={"method"="GET", "access_control"="is_granted('ROLE_MODERATOR')"},
* "post"={"method"="POST"}
* },
* itemOperations={
* "get"={"method"="GET", "access_control"="user.getId() === object.getId() or is_granted('ROLE_MODERATOR')"},
* "put"={"method"="PUT", "access_control"="user.getId() === object.getId() or is_granted('ROLE_MODERATOR')"}
* }
* )
Вот мой access_control (security.yaml):
access_control:
- { path: ^/users, role: IS_AUTHENTICATED_ANONYMOUSLY, methods: [POST] }
Сценарий: Я пытаюсь создать учетную запись пользователя в качестве посетителя / пользователя / модератора / администратора
Моя ошибка: Модератор, администратор и пользователь могут создать учетную запись пользователя
Ожидаемый результат: Только посетитель может создать учетную запись пользователя
Что я пробовал:
Я добавляю это в мою сущность
"post"={"method"="POST", "access_control"="user is null"}
Он не позволяет ролям создавать учетную запись пользователя (дает 403 Forbidden для них, чего я и хочу), но у меня есть 401 токен JWT, не найденный при попытке создать учетную запись в качестве посетителя сейчас.
У вас есть решение, чтобы помочь мне? Заранее спасибо