File: /home/xedaptot/ai.naniguide.com/app/Policies/PlanPolicy.php
<?php
namespace App\Policies;
use Illuminate\Auth\Access\HandlesAuthorization;
use App\Model\User;
use App\Model\Plan;
class PlanPolicy
{
use HandlesAuthorization;
public function read(User $user)
{
$can = $user->admin->getPermission('plan_read') != 'no';
return $can;
}
public function readAll(User $user, Plan $plan)
{
$can = $user->admin->getPermission('plan_read') == 'all';
return $can;
}
public function create(User $user)
{
$can = $user->admin->getPermission('plan_create') == 'yes';
// config/limit.php
$limit = app_profile('plan.limit');
if (!is_null($limit)) {
$planCount = Plan::count();
$can = $can && ($planCount < $limit);
} else {
// ignore limit because it is null
}
return $can;
}
public function update(User $user, Plan $plan)
{
$ability = $user->admin->getPermission('plan_update');
return $ability == 'all' || $ability == 'own';
}
public function delete(User $user, Plan $plan)
{
$ability = $user->admin->getPermission('plan_delete');
return $ability == 'all' || $ability == 'own';
}
public function disable(User $user, Plan $plan)
{
$ability = $user->admin->getPermission('plan_update');
return ($ability == 'all' || $ability == 'own') && $plan->status != 'inactive';
}
public function enable(User $user, Plan $plan)
{
$ability = $user->admin->getPermission('plan_update');
return ($ability == 'all' || $ability == 'own') && $plan->status != 'active' && $plan->isValid();
}
public function visibleOn(User $user, Plan $plan)
{
$ability = $user->admin->getPermission('plan_update');
return ($ability == 'all' || $ability == 'own') && !$plan->visible && $plan->isActive();
}
public function visibleOff(User $user, Plan $plan)
{
$ability = $user->admin->getPermission('plan_update');
return ($ability == 'all' || $ability == 'own') && $plan->visible;
}
public function copy(User $user, Plan $plan)
{
$ability = $user->admin->getPermission('plan_copy');
return $ability == 'all' || $ability == 'own';
}
}