adminCtrl.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /**
  2. * Created by Administrator on 2016/1/16.
  3. * 权限控制层
  4. * 对权限和参数做初次过滤
  5. */
  6. var express = require('express');
  7. var router = express.Router();
  8. router.caseSensitive = true;
  9. var url = require('url');
  10. //管理员用户组对象
  11. var AdminGroup = require("../models/AdminGroup");
  12. var validator = require("validator");
  13. //站点配置
  14. var settings = require("../models/db/settings");
  15. var adminFunc = require("../models/db/adminFunc");
  16. //短id
  17. var shortid = require('shortid');
  18. function isAdminLogined(req){
  19. return req.session.adminlogined;
  20. }
  21. router.get("/",function(req,res,next){
  22. if(isAdminLogined(req)){
  23. res.redirect("/admin/manage");
  24. }else{
  25. next();
  26. }
  27. });
  28. //管理员主页
  29. router.get(["/manage","/manage/*"],function(req,res,next){
  30. if(isAdminLogined(req)){
  31. next();
  32. }else{
  33. res.redirect("/admin");
  34. }
  35. });
  36. //模块管理页面
  37. router.get('/manage/:targetPage', function(req, res, next) {
  38. var currentPage = req.params.targetPage;
  39. if(settings[currentPage]){
  40. if(!adminFunc.checkAdminPower(req,settings[currentPage][0] + '_view')){
  41. res.render("manage/public/notice", adminFunc.setDataForInfo('danger','对不起,您无权操作 <strong>'+settings[currentPage][1]+'</strong> 模块!'));
  42. }else{
  43. next();
  44. }
  45. }else{
  46. next();
  47. }
  48. });
  49. //通用对象列表数据查询
  50. router.get('/manage/getDocumentList/:defaultUrl',function(req,res,next){
  51. var currentPage = req.params.defaultUrl;
  52. if(adminFunc.checkAdminPower(req,currentPage + '_view')){
  53. next();
  54. }else{
  55. return res.json({});
  56. }
  57. });
  58. //获取单个对象数据
  59. router.get('/manage/:defaultUrl/item',function(req,res,next){
  60. var currentPage = req.params.defaultUrl;
  61. var params = url.parse(req.url,true);
  62. var targetId = params.query.uid;
  63. if(adminFunc.checkAdminPower(req,currentPage + '_view')){
  64. if(shortid.isValid(targetId)){
  65. next();
  66. }else{
  67. res.end(settings.system_illegal_param);
  68. }
  69. }else{
  70. return res.json({});
  71. }
  72. });
  73. //对象新增
  74. router.post('/manage/:defaultUrl/addOne',function(req,res,next){
  75. var currentPage = req.params.defaultUrl;
  76. if(adminFunc.checkAdminPower(req,currentPage + '_add')){
  77. next();
  78. }else{
  79. res.end(settings.system_noPower);
  80. }
  81. });
  82. //更新单条记录(执行更新)
  83. router.post('/manage/:defaultUrl/modify',function(req,res,next){
  84. var currentPage = req.params.defaultUrl;
  85. var params = url.parse(req.url,true);
  86. var targetId = params.query.uid;
  87. if(adminFunc.checkAdminPower(req,currentPage + '_modify')){
  88. if(shortid.isValid(targetId)){
  89. next();
  90. }else{
  91. res.end(settings.system_illegal_param);
  92. }
  93. }else{
  94. res.end(settings.system_noPower);
  95. }
  96. });
  97. //通用对象删除
  98. router.get('/manage/:defaultUrl/del',function(req,res,next){
  99. var currentPage = req.params.defaultUrl;
  100. var params = url.parse(req.url,true);
  101. var targetId = params.query.uid;
  102. if(adminFunc.checkAdminPower(req,currentPage + '_del')){
  103. if(shortid.isValid(targetId)){
  104. next();
  105. }else{
  106. res.end(settings.system_illegal_param);
  107. }
  108. }else{
  109. res.end(settings.system_noPower);
  110. }
  111. });
  112. //批量删除对象
  113. router.get('/manage/:defaultUrl/batchDel',function(req,res,next){
  114. var currentPage = req.params.defaultUrl;
  115. var params = url.parse(req.url,true);
  116. var ids = params.query.ids;
  117. var idsArr = ids.split(',');
  118. if(adminFunc.checkAdminPower(req,currentPage + '_del')){
  119. if(idsArr.length > 0){
  120. next();
  121. }else{
  122. res.end(settings.system_atLeast_one);
  123. }
  124. }else{
  125. res.end(settings.system_noPower);
  126. }
  127. });
  128. //访问指定对象的数据列表(不带分页)
  129. router.get('/manage/:modular/list', function(req, res, next) {
  130. var currentPage = req.params.modular;
  131. if(settings[currentPage]){
  132. if(!adminFunc.checkAdminPower(req,settings[currentPage][0] + '_view')){
  133. return res.json({});
  134. }else{
  135. next();
  136. }
  137. }else{
  138. next();
  139. }
  140. });
  141. //自定义校验扩展
  142. validator.extend('isUserName', function (str) {
  143. return /^[a-zA-Z][a-zA-Z0-9_]{4,11}$/.test(str);
  144. });
  145. validator.extend('isGBKName', function (str) {
  146. return /[\u4e00-\u9fa5]/.test(str);
  147. });
  148. validator.extend('isPsd', function (str) {
  149. return /(?!^\\d+$)(?!^[a-zA-Z]+$)(?!^[_#@]+$).{5,}/.test(str);
  150. });
  151. validator.extend('isQQ', function (str) {
  152. return RegExp(/^[1-9][0-9]{4,9}$/).test(str);
  153. });
  154. //只能是英文
  155. validator.extend('isEn', function (str) {
  156. return /^\S+[a-z A-Z]$/.test(str);
  157. });
  158. module.exports = router;