id != $content->user_id) { return $user->hasAbility('update-contents') && $user->hasAbility('update-all-contents'); }; return $user->hasAbility('update-contents'); } /** * Does given user has permissions to create new content page? * * @param User $user * * @return bool */ public function create(User $user) { return $user->hasAbility('create-contents'); } /** * Change page status * * @param User $user * @param Content $page * @param $status * * @return bool */ public function changeStatus(User $user, Content $page, $status) { switch ($status) { case ContentContract::STATUS_PUBLIC: return $this->publish($user, $page); break; case ContentContract::STATUS_DRAFT: return $this->draft($user, $page); break; case ContentContract::STATUS_PROTECTED: return $this->protect($user, $page); break; } return false; } /** * Can user publish given page? * * @param User $user * @param Content $page * * @return bool */ public function publish(User $user, Content $page) { return $user->hasAbility('publish-contents'); } /** * Can user make draft from given page? * * @param User $user * @param Content $page * * @return bool */ public function draft(User $user, Content $page) { return $user->hasAbility('draft-contents'); } /** * Can user publish page only for protected users? * * @param User $user * @param Content $page * * @return bool */ public function protect(User $user, Content $page) { return $user->hasAbility('protect-contents'); } public function setHomepage(User $user) { return $user->hasAbility('set-homepage-contents'); } public function viewHistory(User $user) { return $user->hasAbility('view-history-contents'); } }