From d18c3d705a59a75ec092b0c10c0ba96974419e3e Mon Sep 17 00:00:00 2001 From: qiyueshiyi Date: Thu, 16 Feb 2017 19:00:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=83=E9=99=90?= =?UTF-8?q?=E4=B8=BA=E5=89=8D=E5=90=8E=E5=8F=B0=E5=BD=A2=E5=BC=8F,=20?= =?UTF-8?q?=E5=B9=B6=E4=BF=AE=E6=94=B9=E6=9D=83=E9=99=90=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Member/Commands/PermissionCommand.php | 27 +++++++++++++++++---- src/Member/Permission.php | 29 +++++++++++++++++++++++ 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/Member/Commands/PermissionCommand.php b/src/Member/Commands/PermissionCommand.php index 97220d02..cbebe8ac 100644 --- a/src/Member/Commands/PermissionCommand.php +++ b/src/Member/Commands/PermissionCommand.php @@ -76,16 +76,35 @@ class PermissionCommand extends Command } $i = 0; - foreach ($permissions as $permission) { - if (! isset($permission['display_name']) || ! isset($permission['name']) || empty($permission['display_name']) || empty($permission['name'])) { + + $frontendPermissions = array_get($permissions, 'frontend', []); + $adminPermissions = array_get($permissions, 'admin', []); + + // 添加前台权限 + foreach ($frontendPermissions as $frontendPermission) { + if (! isset($frontendPermission['display_name']) || ! isset($frontendPermission['name']) || empty($frontendPermission['display_name']) || empty($frontendPermission['name'])) { + continue; + } + + if (Permission::where('name', $frontendPermission['name'])->count()) { + continue; + } + + Permission::addPermission($frontendPermission['name'], $frontendPermission['display_name'], isset($frontendPermission['description']) ? $frontendPermission['description'] : ''); + $i++; + } + + // 添加后台权限 + foreach ($adminPermissions as $adminPermission) { + if (! isset($adminPermission['display_name']) || ! isset($adminPermission['name']) || empty($adminPermission['display_name']) || empty($adminPermission['name'])) { continue; } - if (Permission::where('name', $permission['name'])->count()) { + if (Permission::whereAdmin($adminPermission['name'])->count()) { continue; } - Permission::addPermission($permission['name'], $permission['display_name'], isset($permission['description']) ? $permission['description'] : ''); + Permission::addAdminPermission($adminPermission['name'], $adminPermission['display_name'], isset($adminPermission['description']) ? $adminPermission['description'] : ''); $i++; } diff --git a/src/Member/Permission.php b/src/Member/Permission.php index ad47b7d8..3f477f87 100644 --- a/src/Member/Permission.php +++ b/src/Member/Permission.php @@ -25,6 +25,8 @@ use Notadd\Foundation\Database\Model; */ class Permission extends Model { + const ADMIN_PREFIX = 'admin-'; + protected $table = 'permissions'; protected $fillable = [ @@ -53,4 +55,31 @@ class Permission extends Model return $permission; } + + /** + * 添加后台权限 + * + * @param $name + * @param null $display_name + * @param null $description + * + * @return \Notadd\Foundation\Member\Permission + */ + public static function addAdminPermission($name, $display_name = null, $description = null) + { + return static::addPermission(static::ADMIN_PREFIX . $name, $display_name, $description); + } + + /** + * 查询后台权限 + * + * @param $query + * @param $name + * + * @return mixed + */ + public function scopeWhereAdmin($query, $name) + { + return $query->where('name', static::ADMIN_PREFIX . $name); + } } -- Gitee From f11e76b69ce122da3ed08a8e73f11e47e3a98941 Mon Sep 17 00:00:00 2001 From: qiyueshiyi Date: Fri, 17 Feb 2017 11:14:55 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E4=B8=BA=E4=B8=8D=E4=BD=BF=E7=94=A8=20tags?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Member/Member.php | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/Member/Member.php b/src/Member/Member.php index e07420fd..ba657728 100644 --- a/src/Member/Member.php +++ b/src/Member/Member.php @@ -58,12 +58,21 @@ class Member extends Authenticatable return $this->newQuery()->where('name', $name)->first(); } - public function cachedPermissions() + /** + * 获取缓存的用户的权限的动态键 + * + * @return string + */ + public function getCachePermissionKey() { $memberPrimaryKey = $this->primaryKey; - $cacheKey = 'permissions_for_member_' . $this->$memberPrimaryKey; - return Cache::tags('member_permission')->remember($cacheKey, 60, function () { + return 'permissions_for_member_' . $this->$memberPrimaryKey; + } + + public function cachedPermissions() + { + return Cache::remember($this->getCachePermissionKey(), 60, function () { return $this->permissions()->get(); }); } @@ -73,17 +82,17 @@ class Member extends Authenticatable //both inserts and updates $result = parent::save($options); - Cache::tags('member_permission')->flush(); + Cache::forget($this->getCachePermissionKey()); return $result; } public function delete() { - //soft or hard + // soft or hard $result = parent::delete(); - Cache::tags('member_permission')->flush(); + Cache::forget($this->getCachePermissionKey()); return $result; } @@ -93,7 +102,7 @@ class Member extends Authenticatable //soft delete undo's $result = parent::restore(); - Cache::tags('member_permission')->flush(); + Cache::forget($this->getCachePermissionKey()); return $result; } -- Gitee