Dag allen,
Bij een applicatie die ik aan het ontwikkelen ben zijn er resources waar je dynamisch de zichtbaarheid in kan stellen. Een voorbeeld van zo'n route:
Voor het checken van de rechten gebruik ik de Authorize middleware van Laravel. Nu wil het dat sommige van deze resources ook zichtbaar zijn voor gasten (dus niet-ingelogde gebruikers), en sommige resources zijn alleen zichtbaar voor bepaalde ingelogde gebruikers.
Onderstaand stukje uit De Authorize middleware is relevant:
Waarbij regel 3 de volgende functie is uit Illuminate\Auth\GuardHelpers:
Wat blijkt nu dus? Het gebruiken van middleware('can:iets') betekent automatisch dat een gebruiker ingelogd moet zijn.
Dat is dus precies wat ik niet wil. Hoe hebben jullie dit probleem opgelost? (Of wat zou een betere aanpak zijn)
Bij een applicatie die ik aan het ontwikkelen ben zijn er resources waar je dynamisch de zichtbaarheid in kan stellen. Een voorbeeld van zo'n route:
PHP:
1
| Route::get('{forum}','Forum\ForumController@show')->middleware('can:view,forum'); |
Voor het checken van de rechten gebruik ik de Authorize middleware van Laravel. Nu wil het dat sommige van deze resources ook zichtbaar zijn voor gasten (dus niet-ingelogde gebruikers), en sommige resources zijn alleen zichtbaar voor bepaalde ingelogde gebruikers.
Onderstaand stukje uit De Authorize middleware is relevant:
PHP:
1
2
3
4
5
6
7
8
| public function handle($request, Closure $next, $ability, ...$models) { $this->auth->authenticate(); $this->gate->authorize($ability, $this->getGateArguments($request, $models)); return $next($request); } |
Waarbij regel 3 de volgende functie is uit Illuminate\Auth\GuardHelpers:
PHP:
1
2
3
4
5
6
7
8
| public function authenticate() { if (! is_null($user = $this->user())) { return $user; } throw new AuthenticationException; } |
Wat blijkt nu dus? Het gebruiken van middleware('can:iets') betekent automatisch dat een gebruiker ingelogd moet zijn.
Dat is dus precies wat ik niet wil. Hoe hebben jullie dit probleem opgelost? (Of wat zou een betere aanpak zijn)
U zegt: ‘Alles is toegestaan.’ Zeker, maar niet alles is goed. Alles is toegestaan, maar niet alles is opbouwend.