/** * 认证、鉴权类 */ import { HttpRequest, Instance, Session } from "noomi"; import { EntityManager, getEntityManager, Query } from "relaen"; import { AmGroup } from "../../dao/entity/base/amgroup"; import { AmUser } from "../../dao/entity/base/amuser"; @Instance() export class __AuthorityService{ /** * 登录 * @param userName 用户名 * @param pwd 密码 * @param request http request */ public async login(userName:string,pwd:string,request:HttpRequest){ let user:AmUser = await AmUser.findOne({userName:userName,pwd:pwd}); if(!user){ return { success:false, result:{message:'用户名或密码错误!'} } }else{ //添加到session this.addUserToSession(request,user); return { success:true, result:{ userName:userName, realName:user.realName } } } } /** * 添加用户到session * @param request * @param response * @param user */ private async addUserToSession(request:HttpRequest,user:AmUser){ //获取用户组 const groups:AmGroup[] = await user.getAmGroups(); //得到组id数组 const gids = groups?groups.map(item=>item.groupId):[]; const session:Session = await request.getSession(); session.set("authInfo",{ userId:user.userId, userName:user.userName, realName:user.realName, groups:gids }); } /** * 获取用户菜单 * @param request */ public async getUserMenu(request:HttpRequest){ const session:Session = await request.getSession(); let info:any = session.get("authInfo"); const em:EntityManager = await getEntityManager(); const query:Query = em.createQuery('AmGroupMenu'); const r = await query.select(['*','amMenu.*']) .where({ amGroup:{in:info.groups} }) .getResultList(); await em.close(); return {rows:r} } }