mirror of https://gitee.com/karson/fastadmin.git
parent
f035876bfb
commit
924e52b5e5
30
README.md
30
README.md
|
|
@ -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
|
||||
Gitee: https://gitee.com/karson/fastadmin
|
||||
|
||||
## **特别鸣谢**
|
||||
|
||||
|
|
@ -69,12 +67,18 @@ Git@OSC: https://gitee.com/karson/fastadmin
|
|||
|
||||
ThinkPHP:http://www.thinkphp.cn
|
||||
|
||||
AdminLTE:https://almsaeedstudio.com
|
||||
AdminLTE:https://adminlte.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
|
||||
|
||||
|
||||
## 版权信息
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,6 +92,9 @@ class Api
|
|||
*/
|
||||
protected function _initialize()
|
||||
{
|
||||
//移除HTML标签
|
||||
$this->request->filter('strip_tags');
|
||||
|
||||
$this->auth = Auth::instance();
|
||||
|
||||
$modulename = $this->request->module();
|
||||
|
|
|
|||
|
|
@ -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')));
|
||||
|
||||
|
|
|
|||
|
|
@ -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']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 : {});
|
||||
|
|
|
|||
|
|
@ -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 : {});
|
||||
|
|
|
|||
|
|
@ -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 : {});
|
||||
|
|
|
|||
Loading…
Reference in New Issue