Merhabalar,
Aşağıdaki şekilde bir kurgum var. Fakat eğer kullanıcı status'ü 'active' değilse Controller içinde
$this->authorize(...) kısmını kullandığımda hataya düşüyor. Gate kullanınca problem olmuyor. Bu bir bug mıdır yoksa benim mantığını bilmediğim bir durum mu var? Yardımlarınız için şimdiden teşekkür ederim.
1) UserController.php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
class UserController extends Controller
{
// ...
public function index()
{
$users = User::paginate(10);
// $this->authorize("view", $users); veya $this->authorize("view", User::class);
if(\Gate::denies('view', User::class))
return abort(401, "Üzgünüm, bu sayfayı sizin için görüntüleyemiyoruz.");
return view('admin.users.list', compact('users'));
}
// ...
}
2) UserPolicy.php
namespace App\Policies;
use Illuminate\Auth\Access\HandlesAuthorization;
use App\User;
class UserPolicy {
use HandlesAuthorization;
// ...
public function view(User $me)
{
return $me->status == 'active' && in_array($me->role, ['admin', 'moderator']);
}
// ...
}
NOT:
Enteresan, düzeldi... Sanırım tekrar php artisan serve yapmam gerekiyordu.