public ICulture Load(IUser user) { var ngmaDomainService = DependencyResolver.Current.GetService<IMaintDomainService>(); var cultures = ngmaDomainService.GetCultures(); var systemSettings = ngmaDomainService.GetSystemSettings(); SiteModel siteModel = new SiteModel(systemSettings); Culture culture = cultures.FirstOrDefault(x => x.IsEnabled && x.CultureId == siteModel.DefaultCulture) ?? cultures.FirstOrDefault(x => x.IsEnabled); if (user != null) { User tuser = user as User; if (tuser != null && tuser.CultureId != 0) { return cultures.FirstOrDefault(x => x.CultureId == tuser.CultureId) ?? culture; } } return culture; }
public async Task<ActionResult> Settings(SiteSettingsModel model) { var siteModel = new SiteModel(MaintDbContext.SystemSettings); model.FromEntity(siteModel, true, ControllerContext); if (!TryUpdateModel(siteModel, model)) { return Template(model.CreateTemplate(ControllerContext)); } var db = MaintDbContext; siteModel.Save(db); await db.SaveChangesAsync(); MaintDomainService.ClearSystemSettingsCache(); await SetFlashAsync(new FlashMessage { Text = MaintCultureTextResources.SuccessToSave, MessageType = FlashMessageType.Success, }); return Settings(); }
public ActionResult Index(SignInModel model, string returnUrl) { var siteModel = new SiteModel(MaintDbContext.SystemSettings); if (!ModelState.IsValid) { return Template(model.CreateTemplate()); } var db = MaintDbContext; var adminUser = db.Users.FirstOrDefault(x => x.LoginName == model.UserName); if (adminUser == null) { this.ModelState.AddModelError("UserName", "用户名错"); return Template(model.CreateTemplate()); } var expiredTime = DateTime.Now.AddMinutes(-30); // Request.UserHostAddress int count = siteModel.MaxSignInFailTimes - adminUser.LoginFailedLogs.OrderByDescending(x => x.CreationTime).Count(x => x.CreationTime > expiredTime && x.IpAddress == Request.UserHostAddress); if (count <= 0) { this.ModelState.AddModelError("UserName", "您已经失败 " + siteModel.MaxSignInFailTimes + " 次,请明天再试。"); return Template(model.CreateTemplate()); } if (adminUser.HashPassword(model.Password) != adminUser.Password) { adminUser.LoginFailedLogs.Add(new UserLoginFailedLog() { User = adminUser, IpAddress = Request.UserHostAddress, CreationTime = DateTime.Now, }); db.SaveChanges(); count--; if (count > 0) { this.ModelState.AddModelError("Password", "密码错, 您还剩" + count + " 次"); } else { this.ModelState.AddModelError("Password", "密码错, 已经失败" + siteModel.MaxSignInFailTimes + " 次,请明天再试"); } return Template(model.CreateTemplate()); } foreach (var log in adminUser.LoginFailedLogs.Where(x => x.IpAddress == Request.UserHostAddress).ToList()) { db.UserLoginFailedLogs.Remove(log); } db.SaveChanges(); var privileges = adminUser.IsSuper ? _privilegeLoader.Load().Items.Select(x => x.Name).ToArray() : adminUser.Roles.ToList().SelectMany(x => x.PrivilegeArray).ToArray(); _authenticate.SetSession(adminUser.LoginName, new Session { UserName = adminUser.LoginName, Privileges = privileges, AppId = "Website", ExpiredTime = DateTime.Now.AddDays(1), }); if (string.IsNullOrEmpty(returnUrl)) { return Redirect("/"); } return Redirect(returnUrl); }