后台:修改权限用表
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user