Proje: Okul Platform · Hub: Okul Platform — Conventions
Policy Yapısı
41 adet policy mevcut. Controller’larda:
$this->authorizeResource(School::class, 'school');Her model için: viewAny, view, create, update, delete metodları.
Standart Policy Örneği (SchoolPolicy)
public function viewAny(User $user): bool
{
return $user->can(PermissionType::VIEW_SCHOOL->value);
}Spatie Permission ile $user->can(permission) kullanılır.
Policy Trait’leri
AllowsAllAdmins
trait AllowsAllAdmins
{
public function isAdmin(User $user): bool
{
return $user->user_group_type === UserGroupType::ADMIN->value;
}
}HasCustomer
trait HasCustomer
{
protected function isCustomerWithPaidSchool(User $user, CustomerUserService $service): bool
// Kullanıcı admin VEYA customer VE ücretli okulu var mı?
protected function isCustomerHasContentAccess(User $user, CustomerUserService $service): bool
// Content access'e sahip okulu var mı?
}SUPER_ADMIN Bypass
AppServiceProvider:
Gate::before(function ($user) {
if ($user->hasRole(RoleType::SUPER_ADMIN->value)) {
return true; // Tüm policy'leri bypass et
}
});Policy Listesi (Özet)
ActivityPolicy, ArticlePolicy, CampaignPolicy, CheckoutPolicy, CollegePolicy, ConfigPolicy, CustomerUserPolicy, LeadPolicy, SchoolPolicy, SchoolCommentPolicy, SchoolFeePolicy, ProductPolicy, SalesCampaignPolicy, TagPolicy, UserDetailPolicy… (41 toplam)
Related
- api-role-permission-system — PermissionType enum (313 izin)
- api-controller-service-pattern — authorizeResource kullanımı