Apitte Middlewares – získání endpointu (=> ověření existence tagu)

sd
Člen | 87
+
+1
-

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
+
0
-

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#…