Laravel authentication yapısı, birden çok model için ayrı guard'lar tanımlamanıza olanak sağlıyor.
Ön tanımlı olarak web guard ile login işlemlerinizi yapabiliyorsunuz.
Örneğin ön yüzde App\Models\Users, Yönetim paneli tarafında ise App\Models\Admin modellerini kullanabilirsiniz.
Bahsettiğiniz paketin spatie/laravel-permission olduğunu düşünerek sorunuza cevap vermek gerekirse yazılımnızdaki her bir guard için her rol ve her izin için ayrı ayrı tanımlama yapabilirsiniz. Veritabanı yapısını incelerseniz roles ve permissions tablolarında "guard_name" adında bir kolon göreceksiniz.
Burada yapmanız gerken User modeli için default web guard'ı kullanmak, Customer modeli için ise config/auth.php dosyasında yeni bir guard tanımlayıp Customer login için bu guard'ı kullanmak olacaktır. İzinleri de ilgili guard adı ile ayrı ayrı ekleyebilirsiniz.
Anlayamadığım kısım şu, login olmayacak bir kullanıcıya nasıl bir izin tanımlaması yapmak istiyorsunuz ? Önce kullanıcıyı doğrulayıp daha sonra izinleri dahilinde gerekli işlemleri yapmasına izin vermelisiniz.