后台:修改权限用表
This commit is contained in:
@@ -63,10 +63,8 @@ app.set('name', 'zyz');
|
||||
// 全局配置,对所有 env 所有 serverType 生效
|
||||
app.configure(function () {
|
||||
app.loadConfig('database', app.getBase() + '/config/database');
|
||||
app.loadConfig('serverName', app.getBase() + '/config/serverName');
|
||||
console.log('env:', app.get('env'));
|
||||
console.log('db:', app.get('database'));
|
||||
console.log('serverName:', app.get('serverName'))
|
||||
|
||||
initMongodb(app);
|
||||
initGmMongodb(app);
|
||||
|
||||
@@ -245,18 +245,23 @@ export class EntryHandler {
|
||||
console.log('user token not found');
|
||||
return resResult(STATUS.TOKEN_ERR);
|
||||
}
|
||||
if(!user.isEnable) {
|
||||
return resResult(STATUS.GM_NO_AUTHORITY_GET);
|
||||
}
|
||||
|
||||
// console.log(self.app.get('serverId'));
|
||||
await session.abind(user.username);
|
||||
session.set('uid', user.uid);
|
||||
session.set('roleId', user.username);
|
||||
session.set('roleName', user.name);
|
||||
session.set('groupId', user.groupId);
|
||||
session.set('eventStatus', 0);
|
||||
session.set('sid', self.app.get('serverId'));
|
||||
session.push('uid', () => { });
|
||||
session.push('sid', () => { });
|
||||
session.push('roleId', () => { });
|
||||
session.push('roleName', () => { });
|
||||
session.push('groupId', () => { });
|
||||
session.push('eventStatus', () => { });
|
||||
// session.push('rid', function (err) {
|
||||
// if (err) {
|
||||
@@ -267,7 +272,6 @@ export class EntryHandler {
|
||||
|
||||
// put user into channel
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
serverType: this.app.get('serverName'),
|
||||
env: this.app.get('env')
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ import {Application, RouteRecord, FrontendOrBackendSession, HandlerCallback } fr
|
||||
import { GM_API_TYPE, STATUS } from "../../../consts";
|
||||
import { GMGroupModel } from "../../../db/GMGroup";
|
||||
import { GMRecordModel } from "../../../db/GMRecord";
|
||||
import { GMUserGroupModel } from "../../../db/GMUserGroup";
|
||||
import { gameData } from "../../../pubUtils/data";
|
||||
import { resResult } from "../../../pubUtils/util";
|
||||
|
||||
@@ -16,17 +15,15 @@ var Filter = function(this: any, app: Application) {
|
||||
|
||||
Filter.prototype.before = async function (routeRecord: RouteRecord, msg: any, session: FrontendOrBackendSession, next: HandlerCallback) {
|
||||
const uid = session.get('uid');
|
||||
const groupId = session.get('groupId');
|
||||
|
||||
let route = routeRecord.route;
|
||||
console.log('********uid', uid, route);
|
||||
let dicApi = gameData.apiByUrl.get(route);
|
||||
if(!dicApi) {
|
||||
return next(new Error(), resResult(STATUS.GM_MISS_API));
|
||||
}
|
||||
let userGroup = await GMUserGroupModel.getUserGroupByUid(uid);
|
||||
if(!userGroup) {
|
||||
return next(new Error(), resResult(STATUS.GM_NO_AUTHORITY_GET));
|
||||
}
|
||||
let group = await GMGroupModel.getGroupById(userGroup.groupId);
|
||||
let group = await GMGroupModel.getGroupById(groupId);
|
||||
|
||||
if(!group) {
|
||||
return next(new Error(), resResult(STATUS.GM_NO_AUTHORITY_GET));
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
module.exports = {
|
||||
'development': {
|
||||
'type': 'development',
|
||||
'name': '本地服'
|
||||
},
|
||||
'stable': {
|
||||
'type': 'stable',
|
||||
'name': '正式服'
|
||||
},
|
||||
'alpha': {
|
||||
'type': 'alpha',
|
||||
'name': '测试服'
|
||||
},
|
||||
'dev': {
|
||||
'type': 'dev',
|
||||
'name': '开发服'
|
||||
},
|
||||
'isbn': {
|
||||
'type': 'isbn',
|
||||
'name': '版号服'
|
||||
},
|
||||
'monitor': {
|
||||
'type': 'monitor',
|
||||
'name': '监控服'
|
||||
},
|
||||
'distribute': {
|
||||
'type': 'distribute',
|
||||
'name': '分布式测试'
|
||||
},
|
||||
'sq1': {
|
||||
'type': 'sq1',
|
||||
'name': '1月功能测试'
|
||||
}
|
||||
};
|
||||
@@ -16,7 +16,8 @@ export default class ActivityController extends Controller {
|
||||
|
||||
public async getActivityGroupList() {
|
||||
const { ctx } = this;
|
||||
const { page, pageSize, form: { serverId, current, groupId} } = ctx.request.body;
|
||||
console.log('******', ctx.request.body);
|
||||
const { page, pageSize, form: { serverId, current, groupId} = { serverId: 0, current: false, groupId: 0 } } = ctx.request.body;
|
||||
ctx.body = await ctx.service.activity.getActivityGroupList(page, pageSize, serverId, current, groupId);
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { GMUserModel } from '@db/GMUser';
|
||||
import { GMUserGroupModel } from '@db/GMUserGroup'
|
||||
import { GMGroupModel } from '@db/GMGroup'
|
||||
import { GMRecordModel } from '@db/GMRecord'
|
||||
import { GM_API_TYPE, STATUS } from '@consts';
|
||||
@@ -25,14 +24,9 @@ module.exports = () => {
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.GM_MISS_API);
|
||||
return;
|
||||
}
|
||||
let userGroup = await GMUserGroupModel.getUserGroupByUid(user.uid);
|
||||
if(!userGroup) {
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.GM_NO_AUTHORITY_GET);
|
||||
return
|
||||
}
|
||||
let group = await GMGroupModel.getGroupById(userGroup.groupId);
|
||||
let group = await GMGroupModel.getGroupById(user.groupId);
|
||||
|
||||
if(!group) {
|
||||
if(!group || !user.isEnable) {
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.GM_NO_AUTHORITY_GET);
|
||||
return
|
||||
}
|
||||
|
||||
@@ -26,8 +26,13 @@ export default class Game extends Service {
|
||||
|
||||
public async getRegions() {
|
||||
const { ctx } = this;
|
||||
|
||||
const list = await RegionModel.getAllRegion();
|
||||
let user = ctx.user;
|
||||
let list = [];
|
||||
if(user.envs.indexOf('all') != -1) {
|
||||
list = await RegionModel.getAllRegion();
|
||||
} else {
|
||||
list = await RegionModel.findRegionByEnvs(user.envs||[]);
|
||||
}
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||
list
|
||||
});
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { GMUserModel } from '@db/GMUser';
|
||||
import { GMGroupModel } from '@db/GMGroup';
|
||||
import { GMUserGroupModel } from '@db/GMUserGroup';
|
||||
import { Service } from 'egg';
|
||||
import { STATUS } from '@consts';
|
||||
import { gameData } from '@pubUtils/data';
|
||||
@@ -24,17 +23,19 @@ export default class GMUsers extends Service {
|
||||
if(!user) {
|
||||
return ctx.service.utils.resResult(STATUS.GM_ERR_PASSWORD);
|
||||
}
|
||||
let userGroup = await GMUserGroupModel.getUserGroupByUid(user.uid);
|
||||
let group = new Array();
|
||||
if(userGroup) {
|
||||
let g = await GMGroupModel.getGroupById(userGroup.groupId);
|
||||
if(g) group.push(g.group);
|
||||
}
|
||||
console.log('******', group, token)
|
||||
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||
...user, group, token
|
||||
});
|
||||
if(!user.isEnable) {
|
||||
return ctx.service.utils.resResult(STATUS.GM_NO_AUTHORITY_GET);
|
||||
}
|
||||
let group = new Array();
|
||||
if(user.groupId != undefined) {
|
||||
let g = await GMGroupModel.getGroupById(user.groupId);
|
||||
if(g) group.push(g.group);
|
||||
}
|
||||
console.log('******', group, token)
|
||||
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||
...user, group, token
|
||||
});
|
||||
}catch(e) {
|
||||
console.log(e)
|
||||
}
|
||||
@@ -43,10 +44,9 @@ export default class GMUsers extends Service {
|
||||
public async currentUser() {
|
||||
const {ctx} = this;
|
||||
let user = ctx.user;
|
||||
let userGroup = await GMUserGroupModel.getUserGroupByUid(user.uid);
|
||||
let group = new Array();
|
||||
if(userGroup) {
|
||||
let g = await GMGroupModel.getGroupById(userGroup.groupId);
|
||||
if(user.groupId != undefined) {
|
||||
let g = await GMGroupModel.getGroupById(user.groupId);
|
||||
if(g) group.push(g.group);
|
||||
}
|
||||
|
||||
@@ -77,15 +77,12 @@ export default class GMUsers extends Service {
|
||||
if(list) {
|
||||
let result = new Array();
|
||||
for(let user of list) {
|
||||
let uid = user.uid;
|
||||
let userGroup = await GMUserGroupModel.getUserGroupByUid(uid);
|
||||
let groupId = 0, groupStr = '暂无', envs = [];
|
||||
if(userGroup) {
|
||||
let group = await GMGroupModel.getGroupById(userGroup.groupId);
|
||||
console.log(userGroup.groupId, group);
|
||||
if(user.groupId != undefined) {
|
||||
let group = await GMGroupModel.getGroupById(user.groupId);
|
||||
if(group) {
|
||||
groupId = userGroup.groupId;
|
||||
envs = userGroup.envs
|
||||
groupId = user.groupId;
|
||||
envs = user.envs
|
||||
groupStr = group.name;
|
||||
}
|
||||
}
|
||||
@@ -200,8 +197,7 @@ export default class GMUsers extends Service {
|
||||
* 用户组添加接口
|
||||
*/
|
||||
public async saveGmGroupToUser(uid: number, groupId: number, envs: string[]) {
|
||||
|
||||
await GMUserGroupModel.addUserGroup(uid, groupId, envs);
|
||||
await GMUserModel.updateInfo(uid, { groupId, envs });
|
||||
return this.ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
|
||||
}
|
||||
|
||||
@@ -21,6 +21,15 @@ export default class GMUser extends BaseModel {
|
||||
@prop({ required: true })
|
||||
username: string;
|
||||
|
||||
@prop({ required: true })
|
||||
groupId: number;
|
||||
|
||||
@prop({ required: true, type: String })
|
||||
envs: string[];
|
||||
|
||||
@prop({ required: true, default: true })
|
||||
isEnable: boolean;
|
||||
|
||||
@prop({ required: true })
|
||||
password: string;
|
||||
|
||||
@@ -30,6 +39,11 @@ export default class GMUser extends BaseModel {
|
||||
@prop({ required: true })
|
||||
token: string;
|
||||
|
||||
public static async updateInfo(uid: number, params: GMUserUpdate) {
|
||||
let user = await GMUserModel.findOneAndUpdate({ uid }, params, { new: true }).lean();
|
||||
return user;
|
||||
}
|
||||
|
||||
private static async encryptPass(password: string, salt?: string) {
|
||||
if (!salt) {
|
||||
salt = await bcrypt.genSalt(SALT_WORK_FACTOR);
|
||||
@@ -39,23 +53,23 @@ export default class GMUser extends BaseModel {
|
||||
}
|
||||
|
||||
public static async getGmAccountList(lean = true) {
|
||||
const user: GMUserType[] = await GMUserModel.find().select('uid username name token').lean(lean);
|
||||
const user: GMUserType[] = await GMUserModel.find().select('uid username name token envs groupId isEnable').lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async getGmAccountByToken(token: string, lean = true) {
|
||||
// console.log(token)
|
||||
const user: GMUserType = await GMUserModel.findOne({ token }).select('uid username name token').lean(lean);
|
||||
const user: GMUserType = await GMUserModel.findOne({ token }).select('uid username name token envs groupId isEnable').lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async getGmAccountByUid(uid: number, lean = true) {
|
||||
const user: GMUserType = await GMUserModel.findOne({ uid }).select('uid username name token').lean(lean);
|
||||
const user: GMUserType = await GMUserModel.findOne({ uid }).select('uid username name token envs groupId isEnable').lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async getGmAccountByUsername(username: string, lean = true) {
|
||||
const user: GMUserType = await GMUserModel.findOne({ username }).select('uid username name token').lean(lean);
|
||||
const user: GMUserType = await GMUserModel.findOne({ username }).select('uid username name token envs groupId isEnable').lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
@@ -64,7 +78,7 @@ export default class GMUser extends BaseModel {
|
||||
if (user) {
|
||||
let { salt } = user;
|
||||
let { npassword } = await this.encryptPass(password, salt);
|
||||
const checkUser: GMUserType = await GMUserModel.findOneAndUpdate({ username, password: npassword }, { token }).select('uid username name token').lean(lean);
|
||||
const checkUser: GMUserType = await GMUserModel.findOneAndUpdate({ username, password: npassword }, { token }).select('uid username name token envs groupId isEnable').lean(lean);
|
||||
return checkUser;
|
||||
} else {
|
||||
return null
|
||||
@@ -93,3 +107,4 @@ export function loadGMUserModel(connect: mongoose.Connection) {
|
||||
}
|
||||
|
||||
export interface GMUserType extends Pick<DocumentType<GMUser>, keyof GMUser> { };
|
||||
export type GMUserUpdate = Partial<GMUserType>; // 将所有字段变成可选项
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, ReturnModelType, mongoose } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* GM账号和用户组关系接口
|
||||
*/
|
||||
@index({ uid: 1, groupId: 1 })
|
||||
@index({ uid: 1, env: 1 })
|
||||
|
||||
export default class GMUserGroup extends BaseModel {
|
||||
@prop({ required: true })
|
||||
uid: number;
|
||||
|
||||
@prop({ required: true, type: String })
|
||||
envs: string[];
|
||||
|
||||
@prop({ required: true })
|
||||
groupId: number;
|
||||
|
||||
public static async getUserGroupByUid(uid: number) {
|
||||
const user: GMUserGroupType = await GMUserGroupModel.findOne({ uid }).lean();
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async removeUserGroup(uid: number, groups: Array<number>) {
|
||||
const user = await GMUserGroupModel.deleteMany({uid, groupId: {$in: groups}});
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async addUserGroup(uid: number, groupId: number, envs: string[]) {
|
||||
const result: GMUserGroupType = await GMUserGroupModel.findOneAndUpdate({uid}, { envs, groupId }, {new:true, upsert:true}).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export let GMUserGroupModel: ReturnModelType<typeof GMUserGroup, {}>;
|
||||
export function loadGMUserGroupModel(connect: mongoose.Connection) {
|
||||
GMUserGroupModel = getModelForClass(GMUserGroup, {
|
||||
existingConnection: connect
|
||||
});
|
||||
}
|
||||
|
||||
export interface GMUserGroupType extends Pick<DocumentType<GMUserGroup>, keyof GMUserGroup>{};
|
||||
@@ -81,6 +81,11 @@ export default class Region extends BaseModel {
|
||||
const rec: RegionType = await RegionModel.findOne({ env }).select('-_id').lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async findRegionByEnvs(envs: string[]) {
|
||||
const rec: RegionType[] = await RegionModel.find({ env: { $in: envs } }).select('-_id').lean();
|
||||
return rec;
|
||||
}
|
||||
}
|
||||
|
||||
export let RegionModel: ReturnModelType<typeof Region, {}>;
|
||||
|
||||
@@ -2,7 +2,6 @@ import { mongoose } from "@typegoose/typegoose";
|
||||
import { loadGMGroupModel } from "./GMGroup";
|
||||
import { loadGMRecordModel } from "./GMRecord";
|
||||
import { loadGMUserModel } from './GMUser'
|
||||
import { loadGMUserGroupModel } from "./GMUserGroup";
|
||||
import { loadRegionModel } from "./Region";
|
||||
import { loadServerlistModel } from "./Serverlist";
|
||||
import { loadGMMailModel } from './GMMail';
|
||||
@@ -13,7 +12,6 @@ export function loadGmDb(connect: mongoose.Connection) {
|
||||
// console.log('************')
|
||||
loadGMGroupModel(connect);
|
||||
loadGMUserModel(connect);
|
||||
loadGMUserGroupModel(connect);
|
||||
loadGMRecordModel(connect);
|
||||
loadRegionModel(connect);
|
||||
loadServerlistModel(connect);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { GMUserModel } from '@db/GMUser';
|
||||
import { GMUserGroupModel } from '@db/GMUserGroup'
|
||||
import { GMGroupModel } from '@db/GMGroup'
|
||||
import { GMRecordModel } from '@db/GMRecord'
|
||||
import { GM_API_TYPE, STATUS } from '@consts';
|
||||
@@ -25,14 +24,13 @@ module.exports = () => {
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.GM_MISS_API);
|
||||
return;
|
||||
}
|
||||
let userGroup = await GMUserGroupModel.getUserGroupByUid(user.uid);
|
||||
if(!userGroup) {
|
||||
if(user.groupId == undefined) {
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.GM_NO_AUTHORITY_GET);
|
||||
return
|
||||
}
|
||||
let group = await GMGroupModel.getGroupById(userGroup.groupId);
|
||||
let group = await GMGroupModel.getGroupById(user.groupId);
|
||||
|
||||
if(!group) {
|
||||
if(!group || !user.isEnable) {
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.GM_NO_AUTHORITY_GET);
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user