FIX: fix permissions for publishing content pages
This commit is contained in:
@@ -87,6 +87,10 @@ class Content extends Model
|
|||||||
*/
|
*/
|
||||||
public function category()
|
public function category()
|
||||||
{
|
{
|
||||||
|
if (!class_exists(Category::class)) {
|
||||||
|
throw new \ErrorException('Categories are not installed');
|
||||||
|
}
|
||||||
|
|
||||||
return $this->belongsTo(Category::class);
|
return $this->belongsTo(Category::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Policies;
|
namespace App\Policies;
|
||||||
|
|
||||||
|
use App\CMS\Contracts\Repositories\Content as ContentContract;
|
||||||
use App\Models\Content\Content;
|
use App\Models\Content\Content;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||||
@@ -35,21 +36,83 @@ class ContentPolicy extends BasicPolicy
|
|||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function create(User $user) {
|
public function create(User $user)
|
||||||
|
{
|
||||||
return $user->hasAbility('create-contents');
|
return $user->hasAbility('create-contents');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function publish(User $user)
|
/**
|
||||||
|
* 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');
|
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)
|
public function setHomepage(User $user)
|
||||||
{
|
{
|
||||||
return $user->hasAbility('set-homepage-contents');
|
return $user->hasAbility('set-homepage-contents');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewHistory(User $user) {
|
public function viewHistory(User $user)
|
||||||
|
{
|
||||||
return $user->hasAbility('view-history-contents');
|
return $user->hasAbility('view-history-contents');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ Route::group(['namespace' => 'Contents'], function () {
|
|||||||
// change status of page (protected, public or draft)
|
// change status of page (protected, public or draft)
|
||||||
Route::get('content/status/{page}/{status}', 'ContentActions@changeStatus')
|
Route::get('content/status/{page}/{status}', 'ContentActions@changeStatus')
|
||||||
->name('content.changeStatus')
|
->name('content.changeStatus')
|
||||||
->middleware('can:changeStatus,page');
|
->middleware('can:changeStatus,page,status');
|
||||||
|
|
||||||
// set homepage
|
// set homepage
|
||||||
Route::get('content/homepage/{page}', 'ContentActions@setHomepage')
|
Route::get('content/homepage/{page}', 'ContentActions@setHomepage')
|
||||||
|
|||||||
Reference in New Issue
Block a user