Example #1
0
        public async Task <ActionResult> ChangeMail([Bind(Include = "Email")] ChangeMailViewModel model)
        {
            int            id  = GetUserId();
            SignInLogModel log = new SignInLogModel();

            log.ClientIp    = GetClientIp();
            log.UserModelId = id;
            log.UserCode    = GetSigninId();

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            IdentityResult result = await UserManager.SetEmailAsync(id, model.Email);

            if (!result.Succeeded)
            {
                AddErrors(result);
                return(View(model));
            }

            log.SetStatus(4);
            dbContext.SignInLogModels.Add(log);
            dbContext.SaveChanges();
            return(View("MailChanged"));
        }
Example #2
0
        public async Task <ActionResult> Confirm(string key, string code)
        {
            if (string.IsNullOrWhiteSpace(key) || string.IsNullOrWhiteSpace(code))
            {
                return(View("RequestMailError"));
            }

            IdentityResult result = await UserManager.ConfirmEmailAsync(int.Parse(key), code);

            if (result.Succeeded)
            {
                var            user = UserManager.FindById(int.Parse(key));
                SignInLogModel log  = new SignInLogModel();
                log.ClientIp    = GetClientIp();
                log.UserModelId = int.Parse(key);
                if (user != null)
                {
                    log.UserCode = user.UserName;
                }
                log.SetStatus(3);
                dbContext.SignInLogModels.Add(log);
                dbContext.SaveChanges();

                return(View("MailConfirmComplete"));
            }
            else
            {
                return(View("RequestMailError"));
            }
        }
Example #3
0
        public ActionResult Reset([Bind(Include = "NewPassword,ConfirmPassword,Key,Token")] ResetViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = UserManager.FindById(model.Key);

            if (user == null)
            {
                ModelState.AddModelError("", AuthResources.RequestMailNoUser);
                return(View(model));
            }
            var result = UserManager.ResetPassword(user.Id, model.Token, model.NewPassword);

            if (!result.Succeeded)
            {
                AddErrors(result);
                return(View(model));
            }

            SignInLogModel log = new SignInLogModel();

            log.ClientIp    = GetClientIp();
            log.UserModelId = user.Id;
            log.UserCode    = user.UserName;
            log.SetStatus(2);
            dbContext.SignInLogModels.Add(log);
            dbContext.SaveChanges();

            UserManager.ResetAccessFailedCount(user.Id);
            return(View("ResetComplete"));
        }
Example #4
0
        public ActionResult ChangePassword(
            [Bind(Include = "CurrentPassword,NewPassword,ConfirmPassword")] ChangePasswordViewModel model)
        {
            int            id  = GetUserId();
            SignInLogModel log = new SignInLogModel();

            log.ClientIp    = GetClientIp();
            log.UserModelId = id;
            log.UserCode    = GetSigninId();

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (model.CurrentPassword == model.NewPassword)
            {
                ModelState.AddModelError("NewPassword", AuthResources.PasswordChangeSame);
                return(View(model));
            }

            IdentityResult result = UserManager.ChangePassword(id, model.CurrentPassword, model.NewPassword);

            if (!result.Succeeded)
            {
                AddErrors(result);
                return(View(model));
            }

            log.SetStatus(1);
            dbContext.SignInLogModels.Add(log);
            dbContext.SaveChanges();
            return(View("PasswordChanged"));
        }
Example #5
0
        public ActionResult SignOut()
        {
            SignInLogModel log = new SignInLogModel();

            log.UserModelId = GetUserId();
            log.ClientIp    = GetClientIp();
            log.UserCode    = GetSigninId();
            log.SetStatus(5);
            dbContext.SignInLogModels.Add(log);
            dbContext.SaveChanges();

            Session.RemoveAll();
            Session.Abandon();
            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
            return(RedirectToHome());
        }
Example #6
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());
        }