* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace App\Policies; use App\Repositories\Enums\PermissionEnum; use App\Repositories\Models\Navigation\Category; use App\Repositories\Models\Base\User; use Illuminate\Auth\Access\HandlesAuthorization; class CategoryPolicy { use HandlesAuthorization; public function viewAny(User $user) { if ($this->all($user)) return true; if ($user->can(PermissionEnum::ROUTE_CATEGORY_VIEW_ANY()->name)) { return true; } return false; } public function view(User $user, Category $model) { if ($this->all($user)) return true; if ($user->isOwner($model) && $user->can(PermissionEnum::ROUTE_CATEGORY_VIEW()->name)) { return true; } return false; } public function create(User $user) { if ($this->all($user)) return true; if ($user->can(PermissionEnum::ROUTE_CATEGORY_CREATE()->name)) { return true; } return false; } public function update(User $user, Category $model) { if ($this->all($user)) return true; if ($user->isOwnerOrganization($model) || $user->isOwner($model) || $user->can(PermissionEnum::ROUTE_CATEGORY_UPDATE()->name)) { return true; } return false; } public function delete(User $user, Category $model) { if ($this->all($user)) return true; if ($user->isOwnerOrganization($model) || $user->isOwner($model) || $user->can(PermissionEnum::ROUTE_CATEGORY_DELETE()->name)) { return true; } return false; } private function all(User $user) { if ($user->can(PermissionEnum::ROUTE_CATEGORY()->name)) { return true; } return false; } }