public ActionResult Edit(User user)
 {
     if (ModelState.IsValid)
     {
         //dbContext.AppRoles.Attach(user.AppRole);
         if (user.Id == 0)
         {
             dbContext.Users.Add(user);
         }
         else
         {
             //var userInDb = dbContext.Users.Include(u => u.AppRole)
             //    .SingleOrDefault(u => u.Id == user.Id);
             var  userInDb           = dbContext.Users.Find(user.Id);
             bool wasChangedUserInDb = userInDb != user;
             if (wasChangedUserInDb)
             {
                 AdminLogger.PostLogToDb(dbContext, userInDb, AdminLogger.CheckAction(userInDb, user));
             }
             if (userInDb != null)
             {
                 dbContext.Entry(userInDb).CurrentValues.SetValues(user);
                 //userInDb.AppRole.Permissions = user.AppRole.Permissions;
             }
         }
         dbContext.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(user));
 }
예제 #2
0
        /// <summary>
        /// 添加系统日志
        /// </summary>
        /// <param name="description"></param>
        protected void AddLog(string description, AdminLoggerModuleEnum adminLoggerModuleEnum)
        {
            AdminLogger adminLogger = new AdminLogger();

            adminLogger.AdminName   = LoginAdmin.Name;
            adminLogger.Description = description;
            adminLogger.FromIP      = IpHelper.UserHostAddress;
            adminLogger.Module      = (int)adminLoggerModuleEnum;
            AdminLoggerService.Insert(adminLogger);
        }
예제 #3
0
        public ActionResult Login()
        {
            Ocean.Entity.Admin admin         = new Entity.Admin();
            string             adminName     = Request["username"];
            string             adminPassword = Request["password"];
            AdminLogger        adminLogger   = new AdminLogger();

            adminLogger.AdminName  = adminName;
            adminLogger.CreateDate = DateTime.Now;
            adminLogger.FromIP     = IpHelper.UserHostAddress;
            adminLogger.Module     = (int)AdminLoggerModuleEnum.Admin;

            if (adminName.Length == 0)
            {
                return(JsonMessage(false, "账号不能为空"));
            }

            if (adminPassword.Length == 0)
            {
                return(JsonMessage(false, "密码不能为空"));
            }

            admin = _adminService.GetAdminByName(adminName);

            if (admin == null)
            {
                adminLogger.Description = string.Format("账号不存在,登录失败");
                _adminLoggerService.Insert(adminLogger);
                return(JsonMessage(false, "账号不存在"));
            }

            if (admin.Password != Hash.MD5Encrypt(Hash.MD5Encrypt(adminPassword)))
            {
                adminLogger.Description = string.Format("密码错误,登录失败");
                _adminLoggerService.Insert(adminLogger);
                return(JsonMessage(false, "密码错误"));
            }
            else if (admin.State == 2)
            {
                adminLogger.Description = string.Format("账号已被冻结,登录失败");
                _adminLoggerService.Insert(adminLogger);
                return(JsonMessage(false, "账号已被冻结,请与管理员取得联系"));
            }
            else
            {
                adminLogger.Description = string.Format("成功登录后台管理系统");
                _adminLoggerService.Insert(adminLogger);
                AdminLogin.Instance.CreateAdminCookie(admin.Id, admin.Password, admin.PasswordKey, GlobalConfig.GetConfig()["SafeCode"]);
                admin.LastLoginDate = DateTime.Now;
                admin.LoginCount    = admin.LoginCount + 1;
                admin.LastLoginIP   = IpHelper.UserHostAddress;
                _adminService.Update(admin);
                return(JsonMessage(true, "登录成功"));
            }
        }
예제 #4
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // Сбои при входе не приводят к блокированию учетной записи
            // Чтобы ошибки при вводе пароля инициировали блокирование учетной записи, замените на shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            var userName    = model.Email;
            var currentUser = await dbContext.Users.SingleOrDefaultAsync((u => u.Email.ToLower().Equals(userName.ToLower())));

            if (currentUser != null)
            {
                if (currentUser.IsBanned)
                {
                    LogOff();
                    return(View("Lockout"));
                }
            }
            else
            {
                LogOff();
            }

            switch (result)
            {
            case SignInStatus.Success:
                List <AdminAction> actions = new List <AdminAction>();
                actions.Add(AdminAction.Login);
                AdminLogger.PostLogToDb(dbContext, currentUser, actions);
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Неудачная попытка входа.");
                return(View(model));
            }
        }
예제 #5
0
 public AdminLoggerDTO(AdminLogger adminLogger)
 {
     this.AdminName   = adminLogger.AdminName;
     this.FromIP      = adminLogger.FromIP;
     this.Description = adminLogger.Description;
 }
예제 #6
0
 public WebControllerBase()
 {
     _adminLogger = new AdminLogger();
     _errorLogger = new ErrorLogger();
     _userLogger  = new UserLogger();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ApiControllerBase"/> class.
 /// </summary>
 public ApiControllerBase()
 {
     _adminLogger = new AdminLogger();
     _errorLogger = new ErrorLogger();
     _apiLogger   = new APIResponseLogger();
 }