CRM/backend/app/Policies/NotePolicy.php

44 خطوط
1.1 KiB
PHP

<?php
namespace App\Policies;
use App\Models\Note;
use App\Models\User;
use App\Support\AccessControl;
class NotePolicy
{
public function view(User $user, Note $note): bool
{
if (! AccessControl::canAccessEntity($user, $note->notable)) {
return false;
}
return $note->visibility !== 'private' || $note->user_id === $user->id || $user->hasRole('admin');
}
public function create(User $user, object $notable): bool
{
return $user->can('manage_call_notes') && AccessControl::canAccessEntity($user, $notable);
}
public function update(User $user, Note $note): bool
{
if (! $user->can('manage_call_notes') || ! $this->view($user, $note)) {
return false;
}
return $note->user_id === $user->id || $user->hasRole('supervisor') || $user->hasRole('admin');
}
public function delete(User $user, Note $note): bool
{
return $this->update($user, $note);
}
public function pin(User $user, Note $note): bool
{
return $user->can('pin_call_notes') && $this->view($user, $note);
}
}