示例#1
0
        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;
        }
示例#2
0
 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();
 }
示例#3
0
        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);
        }