using Infrastructure; using OpenAuth.Repository; using SqlSugar; namespace OpenAuth.App { /// /// 加载用户所有可访问的资源/机构/模块 /// 李玉宝新增于2016-07-19 10:53:30 /// public class AuthContextFactory { private SystemAuthStrategy _systemAuth; private NormalAuthStrategy _normalAuthStrategy; private readonly ISugarUnitOfWork _unitWork; public AuthContextFactory(SystemAuthStrategy sysStrategy , NormalAuthStrategy normalAuthStrategy , ISugarUnitOfWork unitWork) { _systemAuth = sysStrategy; _normalAuthStrategy = normalAuthStrategy; _unitWork = unitWork; } public AuthStrategyContext GetAuthStrategyContext(string username) { if (string.IsNullOrEmpty(username)) return null; IAuthStrategy service = null; if (username == Define.SYSTEM_USERNAME) { service = _systemAuth; } else { service = _normalAuthStrategy; //unitWork 是否自己释放 using (var uow = _unitWork.CreateContext()) { service.User = uow.User.GetFirst(u => u.Account == username); } } return new AuthStrategyContext(service); } } }