From 30508c0a68eb0c09fc1eb6a37ced392b0b417786 Mon Sep 17 00:00:00 2001 From: walkor Date: Tue, 13 Dec 2022 20:36:55 +0800 Subject: [PATCH] save --- src/plugin/admin/app/functions.php | 33 +++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/plugin/admin/app/functions.php b/src/plugin/admin/app/functions.php index 00a57d5..8f22778 100644 --- a/src/plugin/admin/app/functions.php +++ b/src/plugin/admin/app/functions.php @@ -6,6 +6,7 @@ use app\model\User; use plugin\admin\app\model\Admin; use plugin\admin\app\model\Role; +use plugin\admin\app\model\Rule; /** * 当前管理员id @@ -41,7 +42,7 @@ function admin($fields = null) } /** - * 是否是超级管理员 + * 当前是否是超级管理员 * @return bool */ function is_supper_admin(): bool @@ -54,6 +55,36 @@ function is_supper_admin(): bool return $rules && in_array('*', $rules->toArray()); } +/** + * 获取当前管理员权限 + * @return array + */ +function admin_rules(): array +{ + $roles = admin('roles'); + if (!$roles) { + return []; + } + $rule_ids = Role::whereIn('id', $roles)->pluck('rules'); + if (!$rule_ids) { + return []; + } + $rule_id_strings = $rule_ids->toArray(); + $rule_ids = []; + foreach ($rule_id_strings as $id_string) { + if (!$id_string) { + continue; + } + $rule_ids = array_merge($rule_ids, explode(',', $id_string)); + } + if (in_array('*', $rule_ids)) { + $rules = Rule::pluck('key', 'id'); + } else { + $rules = Rule::whereIn('id', $rule_ids)->pluck('key', 'id'); + } + return $rules ? $rules->toArray() : []; +} + /** * 当前登录用户id * @return integer|null