Cela fait partie de ma classe PostCategoriesController
:Laravel 5.5, ne peut pas gérer la politique/l'autorisation exception sur le constructeur
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\PostCategory;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Auth\Access\AccessDeniedHttpException;
class PostCategoriesController extends Controller
{
public function __construct()
{
try {
echo 'The try works.';
$this->authorizeResource(PostCategoriesController::class);
} catch (\Exception $err) {
// Never get here.
dd('The catch does not. We never see this...');
}
}
public function create()
{
// This works... but then I have to repeat it for every action...
try {
$this->authorize('create');
return view('admin.post-categories.create');
} catch (\Exception $err) {
//return redirect()->route('admin.welcome');
return 'You cannot create categories, sorry.';
}
}
}
Le problème est précisément la méthode authorizeResource()
, qui jette l'exception:
Symfony \ Component \ HttpKernel \ Exception \ AccessDeniedHttpException Cette action n'est pas autorisée.
La méthode authorizeResource()
pas sur les documents mais je le vois recommandé dans certains autres postes, comme Laravel policy always false et Apply Policy to Resource Controller par exemple. Il est également here.
La classe PostCategoryPolicy
retourne juste booléens de méthodes, il des choses comme:
public function update(User $user, PostCategory $postCategory)
{
return $user->has_role === 1;
}
Alors, pourquoi je ne peux pas attraper cette exception?
Merci pour l'aide. Je ne serai pas en mesure de tester cela maintenant, mais je le garderai à l'esprit lorsque j'ai d'autres travaux à faire dans le projet où ce problème s'est produit. –