Exemple #1
0
        private UserToken Authenticate(LoginModel login)
        {
            // get account from database to check if email exists
            var user = context.Users.FirstOrDefault(x => x.Email == login.Email);

            if (user == null || user.Active != true)
            {
                return(null);
            }

            // verify password
            passwordHasher = new BCryptPasswordHasher <User>();
            var result = passwordHasher.VerifyHashedPassword(user, login.Password, user.Password);

            if (result == PasswordVerificationResult.Failed)
            {
                return(null);
            }

            // get user role from database
            var userRole  = context.UserRoles.Find(user.UserRoleId);
            var userToken = new UserToken
            {
                UserId    = user.Id,
                Username  = user.Username,
                Email     = user.Email,
                ConnectId = user.ConnectId,
                UserRole  = userRole.Name
            };

            return(userToken);
        }
        private User InitUser(RegisterModel model, int userRoleId)
        {
            var passwordHasher = new BCryptPasswordHasher <User>();

            return(new User
            {
                Username = model.Username,
                Email = model.Email,
                UserRoleId = userRoleId,
                Password = passwordHasher.HashPassword(null, model.Password)
            });
        }
        public async Task <IActionResult> UpdatePassword([FromBody] PasswordModel model, [FromServices] UserService userService)
        {
            var user = await userService.GetUserPrincipal(User);

            var passwordHasher = new BCryptPasswordHasher <User>();
            var compare        = passwordHasher.VerifyHashedPassword(null, model.CurrentPassword, user.Password);

            if (compare != PasswordVerificationResult.Success)
            {
                return(Unauthorized());
            }

            var hashedPassword = passwordHasher.HashPassword(null, model.UpdatePassword);

            user = await userService.Update(user.Id, hashedPassword);

            if (user != null)
            {
                return(Ok(model));
            }
            return(BadRequest(HttpStatus.SERVER_ERROR));
        }