切换导航条
此项目
正在载入...
登录
何书鹏
/
recruit
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
Karson
7 years ago
提交
924e52b5e5aa4068986a1dffecac0f8a9060c40a
1 个父辈
f035876b
修复CRUD目录大小写问题
修复API接口的安全问题 优化MutationObserver在IE10的兼容问题
隐藏空白字符变更
内嵌
并排对比
正在显示
8 个修改的文件
包含
70 行增加
和
61 行删除
README.md
application/admin/command/Crud.php
application/common/controller/Api.php
application/common/controller/Frontend.php
application/common/library/token/driver/Mysql.php
public/assets/js/fast.js
public/assets/js/require-backend.min.js
public/assets/js/require-frontend.min.js
README.md
查看文件 @
924e52b
...
...
@@ -4,7 +4,7 @@ FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架。
## **主要特性**
*
基于
`Auth`
验证
的权限管理系统
*
基于
Auth
的权限管理系统
*
支持无限级父子级权限继承,父级的管理员可任意增删改子级管理员及权限设置
*
支持单管理员多角色
*
支持管理子级数据或个人数据
...
...
@@ -13,12 +13,11 @@ FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架。
*
一键压缩打包JS和CSS文件,一键CDN静态资源部署
*
一键生成控制器菜单和规则
*
一键生成API接口文档
*
完善的前端功能组件开发
*
基于
`AdminLTE`
二次开发
*
基于
`Bootstrap`
开发,自适应手机、平板、PC
*
基于
`RequireJS`
进行JS模块管理,按需加载
*
基于
`Less`
进行样式开发
*
基于
`Bower`
进行前端组件包管理
*
完善的前端功能组件
*
基于AdminLTE二次开发
*
基于Bootstrap开发,自适应手机、平板、PC
*
基于RequireJS进行JS模块管理,按需加载
*
基于Bower进行前端组件包管理
*
强大的插件扩展功能,在线安装卸载升级插件
*
通用的会员模块和API模块
*
共用同一账号体系的Web端会员中心权限验证和API接口会员权限验证
...
...
@@ -27,6 +26,7 @@ FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架。
*
强大的第三方模块支持(CMS、博客、文档生成)
*
整合第三方短信接口(阿里云、创蓝短信)
*
无缝整合第三方云存储(七牛、阿里云OSS、又拍云)功能
*
第三方富文本编辑器支持(Summernote、Tinymce、百度编辑器)
*
第三方登录(QQ、微信、微博)整合
*
Ucenter整合第三方应用
...
...
@@ -42,7 +42,7 @@ https://demo.fastadmin.net
密 码:123456
提 示:演示站数据无法进行
删除和修改,只能新增,完整体验请下载源码安装体验
提 示:演示站数据无法进行
修改,请下载源码安装体验全部功能
## **界面截图**

...
...
@@ -53,15 +53,13 @@ https://demo.fastadmin.net
交流社区: https://forum.fastadmin.net
QQ群:
[
636393962
](
https://jq.qq.com/?_wv=1027&k=487PNBb
)(
交流群
)
[
696992864
]
(https://jq.qq.com/?_wv=1027&k=5R2AB00)(高级群,付费加入)
QQ群:
[
636393962
](
https://jq.qq.com/?_wv=1027&k=487PNBb
)(
交流群
①
)
[
708784003
]
(https://jq.qq.com/?_wv=1027&k=5ObjtwM)(交流群②
)
[
696992864
](
https://jq.qq.com/?_wv=1027&k=5R2AB00
)(
高级群,付费加入
)
Email: (karsonzhang#163.com, 把#换成@)
weibo:
[
@karsonzhang
](
https://weibo.com/karsonzhang
)
Github: https://github.com/karsonzhang/fastadmin
Git
@OSC
: https://gitee.com/karson/fastadmin
Git
ee
: https://gitee.com/karson/fastadmin
## **特别鸣谢**
...
...
@@ -69,12 +67,18 @@ Git@OSC: https://gitee.com/karson/fastadmin
ThinkPHP:http://www.thinkphp.cn
AdminLTE:https://a
lmsaeedstudio.com
AdminLTE:https://a
dminlte.io
Bootstrap:http://getbootstrap.com
jQuery:http://jquery.com
Bootstrap-table:https://github.com/wenzhixin/bootstrap-table
Nice-validator: https://validator.niceue.com
SelectPage: https://github.com/TerryZ/SelectPage
## 版权信息
...
...
application/admin/command/Crud.php
查看文件 @
924e52b
...
...
@@ -920,7 +920,7 @@ EOD;
$content
=
$this->getReplacedStub
(
$name
,
$data
);
if (!is_dir(dirname(
$pathname
))) {
mkdir(
strtolower(dirname(
$pathname
)
), 0755, true);
mkdir(
dirname(
$pathname
), 0755, true);
}
return file_put_contents(
$pathname
,
$content
);
}
...
...
application/common/controller/Api.php
查看文件 @
924e52b
...
...
@@ -92,6 +92,9 @@ class Api
*/
protected
function
_initialize
()
{
//移除HTML标签
$this
->
request
->
filter
(
'strip_tags'
);
$this
->
auth
=
Auth
::
instance
();
$modulename
=
$this
->
request
->
module
();
...
...
application/common/controller/Frontend.php
查看文件 @
924e52b
...
...
@@ -53,10 +53,6 @@ class Frontend extends Controller
}
$this
->
auth
=
Auth
::
instance
();
$modulename
=
$this
->
request
->
module
();
$controllername
=
strtolower
(
$this
->
request
->
controller
());
$actionname
=
strtolower
(
$this
->
request
->
action
());
// token
$token
=
$this
->
request
->
server
(
'HTTP_TOKEN'
,
$this
->
request
->
request
(
'token'
,
\think\Cookie
::
get
(
'token'
)));
...
...
application/common/library/token/driver/Mysql.php
查看文件 @
924e52b
...
...
@@ -34,7 +34,7 @@ class Mysql extends Driver
if
(
$this
->
options
[
'connection'
])
{
$this
->
handler
=
\think\Db
::
connect
(
$this
->
options
[
'connection'
])
->
name
(
$this
->
options
[
'table'
]);
}
else
{
$this
->
handler
=
\think\Db
::
name
(
'user_token'
);
$this
->
handler
=
\think\Db
::
name
(
$this
->
options
[
'table'
]
);
}
}
...
...
public/assets/js/fast.js
查看文件 @
924e52b
...
...
@@ -142,21 +142,23 @@ define(['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, undefine
if
(
layerfooter
.
size
()
>
0
)
{
// 监听窗口内的元素及属性变化
// Firefox和Chrome早期版本中带有前缀
var
MutationObserver
=
window
.
MutationObserver
||
window
.
WebKitMutationObserver
||
window
.
MozMutationObserver
// 选择目标节点
var
target
=
layerfooter
[
0
];
// 创建观察者对象
var
observer
=
new
MutationObserver
(
function
(
mutations
)
{
Fast
.
api
.
layerfooter
(
layero
,
index
,
that
);
mutations
.
forEach
(
function
(
mutation
)
{
var
MutationObserver
=
window
.
MutationObserver
||
window
.
WebKitMutationObserver
||
window
.
MozMutationObserver
;
if
(
MutationObserver
)
{
// 选择目标节点
var
target
=
layerfooter
[
0
];
// 创建观察者对象
var
observer
=
new
MutationObserver
(
function
(
mutations
)
{
Fast
.
api
.
layerfooter
(
layero
,
index
,
that
);
mutations
.
forEach
(
function
(
mutation
)
{
});
});
});
// 配置观察选项:
var
config
=
{
attributes
:
true
,
childList
:
true
,
characterData
:
true
,
subtree
:
true
}
// 传入目标节点和观察选项
observer
.
observe
(
target
,
config
);
// 随后,你还可以停止观察
// observer.disconnect();
// 配置观察选项:
var
config
=
{
attributes
:
true
,
childList
:
true
,
characterData
:
true
,
subtree
:
true
}
// 传入目标节点和观察选项
observer
.
observe
(
target
,
config
);
// 随后,你还可以停止观察
// observer.disconnect();
}
}
}
},
options
?
options
:
{});
...
...
public/assets/js/require-backend.min.js
查看文件 @
924e52b
...
...
@@ -796,21 +796,23 @@ define('fast',['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, u
if
(
layerfooter
.
size
()
>
0
)
{
// 监听窗口内的元素及属性变化
// Firefox和Chrome早期版本中带有前缀
var
MutationObserver
=
window
.
MutationObserver
||
window
.
WebKitMutationObserver
||
window
.
MozMutationObserver
// 选择目标节点
var
target
=
layerfooter
[
0
];
// 创建观察者对象
var
observer
=
new
MutationObserver
(
function
(
mutations
)
{
Fast
.
api
.
layerfooter
(
layero
,
index
,
that
);
mutations
.
forEach
(
function
(
mutation
)
{
var
MutationObserver
=
window
.
MutationObserver
||
window
.
WebKitMutationObserver
||
window
.
MozMutationObserver
;
if
(
MutationObserver
)
{
// 选择目标节点
var
target
=
layerfooter
[
0
];
// 创建观察者对象
var
observer
=
new
MutationObserver
(
function
(
mutations
)
{
Fast
.
api
.
layerfooter
(
layero
,
index
,
that
);
mutations
.
forEach
(
function
(
mutation
)
{
});
});
});
// 配置观察选项:
var
config
=
{
attributes
:
true
,
childList
:
true
,
characterData
:
true
,
subtree
:
true
}
// 传入目标节点和观察选项
observer
.
observe
(
target
,
config
);
// 随后,你还可以停止观察
// observer.disconnect();
// 配置观察选项:
var
config
=
{
attributes
:
true
,
childList
:
true
,
characterData
:
true
,
subtree
:
true
}
// 传入目标节点和观察选项
observer
.
observe
(
target
,
config
);
// 随后,你还可以停止观察
// observer.disconnect();
}
}
}
},
options
?
options
:
{});
...
...
public/assets/js/require-frontend.min.js
查看文件 @
924e52b
...
...
@@ -796,21 +796,23 @@ define('fast',['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, u
if
(
layerfooter
.
size
()
>
0
)
{
// 监听窗口内的元素及属性变化
// Firefox和Chrome早期版本中带有前缀
var
MutationObserver
=
window
.
MutationObserver
||
window
.
WebKitMutationObserver
||
window
.
MozMutationObserver
// 选择目标节点
var
target
=
layerfooter
[
0
];
// 创建观察者对象
var
observer
=
new
MutationObserver
(
function
(
mutations
)
{
Fast
.
api
.
layerfooter
(
layero
,
index
,
that
);
mutations
.
forEach
(
function
(
mutation
)
{
var
MutationObserver
=
window
.
MutationObserver
||
window
.
WebKitMutationObserver
||
window
.
MozMutationObserver
;
if
(
MutationObserver
)
{
// 选择目标节点
var
target
=
layerfooter
[
0
];
// 创建观察者对象
var
observer
=
new
MutationObserver
(
function
(
mutations
)
{
Fast
.
api
.
layerfooter
(
layero
,
index
,
that
);
mutations
.
forEach
(
function
(
mutation
)
{
});
});
});
// 配置观察选项:
var
config
=
{
attributes
:
true
,
childList
:
true
,
characterData
:
true
,
subtree
:
true
}
// 传入目标节点和观察选项
observer
.
observe
(
target
,
config
);
// 随后,你还可以停止观察
// observer.disconnect();
// 配置观察选项:
var
config
=
{
attributes
:
true
,
childList
:
true
,
characterData
:
true
,
subtree
:
true
}
// 传入目标节点和观察选项
observer
.
observe
(
target
,
config
);
// 随后,你还可以停止观察
// observer.disconnect();
}
}
}
},
options
?
options
:
{});
...
...
请
注册
或
登录
后发表评论