Update core permissions stuff

This commit is contained in:
Toby Zerner 2015-06-18 12:38:24 +09:30
parent 1dd46526a8
commit 9cb257e11d
3 changed files with 1 additions and 77 deletions

View File

@ -182,16 +182,6 @@ class CoreServiceProvider extends ServiceProvider
public function registerPermissions()
{
$this->extend(
new Permission('forum.view'),
new Permission('forum.startDiscussion'),
new Permission('discussion.reply'),
new Permission('discussion.editPosts'),
new Permission('discussion.deletePosts'),
new Permission('discussion.rename'),
new Permission('discussion.delete')
);
Forum::allow('*', function ($forum, $user, $action) {
if ($user->hasPermission('forum.'.$action)) {
return true;
@ -199,7 +189,7 @@ class CoreServiceProvider extends ServiceProvider
});
Post::allow('*', function ($post, $user, $action) {
if ($user->hasPermission('post.'.$action)) {
if ($post->discussion->can($user, $action.'Posts')) {
return true;
}
});

View File

@ -2,15 +2,4 @@
class Permission extends Model
{
protected static $permissions = [];
public static function getPermissions()
{
return static::$permissions;
}
public static function addPermission($permission)
{
static::$permissions[] = $permission;
}
}

View File

@ -1,55 +0,0 @@
<?php namespace Flarum\Extend;
use Illuminate\Contracts\Container\Container;
use Flarum\Core\Models\Permission as PermissionModel;
class Permission implements ExtenderInterface
{
protected $permission;
protected $serialize = false;
protected $grant = [];
public function __construct($permission)
{
$this->permission = $permission;
}
public function serialize($serialize = true)
{
$this->serialize = $serialize;
return $this;
}
public function grant($callback)
{
$this->grant[] = $callback;
return $this;
}
public function extend(Container $container)
{
PermissionModel::addPermission($this->permission);
list($entity, $permission) = explode('.', $this->permission);
if ($this->serialize) {
$extender = new SerializeAttributes(
'Flarum\Api\Serializers\\'.ucfirst($entity).'Serializer',
function (&$attributes, $model, $serializer) use ($permission) {
$attributes['can'.ucfirst($permission)] = (bool) $model->can($serializer->actor->getUser(), $permission);
}
);
$extender->extend($container);
}
foreach ($this->grant as $callback) {
$model = 'Flarum\Core\Models\\'.ucfirst($entity);
$model::grantPermission($permission, $callback);
}
}
}