优化配置权限监测

This commit is contained in:
taoser 2021-07-22 13:04:54 +08:00
parent caf4fc942a
commit 0a7983e698
16 changed files with 253 additions and 108 deletions

View File

@ -2,13 +2,13 @@
> TaoLer是一个简单迅捷的轻论坛系统适用于个人或组织区域型信息交流发布平台。
* 官网https://www.aieok.com
* 前台http://bbs.aieok.com
* 后台http://adm.aieok.com
* 官网https://www.aieok.com:8443
* 前台http://bbs.aieok.com:888
* 后台http://adm.aieok.com:888
* 账号test
* 密码test123
* 版本TaoLer 1.7.20
* 日期2021.7.20
* 版本TaoLer 1.7.23
* 日期2021.7.22
#### 项目地址

View File

@ -199,7 +199,7 @@ class Upgrade extends AdminController
$upRes = $setConf->setConfig('taoler',$value);
$result = $upRes->getData();
if($result['code'] == -1){
return json(['code'=>-1,'msg'=>$result['msg']]);
return json(['code'=>-1,'msg'=>'代码写入成功,但'.$result['msg']]);
}
return json(['code'=>0,'msg'=>'升级成功']);

View File

@ -0,0 +1,130 @@
{extend name="public:base" /}
{block name="body"}
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-header layuiadmin-card-header-auto">
<button class="layui-btn layuiadmin-btn-ledger" data-type="back">备份</button>
</div>
<div class="layui-progress layui-progress-big" lay-showpercent="true" lay-filter="demo">
<div class="layui-progress-bar layui-bg-red" lay-percent="0%"></div>
</div>
<div class="layui-card-body">
<table id="LAY-app-content-ledger" lay-filter="LAY-app-content-ledger"></table>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
<button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
<button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
</div>
</script>
<script type="text/html" id="tao-ledger">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>备份</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="down"><i class="layui-icon layui-icon-edit"></i>下载</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-edit"></i>删除</a>
</script>
</div>
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index','table','layer','element'], function(){
var table = layui.table,
layer = layui.layer,
element = layui.element;
var $ = layui.$;
var active = {
back: function backup(predate)
{
//var index = layer.load();
$.ajax({
url: "{:url('admin/Databackup/backup')}",
type: 'POST', //POST
async: true, //或false,是否异步
dataType: 'json',
data:predate,
success: function (data) {
if (data.totalpercentage >= 100)
{
//关闭
//layer.close(index);
layer.alert('备份完成', {icon: 1});
}
element.progress('demo', data.totalpercentage+'%');
//循环备份
if (data.totalpercentage < 100)
{
backup(data);
}
}
});
}
};
//总帐信息
table.render({
elem: '#LAY-app-content-ledger'
,url: "{:url('admin/Database/index')}" //进列表接口
,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
,defaultToolbar: ['filter', 'exports', 'print']
,cols: [[
{type: 'checkbox', fixed: 'left'}
,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true}
,{field: 'time', title: '备份时间',width: 180}
,{field: 'name', title: '备份名', minWidth: 200}
,{title: '操作', width: 150, align: 'center', toolbar: '#tao-ledger'}
]]
,page: true
,limit: 15
,limits: [10, 15, 20, 25, 30]
,text: '对不起,加载出现异常!'
});
$('#back1').on('click',function(){
//询问框
layer.confirm('确定备份?', {
btn: ['确定','取消'] //按钮
}, function(){
console.log(123);
backup({});
//layer.msg('的确很重要', {icon: 1});
}
);
});
$('.layui-btn.layuiadmin-btn-ledger').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
{/block}

View File

@ -21,8 +21,8 @@
</div>
</script>
<script type="text/html" id="tao-database">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="down"><i class="layui-icon layui-icon-edit"></i>下载</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-edit"></i>删除</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="down"><i class="layui-icon layui-icon-download-circle"></i></a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i></a>
</script>
</div>
</div>
@ -82,7 +82,7 @@
//总帐信息
//信息
table.render({
elem: '#LAY-app-content-database'
,url: "{:url('admin/Database/index')}" //进列表接口
@ -92,7 +92,7 @@
,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true}
,{field: 'time', title: '备份时间',width: 180}
,{field: 'name', title: '备份名', minWidth: 200}
,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#tao-database'}
,{title: '操作', width: 100, align: 'center', toolbar: '#tao-database'}
]]
,page: true
,limit: 15
@ -135,7 +135,7 @@
var tr = $(obj.tr);
layer.open({
type: 2
,title: '编辑支出'
,title: '下载'
,content: "{:url('Database/down')}" + '?id='+ data.id
,area: ['420px', '460px']
,btn: ['确定', '取消']

View File

@ -47,11 +47,11 @@
<table id="sign-rule" lay-filter="sign-rule"></table>
<script type="text/html" id="sign-rule-button">
{if condition="checkRuleButton('admin/Sin/edit')"}
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
{else /}<a class="layui-btn layui-btn-normal layui-btn-xs layui-btn-disabled"><i class="layui-icon layui-icon-edit"></i>编辑</a>{/if}
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></a>
{else /}<a class="layui-btn layui-btn-normal layui-btn-xs layui-btn-disabled"><i class="layui-icon layui-icon-edit"></i></a>{/if}
{if condition="checkRuleButton('admin/Sign/delete')"}
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
{else /}<a class="layui-btn layui-btn-danger layui-btn-xs layui-btn-disabled"><i class="layui-icon layui-icon-delete"></i>删除</a>{/if}
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i></a>
{else /}<a class="layui-btn layui-btn-danger layui-btn-xs layui-btn-disabled"><i class="layui-icon layui-icon-delete"></i></a>{/if}
</script>
</div>
</div>

View File

@ -246,11 +246,24 @@
});
form.on('submit(set_system_config)', function(data){
console.log(data);
var field = data.field;
$.post("{:url('admin/set/config')}",field);
layer.msg(JSON.stringify(data.field));
$.post("{:url('admin/set/config')}",field,function(res){
if(res.code == 0){
layer.msg(res.msg,{
icon:6,
tiye:2000
},function(){
location.reload();
});
} else {
layer.open({
title:"设置失败",
content:res.msg,
icon:5,
anim:6
});
}
});
return false;
});

View File

@ -54,7 +54,7 @@ class SetConf
catch (\Exception $e) {
// 这是进行异常捕获
//$e->getMessage();
return json(['code'=>-1,'msg'=>$fileurl . '无写入权限']);
return json(['code'=>-1,'msg'=> $file . '无写入权限']);
}
return json(['code'=>0,'msg'=>'配置修改成功']);

View File

@ -11,7 +11,7 @@ class Index extends BaseController
{
// 检测是否安装过
protected function initialize(){
if(file_exists('../install.lock')){
if(file_exists('./install.lock')){
echo "<script>alert('已经成功安装了TaoLer社区系统安装系统已锁定。如需重新安装请删除根目录下的install.lock文件')</script>";
die();
}
@ -197,23 +197,30 @@ return [
];
php;
// 创建数据库链接配置文件
$fp = fopen("../config/database.php","w");
$res = fwrite($fp, $db_str);
fclose($fp);
if(!$res){
echo '数据库配置文件创建失败!';
}
$database = '../config/database.php';
if (file_exists($database)) {
if(is_writable($database)){
$fp = fopen($database,"w");
$resf = fwrite($fp, $db_str);
fclose($fp);
if(!$resf){
$res = json(['code' => -1,'msg'=>'数据库配置文件创建失败!']);
}
} else {
$res = json(['code' => -1,'msg'=>'config/database.php 无写入权限']);
}
}
}
//安装上锁
file_put_contents('../install.lock', 'lock');
file_put_contents('./install.lock', 'lock');
Session::clear();
return json(['code' => 0,'msg'=>'安装成功','url'=>(string) url('success/complete')]);
} else {
return '请求失败!';
$res = json(['code' => 0,'msg'=>'安装成功','url'=>(string) url('success/complete')]);
} else {
$res = json(['code' => -1,'msg'=>'请求失败']);
}
return $res;
}
}

View File

@ -26,8 +26,8 @@
<?php echo PHP_VERSION ?>
</td>
<?php $php_version=explode('.', PHP_VERSION); ?>
<td class="<?php if(($php_version['0']>=7) || ($php_version['0']>=5 && $php_version['1']>=6))echo 'yes'; ?>">
<?php if (($php_version['0']>=7) || ($php_version['0']>=5 && $php_version['1']>=3)): ?> √
<td class="<?php if(($php_version['0']>=7) && $php_version['1']>1)echo 'yes'; ?>">
<?php if (($php_version['0']>=7) && $php_version['1']>1): ?> √
<?php else: ?> ×
<?php endif ?>
</td>
@ -41,22 +41,22 @@
<th width="25%">当前配置</th>
<th width="25%">是否符合</th>
</tr>
<tr>
<td>./runtime</td>
<tr>
<td>app</td>
<td>可写</td>
<td>
<?php if (is_writable('../runtime')): ?> 可写
<?php if (is_writable('../app')): ?> 可写
<?php else: ?> 不可写
<?php endif ?>
</td>
<td class="<?php if(is_writable('../runtime'))echo 'yes'; ?>">
<?php if (is_writable('../runtime')): ?> √
<td class="<?php if(is_writable('../app'))echo 'yes'; ?>">
<?php if (is_writable('../app')): ?> √
<?php else: ?> ×
<?php endif ?>
</td>
</tr>
<tr>
<td>./config</td>
<td>config</td>
<td>可写</td>
<td>
<?php if (is_writable('../config')): ?> 可写
@ -70,21 +70,49 @@
</td>
</tr>
<tr>
<td>./app</td>
<td>data</td>
<td>可写</td>
<td>
<?php if (is_writable('../app')): ?> 可写
<?php if (is_writable('../data')): ?> 可写
<?php else: ?> 不可写
<?php endif ?>
</td>
<td class="<?php if(is_writable('../app'))echo 'yes'; ?>">
<?php if (is_writable('../app')): ?> √
<td class="<?php if(is_writable('../data'))echo 'yes'; ?>">
<?php if (is_writable('../data')): ?> √
<?php else: ?> ×
<?php endif ?>
</td>
</tr>
<tr>
<td>./view</td>
<td>public</td>
<td>可写</td>
<td>
<?php if (is_writable('../public')): ?> 可写
<?php else: ?> 不可写
<?php endif ?>
</td>
<td class="<?php if(is_writable('../public'))echo 'yes'; ?>">
<?php if (is_writable('../public')): ?>
<?php else: ?> ×
<?php endif ?>
</td>
</tr>
<tr>
<td>runtime</td>
<td>可写</td>
<td>
<?php if (is_writable('../runtime')): ?> 可写
<?php else: ?> 不可写
<?php endif ?>
</td>
<td class="<?php if(is_writable('../runtime'))echo 'yes'; ?>">
<?php if (is_writable('../runtime')): ?>
<?php else: ?> ×
<?php endif ?>
</td>
</tr>
<tr>
<td>view</td>
<td>可写</td>
<td>
<?php if (is_writable('../view')): ?> 可写
@ -97,34 +125,6 @@
<?php endif ?>
</td>
</tr>
<tr>
<td>./install</td>
<td>可写</td>
<td>
<?php if (is_writable('../app/install')): ?> 可写
<?php else: ?> 不可写
<?php endif ?>
</td>
<td class="<?php if(is_writable('../app/install'))echo 'yes'; ?>">
<?php if (is_writable('../app/install')): ?>
<?php else: ?> ×
<?php endif ?>
</td>
</tr>
<tr>
<td>./app</td>
<td>可写</td>
<td>
<?php if (is_writable('../app')): ?> 可写
<?php else: ?> 不可写
<?php endif ?>
</td>
<td class="<?php if(is_writable('../app'))echo 'yes'; ?>">
<?php if (is_writable('../app')): ?>
<?php else: ?> ×
<?php endif ?>
</td>
</tr>
</table>
<div class="inout1">
<a href="{:url('index/index')}">上一步</a>

View File

@ -7,7 +7,7 @@ class Install
{
public function handle($request, \Closure $next)
{
if(!file_exists('../install.lock')){
if(!file_exists('./install.lock')){
return redirect('/install/index');
//header('Location:'.Request::domain().'/install.php');
}

View File

@ -7,14 +7,14 @@ return [
//应用名,此项不可更改
'appname' => 'TaoLer',
//版本配置
'version' => '1.7.22',
'version' => '1.7.23',
//加盐
'salt' => 'taoler',
//数据库备份目录
'databasebackdir' => app()->getRootPath() .'data/',
//配置
'config' =>[
'area_show' => 1,
'area_show' => 0,
'email_notice' => 1,
]

View File

@ -4,7 +4,7 @@
// +----------------------------------------------------------------------
use think\facade\Db;
//如果网站安装从数据库查询选择的模板
if(file_exists('../install.lock')){
if(file_exists('./install.lock')){
$template = Db::name('system')->where('id',1)->value('template');
} else {
$template = '';
@ -29,4 +29,9 @@ return [
'taglib_begin' => '{',
// 标签库标签结束标记
'taglib_end' => '}',
//模板输出替换
'tpl_replace_string' => [
'__STATIC__'=>'/static/layui',
'__JS__' => '/static/res/',
]
];

1
public/install.lock Normal file
View File

@ -0,0 +1 @@
lock

View File

@ -14,7 +14,7 @@ layui.define(['table', 'form'], function(exports){
{field: 'days',title: '天数'},
{field: 'score',title: '积分'},
{field: 'ctime',title: '时间'},
{title: '操作', width: 150, align:'center', fixed: 'right', toolbar: '#sign-rule-button'}
{title: '操作', width: 150, align:'center', toolbar: '#sign-rule-button'}
]]
,page: true
@ -128,7 +128,7 @@ layui.define(['table', 'form'], function(exports){
{field: 'nick',title: '认证'},
{field: 'rules',title: '权限'},
{field: 'ctime',title: '时间'},
{title: '操作', width: 150, align:'center', fixed: 'right', toolbar: '#vip-rule-button'}
{title: '操作', width: 150, align:'center', toolbar: '#vip-rule-button'}
]]
,page: true

View File

@ -28,7 +28,7 @@ i{font-style: normal;}
.site-menu{position: fixed; top: 0px; bottom: 0; min-height: 0; overflow-y: auto; overflow-x: hidden; z-index: 10001; left: -300px; background-color: #fff; transition: all .3s;}
/* 头部伸缩菜单栏 */
.site-tree-mobile-top{display: block!important; position: fixed; z-index: 16666668; top: 2px; left: 20px; width: 57px; height: 57px; line-height: 57px; border-radius: 2px; text-align: center; color: #e2e2e2;}
.site-tree-mobile-top{display: block!important; position: fixed; z-index: 16666668; top: 2px; left: 10px; width: 57px; height: 57px; line-height: 57px; border-radius: 2px; text-align: center; color: #e2e2e2;}
.site-home .site-tree-mobile-top{display: none!important;}
.site-mobile .site-tree-mobile-top{display: none !important;}
.site-mobile .site-menu{left: 0;}

View File

@ -2,30 +2,30 @@
<div class="layui-panel site-menu" style="width: auto;">
<ul class="layui-menu layui-menu-lg">
<li class="search" style="padding-left:5px;padding-top:2px;">
<li class="search" style="padding-left:5px;padding-top:2px;padding-right:5px;">
<form action="{:url('index/search',['keywords'=>$Request.param.keywords])}">
<input type="search" name="keywords" value="" aria-label="Search text" placeholder="搜索" class="layui-input">
</form>
</li>
{if session('?user_id')}
<li class="layui-nav-item">
<li class="layui-nav-item" style="padding-left:25px;">
<a class="fly-nav-avatar" href="javascript:;">
<img src="{$user['user_img']}" >
</a>
</li>
{else /}
<li class="layui-nav-item">
<li class="layui-nav-item" style="padding-left:25px;">
<a class="iconfont icon-touxiang" href="{:url('login/index')}"></a>
<a href="{:url('login/index')}">{:lang('login')}</a>
<a href="{:url('login/reg')}">{:lang('register')}</a>
</li>
<li class="layui-nav-item" >
<a href="{:url('login/index')}"> {:lang('login')} </a>
<a href="{:url('login/reg')}"> {:lang('register')} </a>
</li>
<li class="layui-nav-item" style="padding-left:25px;">
<select name="language" style="width:100px;" lay-filter="language1" lay-verify="" id="language1">
<option value="cn" {if cookie('think_lang')=='zh-cn'} selected{/if} >{:lang('chinese')}</option>
<option value="tw" {if cookie('think_lang')=='zh-tw'} selected{/if} >{:lang('tChinese')}</option>
<option value="en" {if cookie('think_lang')=='en-us'} selected{/if} >{:lang('english')}</option>
</select>
</li>
</li>
{/if}
<li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: true}">
@ -48,31 +48,20 @@
</li>
<li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: true}">
<div class="layui-menu-body-title">
框架
</div>
<div class="layui-menu-body-title">菜单</div>
<hr>
<ul>
<li class="">
<div class="layui-menu-body-title">
<a href="http://wiki.aieok.com/">
<span>Wiki </span>
<span class="layui-font-12 layui-font-gray">框架文档</span>
</a>
</div>
</li>
<li class="">
<div class="layui-menu-body-title">
<a href="http://bbs.aieok.com/doc/timeline.html">
<span>日志 </span>
<span class="layui-font-12 layui-font-gray">更新日志</span>
</a>
</div>
</li>
{volist name="headlinks" id="vo"}
<li class="">
<div class="layui-menu-body-title">
<a href="{$vo.slid_href}"><i class="layui-icon {$vo.slid_img}"></i><span> {$vo.slid_name} </span></a>
</div>
</li>
{/volist}
<li class="">
<div class="layui-menu-body-title">
<a href="/">
<span>回首页 </span>
<i class="layui-icon layui-icon-home" style="color: #009688;"></i><span> 回首页</span>
<span class="layui-font-12 layui-font-gray">index</span>
</a>
</div>