DoraCMS v1.1.1版本更新 

年后的第一次更新,开年比较忙,找工作、找房子各种事,最近整理了一下代码,把各位提出的一些明显的bug改了,感谢各位童鞋好的建议。本次更新的主要内容如下:


- 1、提取了管理员信息查询的静态方法

- 2、重新优化了广告模块,图片广告管理更方便了

- 3、修复了一个文档查询的bug(过滤掉隐藏的content),感谢@jier945的建议

- 4、修复了文件管理和模板编辑的bug(文件读取用相对路径更安全)

- 5、提取了关联对象删除的公共方法

- 6、添加文档页面添加了一个新增tag的入口

- 7、去掉了admin路由中的io(暂时用不上)

- 8、优化了后台路由,添加了adminCtrl过滤器从入口处先过滤一次非法请求,提高安全性

- 9、提取了一些中文信息提示为静态变量


本次更新有两个比较大的改动:

1、广告管理模块优化了

图片广告之前是无法对每个图片属性进行编辑的,这次做了优化

广告管理.jpg


2、后台入口添加了adminCtrl路由,从入口处先做一次校验,过滤掉一些非法访问,校验通过再处理后面的逻辑,同时去掉了admin.js中的一些冗余代码。

//管理员主页
router.get(["/manage","/manage/*"],function(req,res,next){
    if(isAdminLogined(req)){
        next();
    }else{
        res.redirect("/admin");
    }
});

//模块管理页面
router.get('/manage/:targetPage', function(req, res, next) {
    var currentPage = req.params.targetPage;
    if(settings[currentPage]){
        if(!checkAdminPower(req,settings[currentPage][0] + '_view')){
            res.render("manage/public/notice", adminFunc.setDataForInfo('danger','对不起,您无权操作 <strong>'+settings[currentPage][1]+'</strong> 模块!'));
        }else{
            next();
        }
    }else{
        next();
    }
});

//通用对象列表数据查询
router.get('/manage/getDocumentList/:defaultUrl',function(req,res,next){
    var currentPage = req.params.defaultUrl;
    if(checkAdminPower(req,currentPage + '_view')){
        next();
    }else{
        return res.json({});
    }
});

//获取单个对象数据
router.get('/manage/:defaultUrl/item',function(req,res,next){
    var currentPage = req.params.defaultUrl;
    var params = url.parse(req.url,true);
    var targetId = params.query.uid;
    if(checkAdminPower(req,currentPage + '_view')){
        if(shortid.isValid(targetId)){
            next();
        }else{
            res.end(settings.system_illegal_param);
        }
    }else{
        return res.json({});
    }

});

//对象新增
router.post('/manage/:defaultUrl/addOne',function(req,res,next){

    var currentPage = req.params.defaultUrl;
    if(adminFunc.checkAdminPower(req,currentPage + '_add')){
        next();
    }else{
        res.end(settings.system_noPower);
    }
});

//更新单条记录(执行更新)
router.post('/manage/:defaultUrl/modify',function(req,res,next){
    var currentPage = req.params.defaultUrl;
    var params = url.parse(req.url,true);
    var targetId = params.query.uid;
    if(checkAdminPower(req,currentPage + '_modify')){
        if(shortid.isValid(targetId)){
            next();
        }else{
            res.end(settings.system_illegal_param);
        }
    }else{
        res.end(settings.system_noPower);
    }
});

//通用对象删除
router.get('/manage/:defaultUrl/del',function(req,res,next){
    var currentPage = req.params.defaultUrl;
    var params = url.parse(req.url,true);
    var targetId = params.query.uid;
    if(checkAdminPower(req,currentPage + '_del')){
        if(shortid.isValid(targetId)){
            next();
        }else{
            res.end(settings.system_illegal_param);
        }

    }else{
        res.end(settings.system_noPower);
    }
});

//批量删除对象
router.get('/manage/:defaultUrl/batchDel',function(req,res,next){
    var currentPage = req.params.defaultUrl;
    var params = url.parse(req.url,true);
    var ids = params.query.ids;
    var idsArr = ids.split(',');
    if(adminFunc.checkAdminPower(req,currentPage + '_del')){
        if(idsArr.length > 0){
            next();
        }else{
            res.end(settings.system_atLeast_one);
        }
    }else{
        res.end(settings.system_noPower);
    }

});

//访问指定对象的数据列表(不带分页)
router.get('/manage/:modular/list', function(req, res, next) {
    var currentPage = req.params.modular;
    if(settings[currentPage]){
        if(!checkAdminPower(req,settings[currentPage][0] + '_view')){
            return res.json({});
        }else{
            next();
        }
    }else{
        next();
    }
});

 

3、adminCtrl.js 替换了之前的 validat.js ,validat.js 不再使用。新安装的童鞋要注意了哈

发表评论

登录 后参与评论

评论列表 (21条)

  • doramart [  管理员]
    2 年前
    @boween  没明白你的意思,可以加群里提问 QQ群:524385285
  • boween
    2 年前
    大神你好,leftNav.ejs的代码我用个地方没看懂, <%for(var i=0;i<currentCateList.length;i++){ if(currentCateList[i].parentID === '0'){%> 这一段是显示导航条,但为什么只显示一次parentID === '0'的项,后面的其他parentID === '0'的项没有显示?
  • doramart [  管理员]
    2 年前
    @boween  你可能要在 siteFun.js 中找到setDataForIndex方法,在返回数据中加入currentCateList
  • boween
    2 年前
    我想做个导航下拉菜单,把leftNav.ejs中的currentCateList参数直接拿到header.ejs中使用,会报错currentCateList is not defined,请问是怎么回事
  • doramart [  管理员]
    2 年前
    @boween  根目录执行npm install 安装依赖
  • boween
    2 年前
    求救!启动时报错Error: Cannot find module 'assert-plus'
  • doramart [  管理员]
    2 年前
    @AmorZhang  不客气,有问题随时沟通!
  • AmorZhang
    2 年前
    兄弟,我也刚入门,准备在你的基础上做公司的项目,非常感谢您
  • doramart [  管理员]
    2 年前
    @huwenhua  我用的阿里云服务器linux 基础版 1g内存,40G硬盘。目前挂了2个站,基本够用
  • doramart [  管理员]
    2 年前
    @gjkoni  加QQ:305511094,截图看看
  • gjkoni
    2 年前
    请教下博主,按照教程注释代码后,运行第一次打开用户组页面可以操作,可操作完后列表页并没显示用户组,然后点用户页想创建用户又跳没有权限操作了,不知道是怎么回事
  • huwenhua
    2 年前
    博客,请问你这网站部署在什么服务器上,空间是在哪买的,可以说下吗
  • xiangfp
    2 年前
    @xiangfp  确实🐂
  • xiangfp
    2 年前
    不错 可以学习一下。。
  • doramart [  管理员]
    2 年前
    @xxx000www  加扣扣:305511094
  • xxx000www
    2 年前
    兄弟,权限管理为什么只能控制菜单点进去第一页~第一页去访问第二页权限就废了,是我配置错了还是。。。求私聊学习
  • doramart [  管理员]
    2 年前
    @hank2015  http://www.html-js.cn/details/NyRNCzjUe.html
  • doramart [  管理员]
    2 年前
    @aaron9320  谢谢支持 ^_^~
  • aaron9320
    2 年前
    兄弟,干的不错,继续加油
  • hank2015
    2 年前
    要是有部署到生产环境的教程就好了。
  • jier945
    2 年前
    话说。git上木有部署到生产环境的教程哇