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({}); const result = await Role.find({});
res.send({ res.send({
errcode: 0, errcode: 0,
permissionList: result roleList: result
}); });
} catch (err) { } catch (err) {
next(err); next(err);
@ -58,14 +58,27 @@ async function permissionAddCtrl(req, res, next) {
async function permissionDelCtrl(req, res, next) { async function permissionDelCtrl(req, res, next) {
const body = req.body; const body = req.body;
try { // 批量删除
const delResult = await Role.deleteOne({ rolename: body.rolename }); if (body.roleList) {
console.log(delResult); try {
res.send({ for(let i = 0; i < body.roleList.length; i++) {
errcode: 0 await Role.deleteOne({ rolename: body.roleList[i].rolename })
}); }
} catch (err) { res.send({
next(err); 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 ldap from 'ldapjs';
import config from '../../../config/config'; import config from '../../../config/config';
import { User, LdapUser } from '../../models/admin/User'; 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) { async function userListCtrl(req, res, next) {
const client = ldap.createClient({ const client = ldap.createClient({
@ -46,7 +46,6 @@ async function userListCtrl(req, res, next) {
}); });
compUserList.map(async user => { compUserList.map(async user => {
console.log(user.cn);
if (!user.userInfo) { if (!user.userInfo) {
const newUser = new User({ const newUser = new User({
_id: user.uidNumber, _id: user.uidNumber,
@ -67,13 +66,16 @@ async function userListCtrl(req, res, next) {
compUserList = compUserList.map(user => { compUserList = compUserList.map(user => {
let permissions = user.userInfo.permissions; let permissions = user.userInfo.permissions;
let roles = combRole(permissions);
permissions = combPer(permissions); permissions = combPer(permissions);
let userInfo = user.userInfo; let userInfo = user.userInfo;
userInfo.permissions = permissions; userInfo.permissions = permissions;
userInfo.roles = roles;
return userInfo; return userInfo;
}); });
res.send({ res.send({
errcode: 0,
userList: compUserList userList: compUserList
}); });
client.unbind(); client.unbind();
@ -87,12 +89,10 @@ async function userListCtrl(req, res, next) {
async function userEditCtrl(req, res, next) { async function userEditCtrl(req, res, next) {
const body = req.body; const body = req.body;
console.log(body);
const username = body.username; const username = body.username;
delete body.username; delete body.username;
try { try {
const searchResult = await LdapUser.findOne({ uid: username }); const searchResult = await LdapUser.findOne({ uid: username });
console.log(searchResult);
if (searchResult) { if (searchResult) {
await User.updateOne({ username }, body); await User.updateOne({ username }, body);
res.send({ res.send({

View File

@ -1,12 +1,10 @@
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import config from '../../../config/config'; import config from '../../../config/config';
import { LdapUser } from '../../models/admin/User'; 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) { export default function(req, res, next) {
console.log('获用户信息')
const BearerToken = req.headers.authorization; const BearerToken = req.headers.authorization;
console.log(BearerToken);
if (!BearerToken) { if (!BearerToken) {
// 无权限 // 无权限
res.send({ res.send({
@ -48,9 +46,11 @@ export default function(req, res, next) {
} else { } else {
let permissions = [...searchResult.userInfo.permissions]; let permissions = [...searchResult.userInfo.permissions];
let roles = combRole(permissions);
permissions = combPer(permissions); permissions = combPer(permissions);
const userInfo = JSON.parse(JSON.stringify(searchResult.userInfo)); const userInfo = JSON.parse(JSON.stringify(searchResult.userInfo));
userInfo.permissions = permissions; userInfo.permissions = permissions;
userInfo.roles = roles;
res.send({ res.send({
errcode: 0, errcode: 0,
userInfo userInfo

View File

@ -4,7 +4,6 @@ import config from '../../../config/config';
import {User} from '../../models/admin/User'; import {User} from '../../models/admin/User';
export default function(req, res, next) { export default function(req, res, next) {
console.log('登录')
const body = req.body; const body = req.body;
const client = ldap.createClient({ const client = ldap.createClient({
url: config.ldap.url url: config.ldap.url

View File

@ -1,7 +1,7 @@
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import config from '../../config/config'; import config from '../../config/config';
import { LdapUser } from '../models/admin/User'; 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) { export default function(req, res, next) {
const BearerToken = req.headers.authorization; const BearerToken = req.headers.authorization;
@ -32,13 +32,14 @@ export default function(req, res, next) {
// 获取用户信息 // 获取用户信息
try { try {
const username = decode.username; const username = decode.username;
const searchResult = await LdapUser.findOne({ uid: username }).populate({ const searchResult = await LdapUser.findOne({ uid: username })
path: 'userInfo', .populate({
populate: { path: 'userInfo',
populate: {
path: 'permissions' path: 'permissions'
} }
}).exec(); })
console.log(searchResult); .exec();
if (!searchResult) { if (!searchResult) {
res.send({ res.send({
errcode: 1, errcode: 1,

View File

@ -18,18 +18,18 @@ const UserSchema = new mongoose.Schema(
default: default:
'https://hbimg.huabanimg.com/dd46766769229284b75a0142d239c3f7a5f4a2bf37ead-9XoIGZ_fw658' 'https://hbimg.huabanimg.com/dd46766769229284b75a0142d239c3f7a5f4a2bf37ead-9XoIGZ_fw658'
}, },
// 角色 // 角色 可忽略,角色主要来源于 permissions 填充
roles: [{ type: String }], roles: [{ type: String }],
// 权限组 // 权限组
permissions: [{ type: String, ref: 'Role' }], 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 } lastLogin: { type: Date }
}, },
@ -52,7 +52,11 @@ const RoleSchema = new mongoose.Schema(
// 备注 // 备注
comment: { type: String }, comment: { type: String },
// 权限 // 权限
permissions: [{ type: String }] permissions: [{ type: String }],
// 权限表 - 页面
basePermissionTable: {type: String},
// 权限表 - 游戏
gamePermissionTable: {type: String}
}, },
{ {
collection: 'roles', collection: 'roles',
@ -70,7 +74,7 @@ const LdapUserSchema = new mongoose.Schema(
userInfo: { type: String, ref: 'User' } userInfo: { type: String, ref: 'User' }
}, },
{ {
collection: 'ldap-users', collection: 'ldap_users',
timestamps: true timestamps: true
} }
); );

View File

@ -4,12 +4,14 @@ import {Router} from 'express';
import commonRouter from './../controllers/common' import commonRouter from './../controllers/common'
import sysRouter from './../controllers/sys' import sysRouter from './../controllers/sys'
import userRouter from './../controllers/user' import userRouter from './../controllers/user'
import gamesRouter from './../controllers/games'
const router = new Router(); const router = new Router();
router.use('/common', commonRouter); router.use('/common', commonRouter);
router.use('/sys', sysRouter); router.use('/sys', sysRouter);
router.use('/user', userRouter); router.use('/user', userRouter);
router.use('/games', gamesRouter);
export default router export default router

View File

@ -1,4 +1,4 @@
export default function(perArr) { function combPer(perArr) {
let permissions = perArr; let permissions = perArr;
permissions = permissions.map(permission => { permissions = permissions.map(permission => {
return permission.permissions; return permission.permissions;
@ -8,3 +8,13 @@ export default function(perArr) {
}, []); }, []);
return [...new Set(permissions)]; 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) { 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) { res2.on('error', function(err) {
console.error('error: ' + err.message);
//unbind操作必须要做 //unbind操作必须要做
client.unbind(); client.unbind();
}); });
//查询结束 //查询结束
res2.on('end', function(result) { res2.on('end', function(result) {
console.log(entries)
if (entries.length !== 0) { if (entries.length !== 0) {
client.bind(entries[0].dn, 'yulixing123456', function( client.bind(entries[0].dn, 'yulixing123456', function(
err, err,