public async Task <UserCheckResult> CheckLogin(LoginView login) { var set = dbContext.Set <Hcs.Platform.BaseModels.PlatformUser>(); var user = await set.FirstOrDefaultAsync(x => x.Account == login.Account && x.Password == login.Password); string message = null; switch (user) { case null: message = "Login.UserNotExists"; break; case var u when u.Status != UserStatus.Active: message = "Login.UserNotActive"; break; } return(new UserCheckResult(user != null && user.Status == UserStatus.Active, message, user)); }
public async Task <IEnumerable <string> > GetRoleCodes(IPlatformUser user) { var set = dbcontext.Set <BaseModels.PlatformGroupRole>(); var key = Core.CacheKeyBuilder.UserRoleCode(user.Id); var roles = cache.GetOrCreate(key, entry => { entry.AbsoluteExpirationRelativeToNow = new TimeSpan(0, 10, 0); var r = set.Where(x => x.PlatformGroup.PlatformUserGroups.Any(y => y.PlatformUserId == user.Id) && x.Permission != PermissionStatus.NotSet).AsEnumerable().Select(x => new { Permission = x.Permission, Code = x.FunctionCode + "." + x.FunctionRoleCode }).ToArray(); var denied = r.Where(x => x.Permission == PermissionStatus.Denied).Select(x => x.Code).ToArray(); var roleList = new List <string>(r.Where(x => x.Permission == PermissionStatus.Granted && !denied.Contains(x.Code)).Select(x => x.Code)); roleList.Add("Everyone.All"); return(roleList); }); return(await Task.FromResult(roles)); }