Esempio n. 1
1
        bool ValidLogin(Login login)
        {
            UserStore<IdentityUser> userStore = new UserStore<IdentityUser>();
            UserManager<IdentityUser> userManager = new UserManager<IdentityUser>(userStore)
            {
                UserLockoutEnabledByDefault = true,
                DefaultAccountLockoutTimeSpan = new System.TimeSpan(0, 10, 0),
                MaxFailedAccessAttemptsBeforeLockout = 5
            };
            var user = userManager.FindByName(login.UserName);

            if (user == null)
                return false;

            // User is locked out.
            if (userManager.SupportsUserLockout && userManager.IsLockedOut(user.Id))
                return false;

            // Validated user was locked out but now can be reset.
            if (userManager.CheckPassword(user, login.Password)
            && userManager.IsEmailConfirmed(user.Id))
            {
                if (userManager.SupportsUserLockout
                 && userManager.GetAccessFailedCount(user.Id) > 0)
                {
                    userManager.ResetAccessFailedCount(user.Id);
                }
            }
            // Login is invalid so increment failed attempts.
            else
            {
                bool lockoutEnabled = userManager.GetLockoutEnabled(user.Id);
                if (userManager.SupportsUserLockout && userManager.GetLockoutEnabled(user.Id))
                {
                    userManager.AccessFailed(user.Id);
                    return false;
                }
            }
            return true;
        }
        protected override IPrincipal ValidateUser(string userName, string password)
        {
            var user = _userManager.FindByName(userName);

            if (user == null)
            {
                return(null);
            }

            if (_userManager.IsLockedOut(user.Id))
            {
                return(null);
            }

            var result = _userManager.CheckPassword(user, password);

            if (result)
            {
                _userManager.ResetAccessFailedCount(user.Id);
                return(new ClaimsPrincipal(_userManager.CreateIdentity(user, "HTTP Basic")));
            }
            if (_userManager.SupportsUserLockout)
            {
                _userManager.AccessFailed(user.Id);
            }

            return(null);
        }
Esempio n. 3
0
        private ExpandedUserDTO UpdateDTOUser(ExpandedUserDTO paramExpandedUserDTO)
        {
            ApplicationUser result = UserManager.FindByName(paramExpandedUserDTO.UserName);

            //If we could not find the user, throw an exception
            if (result == null)
            {
                throw new Exception("Could not find the User");
            }
            result.Email = paramExpandedUserDTO.Email;

            //Lets check if the account needs to be unlocked]
            if (UserManager.IsLockedOut(result.Id))
            {
                //Unlock User
                UserManager.ResetAccessFailedCountAsync(result.Id);
            }
            UserManager.Update(result);
            //Was a password sent across?
            if (!string.IsNullOrEmpty(paramExpandedUserDTO.Password))
            {
                //remove current password
                var removePassword = UserManager.RemovePassword(result.Id);
                if (removePassword.Succeeded)
                {
                    //add new password
                    var AddPassword = UserManager.AddPassword(result.Id, paramExpandedUserDTO.Password);
                    if (AddPassword.Errors.Count() > 0)
                    {
                        throw new Exception(AddPassword.Errors.FirstOrDefault());
                    }
                }
            }
            return(paramExpandedUserDTO);
        }
Esempio n. 4
0
        /// <summary>
        /// Sign in the user in using the user name and password
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <param name="ipAddress"></param>
        /// <param name="isPersistent"></param>
        /// <param name="shouldLockout"></param>
        /// <returns></returns>
        public SignInStatus TronixPasswordSignIn(string userName, string password, string[] ipAddress, bool isPersistent = false, bool shouldLockout = false)
        {
            var user = UserManager?.FindByName(userName);

            if (user == null)
            {
                return(SignInStatus.Failure);
            }
            if (user.Inactive)
            {
                return(SignInStatus.Failure);
            }
            if (UserManager.IsLockedOut(user.Id))
            {
                return(SignInStatus.LockedOut);
            }
            if (UserManager.CheckPassword(user, password))
            {
                UserManager.ResetAccessFailedCount(user.Id);
                return(SignInOrTwoFactor(user, isPersistent, ipAddress));
            }
            if (!shouldLockout)
            {
                return(SignInStatus.Failure);
            }

            // If lockout is requested, increment access failed count which might lock out the user
            UserManager.AccessFailed(user.Id);
            return(UserManager.IsLockedOut(user.Id) ? SignInStatus.LockedOut : SignInStatus.Failure);
        }
Esempio n. 5
0
        public SignInStatus TwoFactorSignIn(string provider, string code, bool isPersistent, bool rememberBrowser)
        {
            var userId = GetVerifiedUserId();

            if (userId == null)
            {
                return(SignInStatus.Failure);
            }
            var user = UserManager.FindById(userId);

            if (user == null)
            {
                return(SignInStatus.Failure);
            }
            if (UserManager.IsLockedOut(user.Id))
            {
                return(SignInStatus.LockedOut);
            }
            if (UserManager.VerifyTwoFactorToken(user.Id, provider, code))
            {
                // When token is verified correctly, clear the access failed count used for lockout
                UserManager.ResetAccessFailedCount(user.Id);
                SignInAsync(user, isPersistent, rememberBrowser);
                return(SignInStatus.Success);
            }
            // If the token is incorrect, record the failure which also may cause the user to be locked out
            UserManager.AccessFailed(user.Id);
            return(SignInStatus.Failure);
        }
Esempio n. 6
0
        public SignInStatus PasswordSignIn(string userName, string password, bool isPersistent, bool shouldLockout)
        {
            var user = UserManager.FindByName(userName);

            if (user == null)
            {
                return(SignInStatus.Failure);
            }
            if (UserManager.IsLockedOut(user.Id))
            {
                return(SignInStatus.LockedOut);
            }
            if (UserManager.CheckPassword(user, password))
            {
                return(SignInOrTwoFactor(user, isPersistent));
            }
            if (shouldLockout)
            {
                // If lockout is requested, increment access failed count which might lock out the user
                UserManager.AccessFailed(user.Id);
                if (UserManager.IsLockedOut(user.Id))
                {
                    return(SignInStatus.LockedOut);
                }
            }
            return(SignInStatus.Failure);
        }
        private async Task <bool> SetLockout(UserAccountInfoViewModel model, TicketDeskUser user)
        {
            var currentlyLocked   = UserManager.IsLockedOut(model.User.Id);
            var currentlyDisabled = currentlyLocked && (user.LockoutEndDateUtc ?? DateTime.MinValue).ToUniversalTime() == DateTime.MaxValue.ToUniversalTime();

            if (currentlyDisabled != model.IsDisabled || currentlyLocked != model.IsLocked)
            {
                DateTimeOffset newLockoutDate = DateTimeOffset.MinValue;
                if (model.IsDisabled)
                {
                    newLockoutDate = DateTimeOffset.MaxValue;
                }
                else if (model.IsLocked)
                {
                    newLockoutDate = DateTimeOffset.Now.Add(UserManager.DefaultAccountLockoutTimeSpan);
                }

                var result = await UserManager.SetLockoutEndDateAsync(model.User.Id, newLockoutDate);

                if (!result.Succeeded)
                {
                    AddErrors(result);
                }
                return(result.Succeeded);
            }
            return(true);
        }
        public async Task <ActionResult> Login(LoginViewModel details, string returnUrl)
        {
            AppUser user = await UserManager.FindAsync(details.Name, details.Password);

            AppUser currUser = UserManager.Users.FirstOrDefault(u => u.UserName == details.Name);

            if ((user == null) || (currUser != null && UserManager.IsLockedOut(currUser.Id)))
            {
                if (currUser != null)
                {
                    currUser.LockoutEnabled = true;

                    if (UserManager.IsLockedOut(currUser.Id))
                    {
                        ModelState.AddModelError("", $"Ваш аккаунт заблокирован в целях безопасноти, до {currUser.LockoutEndDateUtc.Value}");
                        UserManager.ResetAccessFailedCount(currUser.Id);
                    }
                    else if (UserManager.MaxFailedAccessAttemptsBeforeLockout <= currUser.AccessFailedCount + 1)
                    {
                        currUser.LockoutEndDateUtc = DateTime.UtcNow.AddMinutes(1);
                        await UserManager.UpdateAsync(currUser);

                        UserManager.ResetAccessFailedCount(currUser.Id);
                        ModelState.AddModelError("", $"Ваш аккаунт заблокирован в целях безопасноти, до {currUser.LockoutEndDateUtc.Value}");
                    }
                    else
                    {
                        UserManager.AccessFailed(currUser.Id);
                        ModelState.AddModelError("", $"Некорректный пароль осталось {UserManager.MaxFailedAccessAttemptsBeforeLockout - UserManager.GetAccessFailedCount(currUser.Id)} попытки.");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Некорректное имя.");
                }
            }
            else
            {
                ClaimsIdentity ident = await UserManager.CreateIdentityAsync(user,
                                                                             DefaultAuthenticationTypes.ApplicationCookie);

                await UserManager.ResetAccessFailedCountAsync(user.Id);

                AuthManager.SignOut();
                AuthManager.SignIn(new AuthenticationProperties
                {
                    IsPersistent = true
                }, ident);
                AccountInfoEvent($"Account wiht name:{user.UserName}; and id:{user.Id} has been successfuly logged in");
                if (!string.IsNullOrEmpty(returnUrl))
                {
                    return(Redirect(returnUrl));
                }
                else
                {
                    return(RedirectToActionPermanent("Index", "Home"));
                }
            }
            return(View(details));
        }
Esempio n. 9
0
        public ActionResult UnlockUser()
        {
            ApplicationDbContext   context        = new ApplicationDbContext();
            List <ApplicationUser> AppUsers       = new List <ApplicationUser>();
            List <ApplicationUser> LockedAppUsers = new List <ApplicationUser>();
            var    UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));
            var    userid      = User.Identity.GetUserId();
            string ZoneGroup   = context.Users.SingleOrDefault(m => m.Id == userid).ZoneGroup;

            if (User.IsInRole("Super User"))
            {
                AppUsers = context.Users.Where(m => m.Id != userid).ToList();
            }
            else
            {
                AppUsers = context.Users.Where(m => m.ZoneGroup == ZoneGroup).Where(m => m.Id != userid).ToList();
            }

            foreach (var item in AppUsers)
            {
                if (UserManager.IsLockedOut(item.Id)) //check all locked user
                {
                    LockedAppUsers.Add(item);
                }
            }

            ViewBag.Users = LockedAppUsers;
            return(View());
        }
Esempio n. 10
0
        /// <summary>
        /// returns the updated ExpandedUserDTO class object paramExpandedUserDTO
        /// after updating database user detail with input data
        /// <param name="objExpandedUserDTO"></param>
        /// <returns>ExpandedUserDTO paramExpandedUserDTO</returns>
        #region private ExpandedUserDTO UpdateDTOUser(ExpandedUserDTO objExpandedUserDTO)
        private ExpandedUserDTO UpdateDTOUser(ExpandedUserDTO paramExpandedUserDTO)
        {
            ApplicationUser result =
                UserManager.FindByName(paramExpandedUserDTO.UserName);

            // If we could not find the user, throw an exception
            if (result == null)
            {
                throw new Exception("Could not find the User");
            }


            result.Forename          = paramExpandedUserDTO.Forename;
            result.Surname           = paramExpandedUserDTO.Surname;
            result.Street            = paramExpandedUserDTO.Street;
            result.Town              = paramExpandedUserDTO.Town;
            result.Postcode          = paramExpandedUserDTO.Postcode;
            result.PhoneNumber       = paramExpandedUserDTO.PhoneNumber;
            result.UserName          = paramExpandedUserDTO.UserName;
            result.Email             = paramExpandedUserDTO.Email;
            result.LockoutEndDateUtc = paramExpandedUserDTO.LockoutEndDateUtc;
            result.LockoutEnabled    = paramExpandedUserDTO.LockoutEnabled;
            result.AccessFailedCount = paramExpandedUserDTO.AccessFailedCount;



            // Lets check if the account needs to be unlocked
            if (UserManager.IsLockedOut(result.Id))
            {
                // Unlock user
                UserManager.ResetAccessFailedCountAsync(result.Id);
            }

            UserManager.Update(result);

            // Was a password sent across?
            if (!string.IsNullOrEmpty(paramExpandedUserDTO.Password))
            {
                // Remove current password
                var removePassword = UserManager.RemovePassword(result.Id);
                if (removePassword.Succeeded)
                {
                    // Add new password
                    var AddPassword =
                        UserManager.AddPassword(
                            result.Id,
                            paramExpandedUserDTO.Password
                            );

                    if (AddPassword.Errors.Count() > 0)
                    {
                        throw new Exception(AddPassword.Errors.FirstOrDefault());
                    }
                }
            }

            return(paramExpandedUserDTO);
        }
Esempio n. 11
0
        public ActionResult UnlockUserPost(string userid)
        {
            ApplicationDbContext context = new ApplicationDbContext();
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            //unlock the USER using Identity framework/
            var a    = UserManager.IsLockedOut(userid);    //check the status if locked
            var juan = UserManager.FindById(userid);       //get the id of locked user
            var dt   = juan.LockoutEndDateUtc;             //get the lockout date

            juan.LockoutEndDateUtc = dt.Value.AddDays(-1); //modify the lockout date. must be less than the current date time

            var b = UserManager.IsLockedOut(userid);       //check if lockout status changed

            context.SaveChanges();                         //save changes
            SL.LogInfo(User.Identity.Name, Request.RawUrl, "User Lockout - User Unlocked  - from Terminal: " + ipaddress);
            return(RedirectToAction("UnlockUser"));
        }
Esempio n. 12
0
        /// <summary>
        /// Updates user using input
        /// </summary>
        /// <param name="paramExpandedUserDTO">ExpandeduserDTO of new deatils to update</param>
        /// <returns>an ExpandedUserDTO of the updated user</returns>
        // private ExpandedUserDTO UpdateDTOUser(ExpandedUserDTO objExpandedUserDTO)
        private ExpandedUserDTO UpdateDTOUser(ExpandedUserDTO paramExpandedUserDTO)
        {
            ApplicationUser result =
                UserManager.FindByName(paramExpandedUserDTO.UserName);

            // If we could not find the user, throw an exception
            if (result == null)
            {
                throw new Exception("Could not find the ApplicationUser");
            }

            //Updates Details
            result.Email            = paramExpandedUserDTO.Email;
            result.FirstName        = paramExpandedUserDTO.FirstName;
            result.LastName         = paramExpandedUserDTO.LastName;
            result.Title            = paramExpandedUserDTO.Title;
            result.MobNo            = paramExpandedUserDTO.MobNo;
            result.AddressFirstLine = paramExpandedUserDTO.AddressFirstLine;
            result.Street           = paramExpandedUserDTO.Street;
            result.City             = paramExpandedUserDTO.City;
            result.PostCode         = paramExpandedUserDTO.PostCode;



            // Lets check if the account needs to be unlocked
            if (UserManager.IsLockedOut(result.Id))
            {
                // Unlock user
                UserManager.ResetAccessFailedCountAsync(result.Id);
            }

            UserManager.Update(result);

            // Was a password sent across?
            if (!string.IsNullOrEmpty(paramExpandedUserDTO.Password))
            {
                // Remove current password
                var removePassword = UserManager.RemovePassword(result.Id);
                if (removePassword.Succeeded)
                {
                    // Add new password
                    var AddPassword =
                        UserManager.AddPassword(
                            result.Id,
                            paramExpandedUserDTO.Password
                            );

                    if (AddPassword.Errors.Count() > 0)
                    {
                        throw new Exception(AddPassword.Errors.FirstOrDefault());
                    }
                }
            }

            return(paramExpandedUserDTO);
        }
        public ActionResult Ban(string userId, bool LockUser = false, bool UnlockUser = false, int Amount = 0, string Dimension = "")
        {
            AppUser user = UserManager.FindById(userId);

            if (!IsTryToDeleteAdmin(user))
            {
                if (UnlockUser && UserManager.IsLockedOut(userId))
                {
                    UserManager.SetLockoutEndDate(userId, DateTimeOffset.UtcNow);
                }
                else if (LockUser && Amount > 0 && !string.IsNullOrEmpty(Dimension))
                {
                    bool           f       = true;
                    DateTimeOffset endDate = DateTimeOffset.UtcNow;
                    switch (Dimension)
                    {
                    case "Минут":
                        endDate = endDate.AddMinutes(Amount);
                        break;

                    case "Часов":
                        endDate = endDate.AddHours(Amount);
                        break;

                    case "Дней":
                        endDate = endDate.AddDays(Amount);
                        break;

                    case "Месяцев":
                        endDate = endDate.AddMonths(Amount);
                        break;

                    default:
                        f = false;
                        ModelState.AddModelError("", "Невозможно провести данную операцию, несуществующие еденицы измерения.");
                        break;
                    }
                    if (f)
                    {
                        AdminInfoEvent($"Account wiht name:{user.UserName}; and id:{user.Id} has been successfuly banned till {endDate}");
                        UserManager.SetLockoutEndDate(userId, endDate);
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Невозможно провести данную операцию, введенные данные не являются правильными.");
                }
            }
            else
            {
                ModelState.AddModelError("", "Зачем себя банить?");
            }
            ViewBag.DangerRoleId = GetDangerRoleId(RoleManager.Roles);
            return(View("Index", UserManager.Users));
        }
Esempio n. 14
0
 private CoreModels.User MapIdentityUserToUser(
     IdentityUser identityUser, bool?userIsLockedFilter)
 {
     return(new CoreModels.User
     {
         UserId = identityUser.Id,
         Login = identityUser.UserName,
         FullName = identityUser.Email,
         Roles = identityUser.Roles.Select(GetRoleById).ToList(),
         AssignedEmployeeName = "",
         IsActivated = userIsLockedFilter ?? !_userManager.IsLockedOut(identityUser.Id)
     });
 }
Esempio n. 15
0
        public SignInStatus ExternalSignIn(ExternalLoginInfo loginInfo, bool isPersistent)
        {
            var user = UserManager.Find(loginInfo.Login);

            if (user == null)
            {
                return(SignInStatus.Failure);
            }
            if (UserManager.IsLockedOut(user.Id))
            {
                return(SignInStatus.LockedOut);
            }
            return(SignInOrTwoFactor(user, isPersistent));
        }
        bool ValidLogin(Login login)
        {
            UserStore <IdentityUser>   userStore   = new UserStore <IdentityUser>();
            UserManager <IdentityUser> userManager = new UserManager <IdentityUser>(userStore)
            {
                UserLockoutEnabledByDefault          = true,
                DefaultAccountLockoutTimeSpan        = new TimeSpan(0, 10, 0),
                MaxFailedAccessAttemptsBeforeLockout = 5
            };
            var user = userManager.FindByName(login.UserName);

            if (user == null)
            {
                UserNoFound = true;
                return(false);
            }


            // User is locked out.
            if (userManager.SupportsUserLockout && userManager.IsLockedOut(user.Id))
            {
                Locked = true;
                return(false);
            }


            // Validated user was locked out but now can be reset.
            if (userManager.CheckPassword(user, login.Password) && userManager.IsEmailConfirmed(user.Id))

            {
                if (userManager.SupportsUserLockout &&
                    userManager.GetAccessFailedCount(user.Id) > 0)
                {
                    userManager.ResetAccessFailedCount(user.Id);
                }
            }
            // Login is invalid so increment failed attempts.
            else
            {
                bool lockoutEnabled = userManager.GetLockoutEnabled(user.Id);
                PasswordIncorrent = true;
                if (userManager.SupportsUserLockout && userManager.GetLockoutEnabled(user.Id))
                {
                    userManager.AccessFailed(user.Id);
                    return(false);
                }
            }
            return(true);
        }
Esempio n. 17
0
        // Update User With UserViewModel Parameter
        #region private UserViewModel UpdateUserViewModel(UserViewModel model)
        private UserViewModel UpdateUserViewModel(UserViewModel model)
        {
            ApplicationUser result =
                UserManager.FindByName(model.UserName);

            // If we could not find the user, throw an exception
            if (result == null)
            {
                throw new Exception("Could not find the User");
            }



            result.Email    = model.Email.Trim();
            result.UserName = model.Email.Trim();

            // Lets check if the account needs to be unlocked
            if (UserManager.IsLockedOut(result.Id))
            {
                // Unlock user
                UserManager.ResetAccessFailedCountAsync(result.Id);
            }

            UserManager.Update(result);

            // Was a password sent across?
            if (!string.IsNullOrEmpty(model.Password))
            {
                // Remove current password
                var removePassword = UserManager.RemovePassword(result.Id);
                if (removePassword.Succeeded)
                {
                    // Add new password
                    var AddPassword =
                        UserManager.AddPassword(
                            result.Id,
                            model.Password
                            );

                    if (AddPassword.Errors.Count() > 0)
                    {
                        throw new Exception(AddPassword.Errors.FirstOrDefault());
                    }
                }
            }

            return(model);
        }
        private User UpdateDTOUser(User paramExpandedUserDTO)
        {
            ApplicationUser result =
                UserManager.FindByName(paramExpandedUserDTO.UserName);

            // If we could not find the user, throw an exception
            if (result == null)
            {
                ModelState.AddModelError("", "Could not find the User");
                return(paramExpandedUserDTO);
            }

            result.Email = paramExpandedUserDTO.Email;

            // Lets check if the account needs to be unlocked
            if (UserManager.IsLockedOut(result.Id))
            {
                // Unlock user attempts and set lockoutdate back into the past
                UserManager.ResetAccessFailedCount(result.Id);
                UserManager.SetLockoutEndDate(result.Id, DateTime.Now);
            }
            log.Info("Updating user " + paramExpandedUserDTO.UserName);
            UserManager.Update(result);
            // Was a password sent across?
            if (!string.IsNullOrEmpty(paramExpandedUserDTO.Password))
            {
                // Remove current password
                var removePassword = UserManager.RemovePassword(result.Id);
                if (removePassword.Succeeded)
                {
                    // Add new password
                    var AddPassword =
                        UserManager.AddPassword(
                            result.Id,
                            paramExpandedUserDTO.Password
                            );
                    log.Info(string.Format("Updated password {0}, errors: {1}", paramExpandedUserDTO.UserName, string.Join(", ", AddPassword.Errors)));

                    foreach (var error in AddPassword.Errors)
                    {
                        ModelState.AddModelError("Password", PasswordValidatorCodes.GetLocalizedMessageForCode(error));
                    }
                }
            }

            return(paramExpandedUserDTO);
        }
Esempio n. 19
0
        private ExtendedUserCustom UpdateUser(ExtendedUserCustom extUser)
        {
            var result = UserManager.FindByEmail(extUser.Email);

            //not found
            if (result == null)
            {
                throw new Exception("User not found.");
            }

            result.Email       = extUser.Email.Trim();
            result.FullName    = extUser.FullName.Trim();
            result.GroupId     = extUser.GroupId;
            result.MonthIntake = extUser.MonthIntake;
            result.YearIntake  = extUser.YearIntake;
            //is account locked? unlock it
            if (UserManager.IsLockedOut(result.Id))
            {
                UserManager.ResetAccessFailedCount(result.Id);
            }

            UserManager.Update(result);

            //was a password sent across?
            if (!string.IsNullOrEmpty(extUser.Password))
            {
                //remove current password
                var removePassword = UserManager.RemovePassword(result.Id);
                if (removePassword.Succeeded)
                {
                    //add new password
                    var AddPassword = UserManager.AddPassword(
                        result.Id,
                        extUser.Password
                        );

                    if (AddPassword.Errors.Count() > 0)
                    {
                        throw new Exception(AddPassword.Errors.FirstOrDefault());
                    }
                }
            }

            return(extUser);
        }
        public void LockoutAccount()
        {
            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(this._session));

            userManager.MaxFailedAccessAttemptsBeforeLockout = 3;
            userManager.UserLockoutEnabledByDefault          = true;
            userManager.DefaultAccountLockoutTimeSpan        = new TimeSpan(0, 10, 0);
            userManager.Create(new ApplicationUser()
            {
                UserName = "******", LockoutEnabled = true
            }, "Welcome");
            var user = userManager.Find("test", "Welcome");

            Assert.AreEqual(0, userManager.GetAccessFailedCount(user.Id));
            userManager.AccessFailed(user.Id);
            Assert.AreEqual(1, userManager.GetAccessFailedCount(user.Id));
            userManager.AccessFailed(user.Id);
            Assert.AreEqual(2, userManager.GetAccessFailedCount(user.Id));
            userManager.AccessFailed(user.Id);
            Assert.IsTrue(userManager.IsLockedOut(user.Id));
        }
Esempio n. 21
0
        public JsonResult GetItem(int id)
        {
            using (var context = new AppDbContext())
            {
                var user = context.Users.Include(u => u.Group)
                           .Include(u => u.Countries)
                           .SingleOrDefault(u => u.Id == id);


                if (user == null)
                {
                    HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(Json(new ArgumentException("User not found"), JsonRequestBehavior.AllowGet));
                }
                {
                    var userIsLockedOut    = UserManager.IsLockedOut(id);
                    var userLockoutEndDate = userIsLockedOut ? (DateTimeOffset?)UserManager.GetLockoutEndDate(id) : null;

                    var result = new
                    {
                        user.Id,
                        user.Active,
                        AuthenticationType = user.AuthenticationType == AuthenticationType.ActiveDirectory ? "AD" : "Banco de Dados",
                        user.Name,
                        Login = user.UserName,
                        user.Email,
                        user.AccessAllDataVisibility,
                        IsPasswordExpired          = user.IsPasswordExpired(),
                        LastPasswordChangedDate    = user.LastPasswordChangedOrCreatedDate(),
                        DateThatMustChangePassword = user.DateThatMustChangePassword(),
                        UserBlockedForManyAccess   = userIsLockedOut,
                        LockoutEndDateUtc          = userLockoutEndDate,
                        DaysLeftToChangePassword   = user.DaysLeftToChangePassword(),
                        Groups    = user.Group.Select(r => r.Id),
                        Countries = user.Countries.Select(b => b.Id)
                    };
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
            }
        }
Esempio n. 22
0
        // GET: AdminLockout

        public ActionResult UnlockAdmin()
        {
            ApplicationDbContext   context     = new ApplicationDbContext();
            List <ApplicationUser> AppUsers    = new List <ApplicationUser>();
            List <ApplicationUser> LockedUsers = new List <ApplicationUser>();
            var    UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));
            var    userid      = User.Identity.GetUserId();
            string ZoneGroup   = context.Users.SingleOrDefault(m => m.Id == userid).ZoneGroup;

            AppUsers = context.Users.ToList();
            foreach (var item in AppUsers)
            {
                if (UserManager.IsLockedOut(item.Id)) //check all locked user
                {
                    LockedUsers.Add(item);
                }
            }

            //ViewBag.Users = LockedAppUsers;
            ViewBag.Users = LockedUsers;
            return(View());
        }
Esempio n. 23
0
        private ExpandedUser UpdateUser(ExpandedUser expUser)
        {
            ApplicationUser result = UserManager.FindByName(expUser.UserName);

            if (result == null)
            {
                throw new Exception("Could not find the User");
            }

            result.Email = expUser.Email;

            if (UserManager.IsLockedOut(result.Id))
            {
                UserManager.ResetAccessFailedCountAsync(result.Id);
            }

            UserManager.Update(result);

            if (!string.IsNullOrEmpty(expUser.Password))
            {
                var removePassword = UserManager.RemovePassword(result.Id);
                if (removePassword.Succeeded)
                {
                    var AddPassword =
                        UserManager.AddPassword(
                            result.Id,
                            expUser.Password
                            );

                    if (AddPassword.Errors.Count() > 0)
                    {
                        throw new Exception(AddPassword.Errors.FirstOrDefault());
                    }
                }
            }

            return(expUser);
        }
Esempio n. 24
0
        private ExpandedUserDTO UpdateDTOUser(ExpandedUserDTO paramExpandedUserDTO)
        {
            ApplicationUser result =
                UserManager.FindByName(paramExpandedUserDTO.UserName);

            // If we could not find the user, throw an exception
            if (result == null)
            {
                throw new Exception("Could not find the User");
            }

            result.Nombre    = paramExpandedUserDTO.Nombre;
            result.Apellido  = paramExpandedUserDTO.Apellido;
            result.Direccion = paramExpandedUserDTO.Direccion;
            result.Telefono  = paramExpandedUserDTO.Telefono;
            result.Empresa   = paramExpandedUserDTO.Empresa;
            result.Email     = paramExpandedUserDTO.Email;

            // Lets check if the account needs to be unlocked
            if (UserManager.IsLockedOut(result.Id))
            {
                // Unlock user
                UserManager.ResetAccessFailedCountAsync(result.Id);
            }

            IdentityResult estado = UserManager.Update(result);

            if (estado.Succeeded)
            {
                IdentityResult cambiar = UserManager.ChangePassword(result.Id, paramExpandedUserDTO.Password, paramExpandedUserDTO.Password);
                if (cambiar.Errors.Count() > 0)
                {
                    throw new Exception(cambiar.Errors.FirstOrDefault());
                }
                return(paramExpandedUserDTO);
            }
            throw new Exception("No se realizo ningun cambio!");
        }
Esempio n. 25
0
        public ActionResult ViewUser(int id)
        {
            var user = context.Users.Find(id);

            if (!_userService.CanEditUser(user))
            {
                TempData["Error"] = "You do not have permission to edit this user.";
                return(RedirectToAction("Index"));
            }

            var isLocked = _userManager.IsLockedOut(id);
            var model    = new UserEditModel
            {
                Id         = user.Id,
                Username   = user.UserName,
                FirstName  = user.FirstName,
                LastName   = user.LastName,
                Email      = user.Email,
                RoleId     = user.Roles.First().RoleId,
                LocationId = user.Location != null ? user.Location.Id : 0,
                VendorId   = user.Vendor != null ? user.Vendor.Id : 0,
                IsLocked   = isLocked,
                IsActive   = user.IsActive,
                SiteList   = string.Join(",", user.userSiteAccess.Select(s => s.Id).ToArray()),
                SystemList = string.Join(",", user.BuildingSystems.Select(b => b.Id))
            };

            if (user.Location != null)
            {
                model.SelectedState   = user.Location.State;
                model.IsInternational = user.Location.International;
            }


            BuildCreateEditViewData();
            return(View(model));
        }
Esempio n. 26
0
        public async Task <ActionResult> Activate(long id)
        {
            try
            {
                var userProfile = InsuranceBusiness.BusinessLayer.GetUserProfile(id);
                var user        = UserManager.FindById(userProfile.ID_User);

                if (UserManager.IsLockedOut(userProfile.ID_User))
                {
                    InsuranceBusiness.BusinessLayer.ActivateUser(userProfile.ID);
                    //await UnlockUserAccount(userProfile.ID_User);
                    await SendAccountActivation(user, userProfile.FirstName);
                }

                //InsuranceBusiness.BusinessLayer.ActivateUser(id);
            }
            catch (Exception ex)
            {
                InsuranceBusiness.BusinessLayer.LogException(string.Format("{0} [{1}]", Request.UserHostAddress, id), string.Format("{0}.{1}", this.ControllerContext.RouteData.Values["controller"].ToString(), this.ControllerContext.RouteData.Values["action"].ToString()), ex);
                return(View("Error"));
            }

            return(RedirectToAction("Index"));
        }
Esempio n. 27
0
        protected void BtnIniciar_Click1(object sender, EventArgs e)
        {
            var userStore = new UserStore<IdentityUser>();
            var userManager = new UserManager<IdentityUser>(userStore);
            //var user = userManager.Find(UserName.Text, Password.Text);

            var user = userManager.FindByName(UserName.Text);

            if (user != null)
            {
                var validCredentials = userManager.Find(UserName.Text, Password.Text);

                if (userManager.IsLockedOut(user.Id))
                {
                    ModelState.AddModelError("", string.Format("Your account has been locked out for {0} minutes due to multiple failed login attempts.", ConfigurationManager.AppSettings["DefaultAccountLockoutTimeSpan"].ToString()));
                    StatusText.Text = string.Format("Your account has been locked out for {0} minutes due to multiple failed login attempts.", ConfigurationManager.AppSettings["DefaultAccountLockoutTimeSpan"].ToString());
                }
                else if (userManager.GetLockoutEnabled(user.Id) && validCredentials == null)
                {
                    userManager.AccessFailed(user.Id);
                    string message;
                    if (userManager.IsLockedOut(user.Id))
                    {
                        message = string.Format("Your account has been locked out for {0} minutes due to multiple failed login attempts.", ConfigurationManager.AppSettings["DefaultAccountLockoutTimeSpan"].ToString());
                        StatusText.Text = message;
                    }
                    else
                    {
                        int accessFailedCount = userManager.GetAccessFailedCount(user.Id);
                        int attemptsLeft =
                            Convert.ToInt32(
                                ConfigurationManager.AppSettings["MaxFailedAccessAttemptsBeforeLockout"].ToString()) -
                            accessFailedCount;
                        message = string.Format(
                            "Invalid credentials. You have {0} more attempt(s) before your account gets locked out.", attemptsLeft);
                        StatusText.Text = message;
                    }

                    ModelState.AddModelError("", message);
                }
                else if (validCredentials == null)
                {
                    ModelState.AddModelError("", "Invalid credentials. Please try again.");
                    StatusText.Text = "Invalid credentials. Please try again.";
                }
                else
                {

                    var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
                    var userIdentity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);

                    authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, userIdentity);
                    userManager.ResetAccessFailedCount(user.Id);

                    string vig = DateTime.Now.Year.ToString();
                    SetCookieUser(UserName.Text, vig);

                    string url = Request.QueryString["ReturnUrl"];
                    if (url == "" || url == null)
                    {
                        gesMenuAdapter mg = new gesMenuAdapter();
                        List<dataTree> l = mg.getOpciones("INICI", UserName.Text);
                        if (l.Where(t => t.roles == "INICIAdministrativo").FirstOrDefault() != null)
                        {
                            SetCookieRol("administrador");
                            url = "/Inicio/Administrativo/Inicio.aspx";
                        }
                        else
                        {
                            if (l.Where(t => t.roles == "INICIAcudientes").FirstOrDefault() != null)
                            {
                                SetCookieRol("acudiente");
                                url = "/Inicio/Acudientes/Inicio.aspx";
                            }
                        }
                    }
                    IdentityHelper.RedirectToReturnUrl(url, Response);
                }

            }
            else
            {
                StatusText.Text = "Invalid username or password.";
            }
        }
 public void LockoutAccount()
 {
     var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(this._session));
     userManager.MaxFailedAccessAttemptsBeforeLockout = 3;
     userManager.UserLockoutEnabledByDefault = true;
     userManager.DefaultAccountLockoutTimeSpan = new TimeSpan(0, 10, 0);
     userManager.Create(new ApplicationUser() { UserName = "******", LockoutEnabled = true }, "Welcome");
     var user = userManager.Find("test", "Welcome");
     Assert.AreEqual(0, userManager.GetAccessFailedCount(user.Id));
     userManager.AccessFailed(user.Id);
     Assert.AreEqual(1, userManager.GetAccessFailedCount(user.Id));
     userManager.AccessFailed(user.Id);
     Assert.AreEqual(2, userManager.GetAccessFailedCount(user.Id));
     userManager.AccessFailed(user.Id);
     Assert.IsTrue(userManager.IsLockedOut(user.Id));
 }
Esempio n. 29
0
        //public void DeleteRole(string roleId)
        //{
        //    var roleUsers = _db.Users.Where(u => u.Roles.Any(r => r.RoleId == roleId));
        //    var role = _db.Roles.Find(roleId);

        //    foreach (var user in roleUsers)
        //    {
        //        this.RemoveFromRole(user.Id, role.Name);
        //    }
        //    _db.Roles.Remove(role);
        //    _db.SaveChanges();
        //}

        protected void LogIn(object sender, EventArgs e)
        {
            if (IsValid)
            {
                // Validate the user password
                var             manager = new UserManager();
                ApplicationUser user    = manager.Find(UserName.Text, Password.Text);

                if (user != null)
                {
                    bool x = manager.IsLockedOut(user.Id);

                    if (x)
                    {
                        usrststr.WriteStat(user.Id, "User is blocked");
                        FailureText.Text     = "User is blocked";
                        ErrorMessage.Visible = true;
                    }

                    else
                    {
                        manager.ResetAccessFailedCount(user.Id);
                        //IdentityHelper.SignIn(manager, user, RememberMe.Checked);
                        IdentityHelper.SignIn(manager, user, false);
                        // begin statistica
                        usrststr.WriteStat(user.Id, "Login");
                        // end statistica
                        IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
                    }
                }
                else
                {
                    var r = manager.FindByName(UserName.Text);
                    if (r != null)
                    {
                        usrststr.WriteStat(r.Id, "Invalid password.");
                        FailureText.Text     = "Invalid  password.";
                        ErrorMessage.Visible = true;
                        if (manager.IsLockedOut(r.Id))
                        {
                        }
                        else
                        {
                            if (manager.IsInRole(r.Id, "Administrator") == true)
                            {
                            }
                            else
                            {
                                var z = manager.SetLockoutEnabled(r.Id, true);
                                manager.AccessFailed(r.Id);
                            }
                            usrststr.WriteStat(r.Id, "Access denied.");
                        }
                    }
                    else
                    {
                        FailureText.Text     = "Invalid  username.";
                        ErrorMessage.Visible = true;
                    }
                }
            }
        }
Esempio n. 30
0
        public async Task <ActionResult> SignIn([Bind(Include = "SinginId,Password")] SignInViewModel model)
        {
            bool           signIn = false;
            SignInLogModel log    = new SignInLogModel();

            log.ClientIp = GetClientIp();
            log.UserCode = model.SinginId;

            if (!ModelState.IsValid)
            {
                log.SetStatus(-1);
                dbContext.SignInLogModels.Add(log);
                dbContext.SaveChanges();

                return(View(model));
            }

            UserModel user = await UserManager.FindByNameAsync(model.SinginId);

            if (user != null)
            {
                log.UserModelId = user.Id;

                if (user.Deleted)
                {
                    log.SetStatus(-2);
                    dbContext.SignInLogModels.Add(log);
                    dbContext.SaveChanges();

                    ModelState.AddModelError("", AuthResources.AuthError);
                    return(View(model));
                }
                if (UserManager.IsLockedOut(user.Id))
                {
                    log.SetStatus(-3);
                    dbContext.SignInLogModels.Add(log);
                    dbContext.SaveChanges();

                    ModelState.AddModelError("", AuthResources.AuthUserLockedOut);
                    return(View(model));
                }
                if (UserManager.CheckPassword(user, model.Password))
                {
                    if (user.Enabled == false)
                    {
                        log.SetStatus(-4);
                        dbContext.SignInLogModels.Add(log);
                        dbContext.SaveChanges();

                        ModelState.AddModelError("", AuthResources.AuthUserDisabled);
                        return(View(model));
                    }
                    if (user.PasswordSkipCnt >= 3)
                    {
                        log.SetStatus(-5);
                        dbContext.SignInLogModels.Add(log);
                        dbContext.SaveChanges();

                        ModelState.AddModelError("", AuthResources.AuthPasswordNoChange);
                        return(View(model));
                    }

                    signIn = true;
                }
                else
                {
                    UserManager.AccessFailed(user.Id);
                    if (UserManager.IsLockedOut(user.Id))
                    {
                        log.SetStatus(-6);
                        dbContext.SignInLogModels.Add(log);
                        dbContext.SaveChanges();

                        ModelState.AddModelError("", AuthResources.AuthUserLockedOutNow);
                        return(View(model));
                    }
                }
            }
            if (signIn)
            {
                user = await UserManager.FindAsync(model.SinginId, model.Password);

                AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
                ClaimsIdentity identity = await user.GenerateUserIdentityAsync(UserManager);

                AuthenticationManager.SignIn(new AuthenticationProperties()
                {
                    IsPersistent = false
                }, identity);
                await UserManager.ResetAccessFailedCountAsync(user.Id);

                log.SetStatus(0);
                dbContext.SignInLogModels.Add(log);
                dbContext.SaveChanges();

                if (user.Expiration < DateTime.Now)
                {
                    user.PasswordSkipCnt++;
                    await UserManager.UpdateAsync(user);

                    return(RedirectToAction("ExpirationChangePassword"));
                }
                // await UserManager.UpdateAsync(user);
            }
            else
            {
                log.SetStatus(-7);
                dbContext.SignInLogModels.Add(log);
                dbContext.SaveChanges();

                ModelState.AddModelError("", AuthResources.AuthError);
                return(View(model));
            }
            return(RedirectToHome());
        }
Esempio n. 31
0
        bool ValidLogin(Login login)
        {
            UserStore<IdentityUser> userStore = new UserStore<IdentityUser>();
            UserManager<IdentityUser> userManager = new UserManager<IdentityUser>(userStore)
            {
                UserLockoutEnabledByDefault = true,
                DefaultAccountLockoutTimeSpan = new TimeSpan(0, 10, 0),
                MaxFailedAccessAttemptsBeforeLockout = 3
            };
            var user = userManager.FindByName(login.UserName);

            if (user == null)
                return false;

            // User is locked out.
            if (userManager.SupportsUserLockout && userManager.IsLockedOut(user.Id))
            {
                return false;
            }

            // Validated user was locked out but now can be reset.
            if (userManager.CheckPassword(user, login.Password))
            {
                if (userManager.SupportsUserLockout
                 && userManager.GetAccessFailedCount(user.Id) > 0)
                {
                    userManager.ResetAccessFailedCount(user.Id);
                }
            }

            // Login is invalid so increment failed attempts.
            else {
                bool lockoutEnabled = userManager.GetLockoutEnabled(user.Id);
                if (userManager.SupportsUserLockout && userManager.GetLockoutEnabled(user.Id))
                {
                    userManager.AccessFailed(user.Id);
                    return false;
                }
                CaptchaHelper captchaHelper = new CaptchaHelper();
                string captchaResponse = captchaHelper.CheckRecaptcha();
                if (captchaResponse != "Valid")
                {
                    ViewBag.ErrorResponse = "The captcha must be valid";

                }
            }
            return true;
        }
Esempio n. 32
0
        //public IEnumerable<SelectListItem> ReadRoles()
        //{
        //    IList<SelectListItem> result = new List<SelectListItem>
        //    {
        //        new SelectListItem
        //        {
        //            Text = RoleType.Company.GetEnumDescription(),
        //            Value = RoleType.Company.ToString()
        //        },
        //        new SelectListItem
        //        {
        //            Text = RoleType.Supervise.GetEnumDescription(),
        //            Value = RoleType.Supervise.ToString()
        //        },
        //        new SelectListItem
        //        {
        //            Text = RoleType.Guidance.GetEnumDescription(),
        //            Value = RoleType.Guidance.ToString()
        //        }
        //    };

        //    return result;
        //}

        public bool?Update(UserManager <ApplicationUser> userManager, string key, UserViewModel model)
        {
            bool allSuccess = true;

            var user = userManager.Users.Where(u => u.Id == key).SingleOrDefault();

            if (user == null)
            {
                return(null);
            }

            // Role
            if (!string.IsNullOrEmpty(model.Role.Value))
            {
                if (!userManager.IsInRole(key, model.Role.Value))
                {
                    var            roles  = userManager.GetRoles(key).ToArray();
                    IdentityResult result = userManager.RemoveFromRoles(key, roles);
                    if (result.Succeeded)
                    {
                        result = userManager.AddToRole(key, model.Role.Value);
                    }

                    allSuccess &= result.Succeeded;
                }
            }

            // Consultant
            //if (!string.IsNullOrEmpty(model.Consultant.Value))
            //{
            //    var customer = this.DbContext.Customers.Where(c => c.UserId == key).SingleOrDefault();
            //    if (customer == null)
            //        return null;

            //    customer.ConsultantId = model.Consultant.Value;
            //    try
            //    {
            //        this.DbContext.SaveChanges();
            //    }
            //    catch
            //    {
            //        allSuccess = false;
            //    }
            //}
            var customer = this.DbContext.Customers.Where(c => c.UserId == key).SingleOrDefault();

            if (customer == null)
            {
                return(null);
            }

            customer.ConsultantId = model.Consultant.Value;
            try
            {
                this.DbContext.SaveChanges();
            }
            catch
            {
                allSuccess = false;
            }

            // LockedOut
            if (userManager.IsLockedOut(key) != model.LockedOut)
            {
                IdentityResult result;
                if (model.LockedOut)
                {
                    result = userManager.SetLockoutEnabled(key, true);
                    if (result.Succeeded)
                    {
                        result = userManager.SetLockoutEndDate(key, DateTimeOffset.MaxValue);
                    }
                }
                else
                {
                    result = userManager.SetLockoutEnabled(key, false);
                    if (result.Succeeded)
                    {
                        result = userManager.ResetAccessFailedCount(key);
                    }
                }

                allSuccess &= result.Succeeded;
            }

            return(allSuccess);
        }
Esempio n. 33
0
        // http://www.byteblocks.com/Post/AspNet-Identity-Lock-and-Unlock-User-Accounts
        public DataSourceResponse <UserViewModel> Read(UserManager <ApplicationUser> userManager, DataSourceRequest request)
        {
            string cmdText = @"
                SELECT u.Id UserId,
                       c.[Name] CustomerName,
                       cuc.[Name] ConsultantText,
                       cu.Id ConsultantValue,
                       r.[Name] RoleValue
                FROM AspNetUsers u
                     LEFT JOIN AspNetUserRoles ur ON u.Id = ur.UserId
                     LEFT JOIN AspNetRoles r ON ur.RoleId = r.Id
                     LEFT JOIN Customer c ON c.UserId = u.Id
                     LEFT JOIN AspNetUsers cu ON c.ConsultantId = cu.Id
                     LEFT JOIN Customer cuc ON cu.Id = cuc.UserId
                WHERE r.[Name] = 'Supervise'
                      OR r.[Name] = 'Guidance'
                      OR r.[Name] = 'Company'
                      OR r.[Name] IS NULL
                ORDER BY u.Id";

            IList <UserViewModel> users = new List <UserViewModel>();

            this.ReadData(dataReader =>
            {
                var consultant   = new SelectListItem();
                consultant.Text  = this.DbToString(dataReader["ConsultantText"]);
                consultant.Value = this.DbToString(dataReader["ConsultantValue"]);

                var role = new SelectListItem();
                if (dataReader["RoleValue"] != DBNull.Value)
                {
                    role.Value = dataReader["RoleValue"].ToString();
                    if (Enum.TryParse <RoleType>(role.Value, out RoleType roleType))
                    {
                        role.Text = roleType.GetEnumDescription();
                    }
                }

                users.Add(new UserViewModel
                {
                    UserId       = dataReader["UserId"].ToString(),
                    CustomerName = this.DbToString(dataReader["CustomerName"]),
                    Consultant   = consultant,
                    Role         = role
                });
            }, cmdText);

            foreach (var user in users)
            {
                user.LockedOut = userManager.IsLockedOut(user.UserId);
            }

            var response = new DataSourceResponse <UserViewModel>();

            response.TotalRowCount = users.Count;

            if (request.ServerPaging != null)
            {
                int skip = Math.Max(request.ServerPaging.PageSize * (request.ServerPaging.Page - 1), val2: 0);
                users = users.OrderBy(u => u.UserId).Skip(skip).Take(request.ServerPaging.PageSize).ToList();
            }

            response.DataCollection = users;
            return(response);
        }