diff --git a/application/admin/command/Install/fastadmin.sql b/application/admin/command/Install/fastadmin.sql index cf8e91e4becc2f9b7a72859b23dca438f0c0746e..5fc0650bd11728f1d19a51632ffe78552fc4ae66 100755 --- a/application/admin/command/Install/fastadmin.sql +++ b/application/admin/command/Install/fastadmin.sql @@ -99,6 +99,7 @@ CREATE TABLE `fa_auth_group` ( `rules` text NOT NULL COMMENT '规则ID', `createtime` int(10) DEFAULT NULL COMMENT '创建时间', `updatetime` int(10) DEFAULT NULL COMMENT '更新时间', + `expiretime` int(10) DEFAULT NULL COMMENT '过期时间', `status` varchar(30) NOT NULL DEFAULT '' COMMENT '状态', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='分组表'; @@ -107,11 +108,11 @@ CREATE TABLE `fa_auth_group` ( -- Records of fa_auth_group -- ---------------------------- BEGIN; -INSERT INTO `fa_auth_group` VALUES (1, 0, 'Admin group', '*', 1490883540, 149088354, 'normal'); -INSERT INTO `fa_auth_group` VALUES (2, 1, 'Second group', '13,14,16,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,40,41,42,43,44,45,46,47,48,49,50,55,56,57,58,59,60,61,62,63,64,65,1,9,10,11,7,6,8,2,4,5', 1490883540, 1505465692, 'normal'); -INSERT INTO `fa_auth_group` VALUES (3, 2, 'Third group', '1,4,9,10,11,13,14,15,16,17,40,41,42,43,44,45,46,47,48,49,50,55,56,57,58,59,60,61,62,63,64,65,5', 1490883540, 1502205322, 'normal'); -INSERT INTO `fa_auth_group` VALUES (4, 1, 'Second group 2', '1,4,13,14,15,16,17,55,56,57,58,59,60,61,62,63,64,65', 1490883540, 1502205350, 'normal'); -INSERT INTO `fa_auth_group` VALUES (5, 2, 'Third group 2', '1,2,6,7,8,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34', 1490883540, 1502205344, 'normal'); +INSERT INTO `fa_auth_group` VALUES (1, 0, 'Admin group', '*', 1490883540, 149088354, 0,'normal'); +INSERT INTO `fa_auth_group` VALUES (2, 1, 'Second group', '13,14,16,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,40,41,42,43,44,45,46,47,48,49,50,55,56,57,58,59,60,61,62,63,64,65,1,9,10,11,7,6,8,2,4,5', 1490883540, 1505465692, 0, 'normal'); +INSERT INTO `fa_auth_group` VALUES (3, 2, 'Third group', '1,4,9,10,11,13,14,15,16,17,40,41,42,43,44,45,46,47,48,49,50,55,56,57,58,59,60,61,62,63,64,65,5', 1490883540, 1502205322, 0, 'normal'); +INSERT INTO `fa_auth_group` VALUES (4, 1, 'Second group 2', '1,4,13,14,15,16,17,55,56,57,58,59,60,61,62,63,64,65', 1490883540, 1502205350, 0, 'normal'); +INSERT INTO `fa_auth_group` VALUES (5, 2, 'Third group 2', '1,2,6,7,8,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34', 1490883540, 1502205344, 0, 'normal'); COMMIT; -- ---------------------------- diff --git a/application/admin/controller/auth/Group.php b/application/admin/controller/auth/Group.php index 0e82c8d89d7ee5301cbc219820f4dfe85fdaffd9..22e0080e3b467877f3f8dd0bf533716247f173a5 100644 --- a/application/admin/controller/auth/Group.php +++ b/application/admin/controller/auth/Group.php @@ -111,6 +111,11 @@ class Group extends Backend // 如果当前组别不是超级管理员则需要过滤规则节点,不能超当前组别的权限 $rules = in_array('*', $currentrules) ? $rules : array_intersect($currentrules, $rules); $params['rules'] = implode(',', $rules); + //日期转时间戳 + $params['expiretime'] = empty($params['expiretime']) ? 0 : strtotime($params['expiretime']); + if (false === $params['expiretime']) { + $this->error(__('Invalid format of expire time')); + } if ($params) { $this->model->create($params); $this->success(); @@ -144,6 +149,11 @@ class Group extends Backend $this->error(__('The parent group can not be its own child or itself')); } $params['rules'] = explode(',', $params['rules']); + //日期转时间戳 + $params['expiretime'] = empty($params['expiretime']) ? 0 : strtotime($params['expiretime']); + if (false === $params['expiretime']) { + $this->error(__('Invalid format of expire time')); + } $parentmodel = model("AuthGroup")->get($params['pid']); if (!$parentmodel) { @@ -180,6 +190,7 @@ class Group extends Backend $this->error(); return; } + $row['expiretime'] = $row['expiretime'] === 0 ? 0 : date("Y-m-d H:i:s", $row['expiretime']); $this->view->assign("row", $row); return $this->view->fetch(); } diff --git a/application/admin/lang/zh-cn.php b/application/admin/lang/zh-cn.php index b18b5bf6660c52db49c989a84fb22563c5bbbe56..746c2db1bf0e872efabed1c98b50d2aca27b550b 100755 --- a/application/admin/lang/zh-cn.php +++ b/application/admin/lang/zh-cn.php @@ -96,6 +96,7 @@ return [ 'End time' => '结束时间', 'Create time' => '创建时间', 'Update time' => '更新时间', + 'Expire time' => '过期时间', 'Flag' => '标志', 'Drag to sort' => '拖动进行排序', 'Redirect now' => '立即跳转', diff --git a/application/admin/lang/zh-cn/auth/group.php b/application/admin/lang/zh-cn/auth/group.php index 3a63f5860e905d01015bd40e4f955146292d034e..dbf52e561e0e2fa9dbdc3899eee02f4e076d70df 100644 --- a/application/admin/lang/zh-cn/auth/group.php +++ b/application/admin/lang/zh-cn/auth/group.php @@ -9,4 +9,5 @@ return [ 'You can not delete group that contain child group and administrators' => '你不能删除含有子组和管理员的组', 'The parent group exceeds permission limit' => '父组别超出权限范围', 'The parent group can not be its own child or itself' => '父组别不能是它的子组别及本身', + 'Invalid format of expire time' => '过期时间格式错误', ]; diff --git a/application/admin/library/Auth.php b/application/admin/library/Auth.php index 73826e454721b7969522c847db96294cae905845..eb0ce8e58bb8b5fc8def0f611a424aea2e7e7a1f 100644 --- a/application/admin/library/Auth.php +++ b/application/admin/library/Auth.php @@ -282,7 +282,8 @@ class Auth extends \fast\Auth } } // 取出所有分组 - $groupList = \app\admin\model\AuthGroup::where(['status' => 'normal'])->select(); +// $groupList = \app\admin\model\AuthGroup::where(['status' => 'normal'])->select(); + $groupList = \app\admin\model\AuthGroup::all(); $objList = []; foreach ($groups as $k => $v) { if ($v['rules'] === '*') { diff --git a/application/admin/view/auth/group/add.html b/application/admin/view/auth/group/add.html index 0eb848b546226576f523b0fd7a163cbc21389408..b5bdfcf6751e036fa836a2b8e84ba2b7bdd224a5 100644 --- a/application/admin/view/auth/group/add.html +++ b/application/admin/view/auth/group/add.html @@ -22,6 +22,17 @@
+
+ +
+ + + + +
+
diff --git a/application/admin/view/auth/group/edit.html b/application/admin/view/auth/group/edit.html index c691bd16005b80365366c278722b5bff99d4d3e3..a853c98ad3085a766f19c37d6b572a8691f7ced4 100644 --- a/application/admin/view/auth/group/edit.html +++ b/application/admin/view/auth/group/edit.html @@ -22,6 +22,17 @@
+
+ +
+ + + + +
+
diff --git a/extend/fast/Auth.php b/extend/fast/Auth.php index 396c4cfc9a935cb500109798b164b5d96b9b5e65..628abc2fab9f51f3333332dadb0940e8698178ec 100644 --- a/extend/fast/Auth.php +++ b/extend/fast/Auth.php @@ -153,11 +153,12 @@ class Auth } // 执行查询 + $nowTime = time(); $user_groups = Db::name($this->config['auth_group_access']) ->alias('aga') ->join('__' . strtoupper($this->config['auth_group']) . '__ ag', 'aga.group_id = ag.id', 'LEFT') ->field('aga.uid,aga.group_id,ag.id,ag.pid,ag.name,ag.rules') - ->where("aga.uid='{$uid}' and ag.status='normal'") + ->where("aga.uid='{$uid}' and ag.status='normal' and (ag.expiretime>={$nowTime} or ag.expiretime=0)") ->select(); $groups[$uid] = $user_groups ?: []; return $groups[$uid]; diff --git a/public/assets/js/backend/auth/group.js b/public/assets/js/backend/auth/group.js index 94a4b4b438f59aa03c8736ff0d2eef3e6765568e..e076db6e67bde5defe6498b347477ff1acc041c4 100755 --- a/public/assets/js/backend/auth/group.js +++ b/public/assets/js/backend/auth/group.js @@ -50,6 +50,24 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], function ( {field: 'pid', title: __('Parent')}, {field: 'name', title: __('Name'), align: 'left'}, {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + {field: 'expiretime', title: __('Expire time'), formatter: function (value,row,index) { + if (0 === value) { + return '永久'; + } else { + if (value >= parseInt(new Date().getTime()/1000)) { + var date = new Date(value * 1000); + var Y = date.getFullYear() + '-'; + var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; + var D = date.getDate() + ' '; + var h = date.getHours() + ':'; + var m = date.getMinutes() + ':'; + var s = date.getSeconds(); + return ''+(Y + M + D + h + m + s)+''; + } else { + return '已过期'; + } + } + }}, { field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: function (value, row, index) { if (Config.admin.group_ids.indexOf(parseInt(row.id)) > -1) { @@ -122,6 +140,18 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], function ( $(document).on("click", "#expandall", function () { $("#treeview").jstree($(this).prop("checked") ? "open_all" : "close_all"); }); + //过期时间: 永久和选择时间 + $(document).on("click", "#for_ever", function () { + $("#expiretime-select").attr("style","display:none;"); + $("input[name='row[expiretime]']").val('0'); + $("#select_time").removeAttr("checked"); + }); + $(document).on("click", "#select_time", function () { + $("#expiretime-select").attr("style","display:block;"); + $("#for_ever").removeAttr("checked"); + var nowDate = new Date(); + $("input[name='row[expiretime]']").val(nowDate.getFullYear() + '-' + (nowDate.getMonth()+1) + '-' + nowDate.getDate() + ' 23:59:59'); + }); $("select[name='row[pid]']").trigger("change"); }, rendertree: function (content) {