Compare commits

..

2 Commits

Author SHA1 Message Date
MI15\Win
65edb94998 v2.0.26-20230611 2023-06-11 18:20:56 +08:00
MI15\Win
1733e995d6 v2.0.25-20230607 2023-06-07 20:53:30 +08:00
12 changed files with 148 additions and 48 deletions

View File

@@ -131,7 +131,7 @@ if($_POST['step'] == 2){
'add_time'=>$data['add_time'] ?? time(),
'up_time'=>$data['up_time'] ?? time(),
'weight'=>0,
'description'=>htmlspecialchars($data['description'],ENT_QUOTES),
'description'=>htmlspecialchars($data['description'],ENT_QUOTES) ?? '',
'font_icon'=> strstr($data['Icon'],'fa') ? 'fa '.$data['Icon'] : 'fa fa-folder',
'icon'=>''
]
@@ -149,7 +149,7 @@ if($_POST['step'] == 2){
'title' => $data['title'],
'url' => $data['url'],
'url_standby' => empty($data['url_standby']) ? '': [$data['url_standby']] ,
'description' => $data['description'],
'description' => $data['description']?? '',
'add_time' => $data['add_time'] ?? time(),
'up_time' => $data['up_time'] ?? time(),
'click' => $data['click'] ?? 0,

View File

@@ -574,7 +574,7 @@ function write_default_settings(){
if(!is_subscribe('bool')){
msg(-1,'未检测到有效授权');
}
if( $_POST['KeyClear'] > $_POST['Session']){
if(intval($_POST['Session']) > 0 && intval($_POST['KeyClear']) > intval($_POST['Session'])){
msg(-1,'Key清理时间不能大于登录保持时间');
}
// 安全配置(登录配置)
@@ -583,7 +583,8 @@ function write_default_settings(){
'HttpOnly'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'HttpOnly参数错误'],
'KeySecurity'=>['int'=>true,'min'=>0,'max'=>2,'msg'=>'Key安全参数错误'],
'KeyClear'=>['int'=>true,'min'=>1,'max'=>60,'msg'=>'Key清理参数错误'],
'api_model'=>['v'=>['security','compatible','compatible+open'],'msg'=>'API模式参数错误']
'api_model'=>['v'=>['security','compatible','compatible+open'],'msg'=>'API模式参数错误'],
'login_page'=>['v'=>['admin','index','auto'],'msg'=>'登录成功参数错误']
];
foreach ($datas as $key => $data){
if($data['int']){

View File

@@ -338,32 +338,33 @@ function is_login(){
global $USER_DB;
$time = time();
$LoginConfig = unserialize($USER_DB['LoginConfig']);
function delete_expired_info($time,$LoginConfig){
global $USER_DB;
if(empty($LoginConfig['Session'])){
$where = [
"uid" => $USER_DB['ID'],
//"expire_time" => 0,
"OR" => [
"last_time[<]" => strtotime('-1 day'),
"login_time[<]" => strtotime('-15 day')
]
];
}else{
$where = [
"uid" => $USER_DB['ID'],
"OR" => [
"expire_time[<]" => $time,
"last_time[<]" => strtotime("-{$LoginConfig['KeyClear']} day")
]
];
if (!function_exists('delete_expired_info')) {
function delete_expired_info($time,$LoginConfig){
global $USER_DB;
if(empty($LoginConfig['Session'])){
$where = [
"uid" => $USER_DB['ID'],
//"expire_time" => 0,
"OR" => [
"last_time[<]" => strtotime('-1 day'),
"login_time[<]" => strtotime('-15 day')
]
];
}else{
$where = [
"uid" => $USER_DB['ID'],
"OR" => [
"expire_time[<]" => $time,
"last_time[<]" => strtotime("-{$LoginConfig['KeyClear']} day")
]
];
}
//var_dump(select_db('user_login_info','*',$where),$where);exit;
delete_db("user_login_info", $where); //清理到期Key
update_db("global_user",["kct"=>$time],["User" => $USER_DB['User']]); //记录清理时间
}
//var_dump(select_db('user_login_info','*',$where),$where);exit;
delete_db("user_login_info", $where); //清理到期Key
update_db("global_user",["kct"=>$time],["User" => $USER_DB['User']]); //记录清理时间
}
//清理间隔30分钟(1800秒)
if( ($USER_DB['kct'] + 1800) < $time ){
delete_expired_info($time,$LoginConfig);

View File

@@ -27,7 +27,7 @@ switch ($type) {
setcookie($USER_DB['User'].'_Password2', md5($USER_DB['Password'].$_COOKIE[U.'_key'].$_POST['Password2']), 0,'','',false,true);
msg(1,'二级密码正确!');
}else{
msg(-1,'二级密码错误!'.$LoginConfig['Password2']);
msg(-1,'二级密码错误!');
}
break;
case "link_pwd":

View File

@@ -1 +1 @@
v2.0.24-20230606
v2.0.26-20230611

View File

@@ -649,7 +649,17 @@
padding: 0px;
overflow: hidden;
}
/**菜单缩放*/
.popup-tips .layui-layer-TipsG{
display: none;
}
.popup-tips.layui-layer-tips .layui-layer-content{
padding: 0;
}
.popup-tips .layui-nav-tree{
width: 150px;
border-radius: 10px;
}
/**左侧菜单字体间距*/
.layuimini-menu-left .layui-nav-item a span {
letter-spacing: 1px;
@@ -879,4 +889,4 @@
.layui-layout-admin .layui-logo {width: 155px;}
.layui-body {left: 155px;}
.layuimini-tool {left: 190px;}
.layui-nav-tree {width: 155px!important;}
.layui-nav-tree {width: 155px!important;}

View File

@@ -23,8 +23,9 @@
<div class="layui-header header">
<div class="layui-logo layuimini-logo"></div>
<div class="layuimini-header-content">
<a><div class="layuimini-tool"><i title="左侧栏展开/收缩" class="fa fa-outdent" data-side-fold="1"></i></div></a>
<a><div class="layuimini-tool"><i title="左侧栏展开/收缩" class="fa fa-outdent" style="font-size: 1.1rem;" data-side-fold="1"></i></div></a>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item" lay-unselect><a href="javascript:;" data-home="主页" title="主页"><i class="fa fa-home" style="font-size: 1.08rem;"></i></a></li>
<li class="layui-nav-item" lay-unselect><a href="javascript:;" data-refresh="刷新" title="刷新"><i class="fa fa-refresh"></i></a></li>
<li class="layui-nav-item mobile layui-hide-xs" lay-unselect><a href="javascript:;" title="全屏" data-check-screen="full"><i class="fa fa-arrows-alt"></i></a></li>
<li class="layui-nav-item layuimini-setting">

View File

@@ -160,11 +160,51 @@ layui.define(["jquery", "miniMenu", "element","miniTab", "miniTheme"], function
},
// 监听
listen: function () {
//主页
$('body').on('click','[data-home]', function () {
top.location.href='./index.php?u='+u;
});
//刷新
$('body').on('click','[data-refresh]', function () {
$(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload();
miniAdmin.success('刷新成功');
});
// 悬停菜单>移入
$("body").on("mouseenter", ".layui-nav-tree .menu-li", function () {
if (miniAdmin.checkMobile()) {
return false;
}
var classInfo = $(this).attr('class'),
tips = $(this).prop("innerHTML"),
isShow = $('.layuimini-tool i').attr('data-side-fold');
if (isShow == 0 && tips) {
tips = "<ul class='layuimini-menu-left-zoom layui-nav layui-nav-tree layui-this'><li class='layui-nav-item layui-nav-itemed'>"+tips+"</li></ul>" ;
window.openTips = layer.tips(tips, $(this), {
tips: [2, '#2f4056'],
time: 300000,
skin:"popup-tips",
success:function (el) {
var left = $(el).position().left - 10 ;
$(el).css({ left:left });
element.render();
}
});
}
});
// 悬停菜单>移出
$("body").on("mouseleave", ".popup-tips", function () {
if (miniAdmin.checkMobile()) {
return false;
}
var isShow = $('.layuimini-tool i').attr('data-side-fold');
if (isShow == 0) {
try {
layer.close(window.openTips);
} catch (e) {
console.log(e.message);
}
}
});
//全屏
$('body').on('click','[data-check-screen]', function () {
var check = $(this).attr('data-check-screen');

View File

@@ -3,12 +3,11 @@ var bak_link_id = 0;
var page_sid = '';
var link_id = '';
var load_index;
layui.use(['form','upload','miniTab'], function () {
var module = _GET('source') === 'tpl' ? ['form', 'upload'] : ['form', 'upload', 'miniTab'];
layui.use(module, function () {
var $ = layui.jquery;
var form = layui.form;
var upload = layui.upload;
var miniTab = layui.miniTab;
var edit_mode = _GET('page') == 'link_edit'; //是否编辑模式
//独立页面
if(top.location == self.location){
@@ -108,9 +107,18 @@ layui.use(['form','upload','miniTab'], function () {
if(top.location == self.location){
layer.msg('已更新!', {icon: 1});
}else{
parent.layui.table.reload('table');//刷新父页面的表格
parent.layui.layer.msg('已更新', {icon: 1});
$('#close').click();//关闭子页面
if(_GET('source') == 'tpl'){ //第三方调用时刷新父页面
layer.msg('添加成功', {icon: 1,time: 700,
end: function() {
parent.location.reload();
$('#close').click();//关闭子页面
}
});
}else{
parent.layui.table.reload('table');//刷新父页面的表格
parent.layui.layer.msg('已更新!', {icon: 1});
$('#close').click();//关闭子页面
}
}
}else{
layer.msg(data.msg, {icon: 5});
@@ -132,7 +140,9 @@ layui.use(['form','upload','miniTab'], function () {
window.close(); //关闭当前页面
}else{
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页(内嵌窗口)
miniTab.deleteCurrentByIframe(); //关闭当前标签(标签窗口)
if(_GET('source') != 'tpl'){
layui.miniTab.deleteCurrentByIframe(); //关闭当前标签(标签窗口)
}
}
});
@@ -228,4 +238,4 @@ function get_link_info() {
}
layer.close(load_index);
});
}
}

View File

@@ -1,14 +1,15 @@
<?php $title='添加链接'; require 'header.php'; ?>
<style>
.layui-textarea {min-height: 70px;}
body {
margin: 0px 0px 0px 0px;
background: bottom;
}
margin: 0px 0px 0px 0px;
background: bottom;
}
.layui-textarea {min-height: 70px;}
.layui-form-select dl {max-height: 190px;}
</style>
<div class="layuimini-container" style="height: 420px;">
<div class="layuimini-main" style=" margin-left: 0px; ">
<form class="layui-form layuimini-form">
<div class="layuimini-container">
<div class="layuimini-main" style="margin-left: 0px;">
<form class="layui-form layuimini-form" style="padding-bottom: 20px;">
<div class="layui-form-item">
<label class="layui-form-label required" >URL</label>

View File

@@ -77,6 +77,18 @@ $LoginConfig = unserialize( get_db("global_config", "v", ["k" => "LoginConfig"])
<div class="layui-form-mid layui-word-aux">部分主题和插件需设为开放模式!</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">登录后</label>
<div class="layui-input-inline" >
<select name="login_page">
<option value="admin" selected>进入后台</option>
<option value="index">进入主页</option>
<option value="auto">自动识别</option>
</select>
</div>
<div class="layui-form-mid layui-word-aux">自动识别:移动设备登录则进入主页,反之进入后台</div>
</div>
<fieldset class="layui-elem-field layui-field-title"><legend>站点设置</legend></fieldset>
<div class="layui-form-item">
<label class="layui-form-label">主标题</label>

View File

@@ -2,6 +2,30 @@
<body>
<div class="layuimini-container">
<div class="layuimini-main" style=" margin-left: 20px;">
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<h4 class="layui-timeline-title">v2.0.26-20230611</h4>
<ul>
<li>[新增] 后台页面右上角新增主页图标用于返回主页</li>
<li>[修复] 后台左侧栏收起时无法使用二级菜单</li>
<li>[修复] 申请收录无法提交,v2.0.24更新造成</li>
<li>[修复] 二级密码输错时提示正确密码的bug</li>
</ul>
</div>
</li>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<h4 class="layui-timeline-title">v2.0.25-20230607</h4>
<ul>
<li>[修复] 默认设置>登录保持设为浏览器关闭时无法保存</li>
<li>[修复] 导入OneNav Extend 升级数据时,如果description存在Null值造成导入失败</li>
<li>[新增] 默认设置>可定义登录后进入后台还是主页 (注:此页面配置仅对新注册账号有效,不会修改现有用户的配置)</li>
<li>[优化] 前端主题WebStack-Hugo的适配性</li>
</ul>
</div>
</li>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">