예제 #1
0
        public async Task <IActionResult> EditPost(RegisterViewModel registerViewModel)
        {
            if (ModelState.IsValid)
            {
                var userToUpdate = await DbContext.Users.FirstOrDefaultAsync(s => s.UserId == int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)));

                if (await TryUpdateModelAsync <DbUser>(userToUpdate, "", s => s.Login, s => s.Email, s => s.Password))
                {
                    try
                    {
                        userToUpdate.Password = HashProfile.GetSaltedHashData(userToUpdate.Password, userToUpdate.PasswordSalt);
                        await DbContext.SaveChangesAsync();

                        CookieProfile.UpdateUserCookie(HttpContext, userToUpdate);
                        return(RedirectToAction("Index", "Tasks"));
                    }
                    catch (DbUpdateException)
                    {
                        ModelState.AddModelError("", "Unable to save changes. " +
                                                 "Try again, and if the problem persists, " +
                                                 "see your system administrator.");
                    }
                }
            }

            return(View(registerViewModel));
        }
예제 #2
0
        public async Task <IActionResult> Login(LoginViewModel loginViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View("Login", loginViewModel));
            }

            DbUser user = await DbContext.Users.Where(s => s.Login == loginViewModel.Login).SingleOrDefaultAsync();

            if (user == null || !HashProfile.ValidatePasswords(loginViewModel.Password, user.Password, user.PasswordSalt))
            {
                ModelState.AddModelError("", "Wrong login or password");
                return(View("Login", loginViewModel));
            }
            if (!user.EmailConfirmed)
            {
                ModelState.AddModelError("", "Verify your email address");
                return(View("Login", loginViewModel));
            }

            CookieProfile.SignUserCookie(HttpContext, user);
            return(RedirectToAction("Index", "Tasks"));
        }