Proje dosyaları eklendi
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace App\Policies; use App\Enums\RoleName; use App\Models\{Keyword,Project,User};
|
||||
class KeywordPolicy {
|
||||
public function viewAny(User $u):bool{return $u->hasRole(RoleName::Customer)||$u->hasPermission('keywords.view');}
|
||||
public function view(User $u,Keyword $k):bool{return $k->project->user_id===$u->id||$u->hasPermission('keywords.view');}
|
||||
public function create(User $u,Project $p):bool{return $p->user_id===$u->id&&$u->hasRole(RoleName::Customer);}
|
||||
public function update(User $u,Keyword $k):bool{return $k->project->user_id===$u->id||$u->hasPermission('keywords.manage');}
|
||||
public function archive(User $u,Keyword $k):bool{return $this->update($u,$k);} public function restore(User $u,Keyword $k):bool{return $this->update($u,$k);}
|
||||
public function delete(User $u,Keyword $k):bool{return false;} public function deleteAny(User $u):bool{return false;}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\Enums\RoleName;
|
||||
use App\Models\Project;
|
||||
use App\Models\User;
|
||||
|
||||
class ProjectPolicy
|
||||
{
|
||||
public function viewAny(User $user): bool { return $user->hasRole(RoleName::Customer) || $user->hasPermission('projects.view'); }
|
||||
public function view(User $user, Project $project): bool { return $project->user_id === $user->id || $user->hasPermission('projects.view'); }
|
||||
public function create(User $user): bool { return $user->hasRole(RoleName::Customer); }
|
||||
public function update(User $user, Project $project): bool { return $project->user_id === $user->id || $user->hasPermission('projects.manage'); }
|
||||
public function archive(User $user, Project $project): bool { return $this->update($user, $project); }
|
||||
public function restore(User $user, Project $project): bool { return $this->update($user, $project); }
|
||||
public function delete(User $user, Project $project): bool { return false; }
|
||||
public function deleteAny(User $user): bool { return false; }
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
namespace App\Policies;
|
||||
use App\Enums\{KeywordStatus,ProjectStatus,RoleName};use App\Models\{Keyword,SerpCheck,User};
|
||||
class SerpCheckPolicy{
|
||||
public function viewAny(User $u):bool{return $u->hasRole(RoleName::Customer)||$u->hasPermission('serp_checks.view');}
|
||||
public function view(User $u,SerpCheck $c):bool{return $c->keyword->project->user_id===$u->id||$u->hasPermission('serp_checks.view');}
|
||||
public function create(User $u,Keyword $k):bool{return $k->project->user_id===$u->id&&$u->hasRole(RoleName::Customer)&&$k->status===KeywordStatus::Active&&$k->archived_at===null&&$k->project->status===ProjectStatus::Active&&$k->project->archived_at===null;}
|
||||
public function update(User $u,SerpCheck $c):bool{return false;}
|
||||
public function delete(User $u,SerpCheck $c):bool{return false;}
|
||||
public function deleteAny(User $u):bool{return false;}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\Enums\RoleName;
|
||||
use App\Models\User;
|
||||
|
||||
class UserPolicy
|
||||
{
|
||||
public function viewAny(User $actor): bool
|
||||
{
|
||||
return $actor->isActive() && $actor->hasPermission('users.view');
|
||||
}
|
||||
|
||||
public function view(User $actor, User $subject): bool
|
||||
{
|
||||
return $this->viewAny($actor);
|
||||
}
|
||||
|
||||
public function create(User $actor): bool
|
||||
{
|
||||
return $actor->isActive() && $actor->hasPermission('users.manage');
|
||||
}
|
||||
|
||||
public function update(User $actor, User $subject): bool
|
||||
{
|
||||
if (! $actor->isActive() || ! $actor->hasPermission('users.manage')) {
|
||||
return false;
|
||||
}
|
||||
if ($subject->hasRole(RoleName::SuperAdmin) && ! $actor->hasRole(RoleName::SuperAdmin)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $actor->isNot($subject) || $actor->hasRole(RoleName::SuperAdmin);
|
||||
}
|
||||
|
||||
public function delete(User $actor, User $subject): bool
|
||||
{
|
||||
if (! $this->update($actor, $subject) || $actor->is($subject)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user