This commit is contained in:
yulixing 2019-05-28 20:00:02 +08:00
parent ee4eb8b4a7
commit ab5fc549b3
10 changed files with 230 additions and 13 deletions

View File

@ -1,6 +1,7 @@
import { Router } from 'express';
import testCtrl from './test';
import uploadRouter from './upload'
import minigameRouter from './minigame'
import permission from './../../middleware/permission';
const router = new Router();
@ -8,6 +9,7 @@ const router = new Router();
// TODO:
router.get('/test', permission, testCtrl);
router.use('/common', uploadRouter);
router.use('/', uploadRouter);
router.use('/', minigameRouter);
export default router;

View File

@ -0,0 +1,18 @@
import { Router } from 'express';
const router = new Router();
// 获取平台列表
router.post('/minigame', async (req, res, next) => {
const body = req.body;
try {
console.log(body);
res.send({
errcode: 0,
body
});
} catch (err) {
next(err);
}
});
export default router;

View File

@ -1,6 +1,7 @@
// import GameInfo from '../../models/snoopy/GameInfo';
import GameInfo from '../../models/admin/GameInfo';
import { Router } from 'express';
import { userInfo } from 'os';
const router = new Router();
@ -137,6 +138,45 @@ const router = new Router();
// }
// });
// TODO: 权限控制
// 获取游戏列表
router.get('/list', async (req, res, next) => {
const query = req.query || {};
const userPerms = req.user.permissions
console.log(req.query)
try {
let search = [];
let result = [];
if (query.type === 'all') {
// 返回所有游戏信息仅包含游戏_id与游戏名
result = await GameInfo.find({ deleted: false });
} else {
// TODO: 只返回有权限查阅的游戏
search = await GameInfo.find({ deleted: false });
result = search.filter(game => {
const uid = game._id
return userPerms.includes(`${uid}-readable`) || userPerms.includes(`${uid}-edit`) || userPerms.includes(`${uid}-publish`)
})
}
console.log(result)
res.send({
errcode: 0,
gameList: result,
user: req.user
});
} catch (err) {
next(err);
}
});
// 保存游戏信息
router.post('/save', async (req, res, next) => {
const body = req.body;
try {
@ -147,7 +187,7 @@ router.post('/save', async (req, res, next) => {
{ game_name_en: body.game_name_en }
]
});
if (search) {
if (search && !search.deleted) {
res.send({
errcode: 1,
errmsg: '游戏已存在!'
@ -155,9 +195,96 @@ router.post('/save', async (req, res, next) => {
} else {
const newGameInfo = new GameInfo(body);
const result = await newGameInfo.save();
console.log(result);
res.send({
errcode: 0,
gameInfo: result
});
}
} catch (err) {
next(err);
}
});
// 查找单个游戏信息
router.get('/info', async (req, res, next) => {
const query = req.query;
try {
const search = await GameInfo.findOne({
_id: query.uid,
deleted: false
});
if (search) {
res.send({
errcode: 0,
gameInfo: search
});
} else {
res.send({
errcode: 1,
errmsg: '游戏不存在或已删除!'
});
}
} catch (err) {
next(err);
}
});
// 更新游戏信息
router.post('/update', async (req, res, next) => {
const body = req.body;
try {
const search = await GameInfo.findOne({
_id: body._id,
deleted: false
});
if (search) {
const result = await GameInfo.update(
{
_id: body._id,
deleted: false
},
body
);
res.send({
errcode: 0
});
} else {
res.send({
errcode: 1,
errmsg: '游戏不存在或已删除!'
});
}
} catch (err) {
next(err);
}
});
// 删除一个游戏
router.post('/del', async (req, res, next) => {
const body = req.body;
try {
const search = await GameInfo.findOne({
_id: body.uid,
deleted: false
});
if (search) {
const result = await GameInfo.updateOne(
{
_id: body.uid,
deleted: false
},
{ deleted: true }
);
res.send({
errcode: 0
});
} else {
res.send({
errcode: 1,
errmsg: '游戏不存在或已删除!'
});
}
} catch (err) {
next(err);

View File

@ -110,4 +110,41 @@ router.post('/edit', async function userEditCtrl(req, res, next) {
}
});
router.post('/save', async (req, res, next) => {
const body = req.body;
const dn = `cn=${body.fullname},ou=people,dc=kingsome,dc=cn`;
const entry = {
cn: body.fullname,
sn: body.fullname,
objectClass: [
'posixAccount',
'inetOrgPerson',
'organizationalPerson',
'person'
],
uid: body.username
};
const client = ldap.createClient({
url: config.ldap.url
});
try {
client.bind(config.ldap.user, config.ldap.password, function(err, bindRes) {
if (err) next(err);
client.add(dn, entry, function(err) {
if (err) console.log(err);
// res.send({
// errcode: 0
// })
});
});
} catch (err) {
next(err);
}
});
export default router;

View File

@ -1,13 +1,13 @@
import { Router } from 'express';
import userInfoRouter from './info'
import loginRouter from './login'
import editRouter from './edit'
import permission from '../../middleware/permission';
import userInfoRouter from './info';
import loginRouter from './login';
import editRouter from './edit';
const router = new Router();
router.use('/user', userInfoRouter)
router.use('/user', loginRouter)
router.use('/user', editRouter)
router.use('/user', loginRouter);
router.use('/user', permission, userInfoRouter);
router.use('/user', permission, editRouter);
export default router;

View File

@ -70,7 +70,7 @@ router.post('/login', function(req, res, next) {
},
config.jwtSecret,
{
expiresIn: 60 * 60 * 2
expiresIn: 60 * 60 * 24
}
);
try {

View File

@ -46,6 +46,7 @@ export default function(req, res, next) {
let permissions = [...searchResult.permissions];
permissions = combPer(permissions);
const userInfo = JSON.parse(JSON.stringify(searchResult));
userInfo.permissions = permissions
req.user = userInfo;
next();
}

View File

@ -11,7 +11,8 @@ const GameInfo = new mongoose.Schema(
game_id: { type: String },
game_type: { type: String },
game_icon: { type: String },
platforms: [{type: Object}]
platforms: [{type: Object}],
deleted: {type: Boolean, default: false}
},
{
collection: 'game_info',

31
src/models/admin/OpLog.js Normal file
View File

@ -0,0 +1,31 @@
'use strict';
import mongoose from 'mongoose';
const Schema = mongoose.Schema;
const ObjectId = Schema.Types.ObjectId;
/**
* 操作日志
*/
const OpLog = new mongoose.Schema({
// 游戏id
admin: {type: ObjectId, ref: 'Admin'},
username: {type: String},
method: {type: String},
show_name: {type: String},
// 请求路径
path: {type: String},
user_agent: {type: String},
referer: {type: String},
// 请求的param
params: {type: Schema.Types.Mixed},
// ip
ip: {type: String},
// 备注
comment: {type: String},
}, {
collection: 'op_logs',
timestamps: true,
});
export default mongoose.model('OpLog', OpLog);

View File

@ -9,9 +9,9 @@ import gamesRouter from './../controllers/games';
const router = new Router();
// 公共接口
router.use('/', commonRouter);
router.use('/common', permission,commonRouter);
// 系统管理
router.use('/sys', sysRouter);
router.use('/sys', permission,sysRouter);
// 用户相关
router.use('/', userRouter);
// 游戏列表