This commit is contained in:
yulixing 2019-05-16 21:03:58 +08:00
parent 3fd29c524f
commit 4aba59a4fc
11 changed files with 89 additions and 35 deletions

View File

@ -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
};

View File

@ -0,0 +1,10 @@
import { Router } from 'express';
import {gameListCtrl} from './games';
const router = new Router();
router.get('/list', gameListCtrl);
export default router;

View File

@ -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);
}
}
}

View File

@ -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({

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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
}
);

View File

@ -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

View File

@ -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 };

View File

@ -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,