/** * Scope a query to only include records that are visible to a user. * * @param Builder $query * @param User $user * @return Builder */ protected function scopeVisibleTo(Builder $query, User $user = null) { if ($user !== null && !$user->isAdmin()) { $query->whereIsHidden(0); } return $query; }
/** * @param User $actor * @throws PermissionDeniedException */ protected function assertAdmin(User $actor) { $this->assertPermission($actor->isAdmin()); }
/** * @param User $actor * @param User $user * @return bool|null */ public function suspend(User $actor, User $user) { if ($user->isAdmin() || $user->id === $actor->id) { return false; } }