diff --git a/src/controllers/games/games.js b/src/controllers/games/games.js new file mode 100644 index 0000000..2003086 --- /dev/null +++ b/src/controllers/games/games.js @@ -0,0 +1,18 @@ +import GameInfo from '../../models/snoopy/GameInfo'; + +async function gameListCtrl(req, res, next) { + try { + const result = await GameInfo.find({deleted: false}); + res.send({ + errcode: 0, + gameList: result + }); + } catch (err) { + next(err); + } +} + +export { + gameListCtrl + +}; diff --git a/src/controllers/games/index.js b/src/controllers/games/index.js new file mode 100644 index 0000000..2511001 --- /dev/null +++ b/src/controllers/games/index.js @@ -0,0 +1,10 @@ +import { Router } from 'express'; +import {gameListCtrl} from './games'; + + +const router = new Router(); + +router.get('/list', gameListCtrl); + + +export default router; diff --git a/src/controllers/sys/permission.js b/src/controllers/sys/permission.js index 1629ce4..a98d338 100644 --- a/src/controllers/sys/permission.js +++ b/src/controllers/sys/permission.js @@ -5,7 +5,7 @@ async function permissionListCtrl(req, res, next) { const result = await Role.find({}); res.send({ errcode: 0, - permissionList: result + roleList: result }); } catch (err) { next(err); @@ -58,14 +58,27 @@ async function permissionAddCtrl(req, res, next) { async function permissionDelCtrl(req, res, next) { const body = req.body; - try { - const delResult = await Role.deleteOne({ rolename: body.rolename }); - console.log(delResult); - res.send({ - errcode: 0 - }); - } catch (err) { - next(err); + // 批量删除 + if (body.roleList) { + try { + for(let i = 0; i < body.roleList.length; i++) { + await Role.deleteOne({ rolename: body.roleList[i].rolename }) + } + res.send({ + errcode: 0 + }); + } catch (err) { + next(err); + } + } else { + try { + const delResult = await Role.deleteOne({ rolename: body.rolename }); + res.send({ + errcode: 0 + }); + } catch (err) { + next(err); + } } } diff --git a/src/controllers/sys/users.js b/src/controllers/sys/users.js index c7145bb..557910f 100644 --- a/src/controllers/sys/users.js +++ b/src/controllers/sys/users.js @@ -1,7 +1,7 @@ import ldap from 'ldapjs'; import config from '../../../config/config'; import { User, LdapUser } from '../../models/admin/User'; -import combPer from '../../utils/comb-permissions'; +import {combPer, combRole} from '../../utils/comb-permissions'; async function userListCtrl(req, res, next) { const client = ldap.createClient({ @@ -46,7 +46,6 @@ async function userListCtrl(req, res, next) { }); compUserList.map(async user => { - console.log(user.cn); if (!user.userInfo) { const newUser = new User({ _id: user.uidNumber, @@ -67,13 +66,16 @@ async function userListCtrl(req, res, next) { compUserList = compUserList.map(user => { let permissions = user.userInfo.permissions; + let roles = combRole(permissions); permissions = combPer(permissions); let userInfo = user.userInfo; userInfo.permissions = permissions; + userInfo.roles = roles; return userInfo; }); res.send({ + errcode: 0, userList: compUserList }); client.unbind(); @@ -87,12 +89,10 @@ async function userListCtrl(req, res, next) { async function userEditCtrl(req, res, next) { const body = req.body; - console.log(body); const username = body.username; delete body.username; try { const searchResult = await LdapUser.findOne({ uid: username }); - console.log(searchResult); if (searchResult) { await User.updateOne({ username }, body); res.send({ diff --git a/src/controllers/user/info.js b/src/controllers/user/info.js index 88fe280..01f5fe5 100644 --- a/src/controllers/user/info.js +++ b/src/controllers/user/info.js @@ -1,12 +1,10 @@ import jwt from 'jsonwebtoken'; import config from '../../../config/config'; import { LdapUser } from '../../models/admin/User'; -import combPer from '../../utils/comb-permissions'; +import {combPer, combRole} from '../../utils/comb-permissions'; export default function(req, res, next) { - console.log('获用户信息') const BearerToken = req.headers.authorization; - console.log(BearerToken); if (!BearerToken) { // 无权限 res.send({ @@ -48,9 +46,11 @@ export default function(req, res, next) { } else { let permissions = [...searchResult.userInfo.permissions]; + let roles = combRole(permissions); permissions = combPer(permissions); const userInfo = JSON.parse(JSON.stringify(searchResult.userInfo)); userInfo.permissions = permissions; + userInfo.roles = roles; res.send({ errcode: 0, userInfo diff --git a/src/controllers/user/login.js b/src/controllers/user/login.js index 0e2b4fb..51f3f35 100644 --- a/src/controllers/user/login.js +++ b/src/controllers/user/login.js @@ -4,7 +4,6 @@ import config from '../../../config/config'; import {User} from '../../models/admin/User'; export default function(req, res, next) { - console.log('登录') const body = req.body; const client = ldap.createClient({ url: config.ldap.url diff --git a/src/middleware/permission.js b/src/middleware/permission.js index f00d26c..935c999 100644 --- a/src/middleware/permission.js +++ b/src/middleware/permission.js @@ -1,7 +1,7 @@ import jwt from 'jsonwebtoken'; import config from '../../config/config'; import { LdapUser } from '../models/admin/User'; -import combPer from '../utils/comb-permissions' +import { combPer, combRole } from '../utils/comb-permissions'; export default function(req, res, next) { const BearerToken = req.headers.authorization; @@ -32,13 +32,14 @@ export default function(req, res, next) { // 获取用户信息 try { const username = decode.username; - const searchResult = await LdapUser.findOne({ uid: username }).populate({ - path: 'userInfo', - populate: { + const searchResult = await LdapUser.findOne({ uid: username }) + .populate({ + path: 'userInfo', + populate: { path: 'permissions' - } - }).exec(); - console.log(searchResult); + } + }) + .exec(); if (!searchResult) { res.send({ errcode: 1, diff --git a/src/models/admin/User.js b/src/models/admin/User.js index ae85abd..bc77574 100644 --- a/src/models/admin/User.js +++ b/src/models/admin/User.js @@ -18,18 +18,18 @@ const UserSchema = new mongoose.Schema( default: 'https://hbimg.huabanimg.com/dd46766769229284b75a0142d239c3f7a5f4a2bf37ead-9XoIGZ_fw658' }, - // 角色 + // 角色, 可忽略,角色主要来源于 permissions 填充 roles: [{ type: String }], // 权限组 permissions: [{ type: String, ref: 'Role' }], // 状态 - status: { type: String, default: '0' }, + status: { type: String, default: '1' }, // 签名 - signature: { type: String }, + signature: { type: String, default: '' }, // 备注 - comment: { type: String }, + comment: { type: String, default: '' }, // 更改人 - lastModifiedBy: { type: String }, + lastModifiedBy: { type: String, default: 'system' }, // 最后登录时间 lastLogin: { type: Date } }, @@ -52,7 +52,11 @@ const RoleSchema = new mongoose.Schema( // 备注 comment: { type: String }, // 权限 - permissions: [{ type: String }] + permissions: [{ type: String }], + // 权限表 - 页面 + basePermissionTable: {type: String}, + // 权限表 - 游戏 + gamePermissionTable: {type: String} }, { collection: 'roles', @@ -70,7 +74,7 @@ const LdapUserSchema = new mongoose.Schema( userInfo: { type: String, ref: 'User' } }, { - collection: 'ldap-users', + collection: 'ldap_users', timestamps: true } ); diff --git a/src/router/index.js b/src/router/index.js index fe79d2a..b03efb2 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -4,12 +4,14 @@ import {Router} from 'express'; import commonRouter from './../controllers/common' import sysRouter from './../controllers/sys' import userRouter from './../controllers/user' +import gamesRouter from './../controllers/games' const router = new Router(); router.use('/common', commonRouter); router.use('/sys', sysRouter); router.use('/user', userRouter); +router.use('/games', gamesRouter); export default router \ No newline at end of file diff --git a/src/utils/comb-permissions.js b/src/utils/comb-permissions.js index 5d3906a..4d9d3d4 100644 --- a/src/utils/comb-permissions.js +++ b/src/utils/comb-permissions.js @@ -1,4 +1,4 @@ -export default function(perArr) { +function combPer(perArr) { let permissions = perArr; permissions = permissions.map(permission => { return permission.permissions; @@ -8,3 +8,13 @@ export default function(perArr) { }, []); return [...new Set(permissions)]; } + +function combRole(perArr) { + let roles = perArr; + roles = roles.map(role => { + return role.name + }); + return roles; +} + +export { combPer, combRole }; diff --git a/test/test2.js b/test/test2.js index e84bfe3..3b45ad4 100644 --- a/test/test2.js +++ b/test/test2.js @@ -23,7 +23,6 @@ app.get('/', function(req, res, next) { //第一个参数:是用户,必须是从根节点到用户节点的全路径 //第二个参数:用户密码 client.bind('cn=admin,dc=kingsome,dc=cn', 'milesQWE321', function(err, res1) { - console.log(err); //开始查询 //第一个参数:查询基础路径,代表在查询用户信心将在这个路径下进行,这个路径是由根节开始 //第二个参数:查询选项 @@ -43,14 +42,12 @@ app.get('/', function(req, res, next) { //查询错误事件 res2.on('error', function(err) { - console.error('error: ' + err.message); //unbind操作,必须要做 client.unbind(); }); //查询结束 res2.on('end', function(result) { - console.log(entries) if (entries.length !== 0) { client.bind(entries[0].dn, 'yulixing123456', function( err,