修复的Bug
0x01 -- 删除按钮失效
截图就忘了,点击删除的时候会提示选中,实际上是已经选中的状态。
把删除部分代码改成如下所示,大概在299行,因为我魔改和格式化过,可能有点差异,但是搜索【删除】字样,应该就八九不离十了。
$('.dropdown-menu a[data-action="delete"]').click(function() {
swal({
title: '你确定?',
icon: "info",
text: '你确认要删除这些记录吗?',
icon: "warning",
buttons: {
confirm: {
text: "删除",
},
cancel: {
text: "我再想想",
visible: true,
}
},
dangerMode: true,
}).then((confirm) => {
if (confirm == true) {
var ids = [];
$('.typecho-list-table input[type="checkbox"]').each(function(index, elem) {
if (elem.checked) {
ids.push($(elem).data('id'));
}
});
if (ids.length == 0) {
return swal('错误', '你并没有勾选任何内容', 'warning');
}
$.ajax({
url: '<?php echo rtrim(Helper::options()->index, '/') . '/access/log/delete.json'; ?>',
method: 'post',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify(ids),
success: function(data) {
if (data.code == 0) {
swal('删除成功', '所选记录已删除', 'success');
$.each(ids, function(index, elem) {
$('.typecho-list-table tbody tr[data-id="' + elem + '"]').fadeOut(500).remove();
});
} else {
swal('错误', '发生错误了', 'warning');
}
}
});
}
});
var $this = $(this);
$this.parents('.dropdown-menu').hide().prev().removeClass('active');
});
0x002 权限问题
如果不希望普通用户可以查看Access记录,只允许管理员权限访问,修改第25行。原来的叫什么我忘了,我喜欢这样命名。后面改成administrator。这样就是管理员权限才会在[控制台]中显示。
Helper::addPanel(1, self::$panel, _t('访问控制台'), _t('Access插件控制台'), 'administrator');
首页中还存在一个入口,方法名是adminFooter,里面内容改成如下所示。
public static function adminFooter() {
$access = new Access_Core();
$url = $_SERVER['PHP_SELF'];
$filename = substr($url, strrpos($url, '/') + 1);
if ($filename == 'index.php' && $access->isAdmin()) {
echo '<script>
$(document).ready(function() {
$("#start-link").append("<li><a href=\"';
Helper::options()->adminUrl('extending.php?panel=' . self::$panel);
echo '\">' . _t('Access控制台') . '</a></li>");
});
</script>';
});
}
这样的话就是管理员才能显示,其他用户不会显示。
然而我也不知道其他用户直接通过URL能否访问,也没有测试,直接加了个校验,不是管理员就抛出异常。在console.php中加入下面的代码,一定要放在在$access定义之后嗷。如果不想让别人知道有这个插件,可以直接重定向到404页面。
<?php
if (!$access->isAdmin()) {
throw new Exception("仅限管理员查阅。");
}
?>

评论 0
还没有评论,来说点什么吧。