Как отключить Sylius Admin API?
Документальная статья Sylius Как отключить магазин по умолчанию, админку или API Sylius? показывает, как отключить некоторые части системы. Сейчас я хочу добиться своего рода частичного отключения маршрутов API: маршруты администратора должны быть отключены. Я мог бы обратиться к ресурсам XML без
api_resources
и деактивируйте их по одному. Но разве нет более элегантного подхода?
Как отключить маршруты Admin API («централизованно») в Sylius?
3 ответа
You can decorate the Open API specification factory and remove these routes.Sylius currently is locked to API Platform v2.5 and does not work with v2.6, so here's the corresponding docs on how to customize the Open API docs: https://github.com/api-platform/docs/blob/2.5/core/swagger.md#overriding-the-openapi-specification. The code could look like this:
foreach ($docs['paths'] as $path => $pathItem) {
if (false !== strpos($path, '/admin/')) {
unset($docs['paths'][$path]);
}
}
You may also want to remove the schemas for admin operations as well.
Edit note: This will only remove the routes from the documentation, but the routes will still be active. You can either add a firewall rule to restrict access to these routes, or add a request event listener/subscriber and return a 404 or something similar when such route is requested.
(У меня недостаточно комментариев для комментариев)
Ссылка на ваш вопрос объясняет, как отключить маршруты api:
- Удалите конфигурацию маршрутизации SyliusAdminApiBundle из config / routes / sylius_admin_api.yaml.
Кажется, это то, чего вы пытаетесь достичь, не так ли?
If I understand right, you need to override the Swagger on Sylius to hide the endpoint that you don't need.
Я не эксперт по Sylius, но ваша проблема касается таких https://api-platform.com/docs/core/openapi/#overriding-the-ui-template