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)