/// <summary>
        /// Changes pass from reset key
        /// </summary>
        /// <param name="idUser"></param>
        /// <param name="newPass"></param>
        /// <param name="passResetToken"></param>
        /// <returns></returns>
        public static async Task <ChangePasswordFromResetKeyOutput> ChangePasswordFromResetKeyAsync(MapHiveIdentityUser idUser, string newPass, string passResetToken)
        {
            var output = new ChangePasswordFromResetKeyOutput();

            try
            {
                var userManager = MapHive.Core.Identity.UserManagerUtils.GetUserManager();

                if (idUser != null)
                {
                    if (await userManager.CheckPasswordAsync(idUser, newPass))
                    {
                        output.FailureReason = "new_pass_same_as_old_pass";
                        output.Success       = false;
                    }
                    else
                    {
                        await userManager.ResetPasswordAsync(idUser, passResetToken, newPass);

                        output.Success = true;
                    }
                }
            }
            catch (Exception ex)
            {
                output.FailureReason = "unknown_error";
            }

            return(output);
        }
        public static async Task <ChangePasswordFromResetKeyOutput> ChangePasswordFromResetKeyAsync <TAccount>(
            UserAccountService <TAccount> userAccountService, string newPass, string verificationKey)
            where TAccount : RelationalUserAccount
        {
            var output = new ChangePasswordFromResetKeyOutput();

            try
            {
                output.Success = userAccountService.ChangePasswordFromResetKey(verificationKey, newPass);
            }
            catch (Exception ex)
            {
                if (ex.Message == "The new password must be different from the old password.")
                {
                    output.FailureReason = "new_pass_same_as_old_pass";
                }
            }

            return(output);
        }