import "reflect-metadata"; import { EntityManager, Repository, DataContext, DataHelper } from "maishu-node-data"; import path = require("path"); import { TokenData, Role, UserRole, MenuItemRecord, Station } from "../entities"; import { g } from "../global"; export class AuthDataContext extends DataContext { tokenDatas: Repository; roles: Repository; userRoles: Repository; menuItemRecords: Repository; stations: Repository; static entitiesPath = path.join(__dirname, "../entities.js"); constructor(entityManager: EntityManager) { super(entityManager); this.tokenDatas = this.manager.getRepository(TokenData); this.roles = this.manager.getRepository(Role); this.userRoles = this.manager.getRepository(UserRole); this.menuItemRecords = this.manager.getRepository(MenuItemRecord); this.stations = this.manager.getRepository(Station); } /** * 获取指定用户的角色 ID * @param userId 指定的用户 ID */ static async getUserRoleIds(userId: string): Promise { //TODO: 缓存 roleids let dc = await DataHelper.createDataContext(AuthDataContext, g.settings.db); let userRoles = await dc.userRoles.find({ user_id: userId }); return userRoles.map(o => o.role_id); } }