Pre Merge pull request !163 from wkk/master

pull/163/MERGE
wkk 2019-12-29 19:58:07 +08:00 committed by Gitee
commit d9178af828
9 changed files with 75 additions and 7 deletions

View File

@ -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;
-- ----------------------------

View File

@ -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();
}

View File

@ -96,6 +96,7 @@ return [
'End time' => '结束时间',
'Create time' => '创建时间',
'Update time' => '更新时间',
'Expire time' => '过期时间',
'Flag' => '标志',
'Drag to sort' => '拖动进行排序',
'Redirect now' => '立即跳转',

View File

@ -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' => '过期时间格式错误',
];

View File

@ -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'] === '*') {

View File

@ -22,6 +22,17 @@
<div id="treeview"></div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Expire time')}:</label>
<div class="col-xs-12 col-sm-8">
<span class="text-muted"><input type="checkbox" name="" id="for_ever" /> <label for="for_ever"><small>永久</small></label></span>
<span class="text-muted"><input type="checkbox" name="" id="select_time" /> <label for="select_time"><small>选择时间</small></label></span>
<div id="expiretime-select" style="display: none;">
<input class="form-control datetimepicker" name="row[expiretime]" type="text" data-date-default-date="now" data-date-min-date="now" data-rule="required" data-date-use-current="true" data-date-format="YYYY-MM-DD HH:mm:ss"/>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
<div class="col-xs-12 col-sm-8">

View File

@ -22,6 +22,17 @@
<div id="treeview"></div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Expire time')}:</label>
<div class="col-xs-12 col-sm-8">
<span class="text-muted"><input type="checkbox" {if $row.expiretime === 0 } checked="checked" {/if} name="" id="for_ever" /> <label for="for_ever"><small>永久</small></label></span>
<span class="text-muted"><input type="checkbox" {if $row.expiretime !== 0 } checked="checked" {/if} name="" id="select_time" /> <label for="select_time"><small>选择时间</small></label></span>
<div id="expiretime-select" {if $row.expiretime === 0 } style="display: none;" {/if}>
<input class="form-control datetimepicker" name="row[expiretime]" type="text" data-date-default-date="{$row.expiretime}" data-rule="required" data-date-format="YYYY-MM-DD HH:mm:ss"/>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
<div class="col-xs-12 col-sm-8">

View File

@ -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];

View File

@ -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 '<a class="label label-success addtabsit">永久</a>';
} 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 '<a class="label label-success addtabsit">'+(Y + M + D + h + m + s)+'</a>';
} else {
return '<a class="label label-warning addtabsit">已过期</a>';
}
}
}},
{
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) {