mirror of
https://github.com/flarum/framework.git
synced 2025-02-21 09:11:40 +08:00
Update core permissions stuff
This commit is contained in:
parent
1dd46526a8
commit
9cb257e11d
@ -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;
|
||||
}
|
||||
});
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user