真实用到的:用于判断当前用户是否在当前租户下
import { provide } from '@ali/midway';
import { MidwayWebMiddleware, IWebMiddleware } from '@midwayjs/web';
import { HsfService } from '../service/hsf';
@provide('login')
export class LoginMiddleware implements IWebMiddleware {
// 2. 判断是否有租户权限
resolve(): MidwayWebMiddleware {
return async (ctx, next) => {
const { user } = ctx;
const hsfService = await ctx.requestContext.getAsync<HsfService>(
'hsfService'
);
// 如果已经有租户列表
const result = await hsfService.fetch(
'bizServiceProxy.getBizSpaceByBucUser',
{
bucId: '' + user.bucid,
realmId: user.realmId,
operatorId: user.workid,
operator: user.name,
email: user.email,
}
);
for (let i = 0; i < result?.data?.length; ++i) {
const { isWhiteListUser } = result?.data?.[i];
if (!isWhiteListUser) {
ctx.redirect('/underMaintenance');
}
}
ctx.user.bizInfo = result?.data || [];
await next();
};
}
}