public override OAuthState Handle(OAuthResult specification)
 {
     if (CanHandle(specification))
     {
         _oAuthWrapper.CreateOrUpdateAccount(specification.Provider, specification.ProviderUserId, HttpContext.Current.User.Identity.Name);
         return(OAuthState.OAuthCreated);
     }
     else
     {
         return(Successor.Handle(specification));
     }
 }
        public bool ConfirmClientRegistration(string username, string email, string provider, string providerUserId)
        {
            var user = _userRepository.GetUserByName(username);

            if (user != null)
            {
                return(false);
            }

            user = new User {
                Username = username, Email = email, UserKey = Guid.NewGuid()
            };
            _userRepository.Insert(user);
            _unitOfWork.Save();

            _oAuthWrapper.CreateOrUpdateAccount(provider, providerUserId, username);
            return(_oAuthWrapper.Login(provider, providerUserId));
        }