Apitte Middlewares – získání endpointu (=> ověření existence tagu)
- sd
- Člen | 87
Ahoj,
řeším problém s Apitte (fullstack) – potřebuji mít část
endpointů dostupných až po autorizaci a zbytek dostupný veřejně. Výpis
článků je veřejný, ale POST a DELETE endpoint potřebuji mít veřejně
nedostupný. – To jsem myslel, že vyřeším v
UserAuthMiddleware
:
Chtěl jsem si označit veřejné endpointy tagem public
a podle
toho v middlewaru zjistit, jestli daný endpoint je public nebo ne ⇒ povolit
/ zamítnout přístup.
Jenže do __invoke()
jde ServerRequestInterface
místo
ApiRequest
=> nefunguje tedy
/** @var Endpoint $endpoint Schema of matched endpoint */
$endpoint = $request->getAttribute(RequestAttributes::ATTR_ENDPOINT);
if ( $endpoint->hasTag('public') ) {
$next($request->withAttribute('user', null), $response);
}
Jak bych toto měl správně vyřešit?
Díky moc!
Editoval sd (27. 2. 2020 12:51)
- Marek Bartoš
- Nette Blogger | 1263
Použij RequestDecorator. To co chceš bude v middleware fungovat
v nějaké z následujících verzí, je potřeba kvůli tomu router
přesunout do middlewares (a nerozbít setup bez nich)
https://contributte.org/…orators.html#…