public async Task <ValidationResult <Guid, ChangePasswordResult> > AuthenticateAsync(string username, string password)
        {
            var user = await Users.FirstOrDefaultAsync(x => x.Email == username);

            if (user == null)
            {
                return(new ValidationResult <Guid, ChangePasswordResult>(ChangePasswordResult.InvalidCredentials));
            }

            bool matched = _encryptor.Compare(password, user.PasswordHash, user.Salt);

            return(!matched
                ? new ValidationResult <Guid, ChangePasswordResult>(ChangePasswordResult.InvalidCredentials)
                : new ValidationResult <Guid, ChangePasswordResult>(user.ID.Value));
        }