Beispiel #1
0
        public async Task <ActionResult <AuthToken> > ChangePassord(SocialAuthProvider provider, string accessToken, string newPassword)
        {
            var authConfig = configuration.GetSection("AuthConfig").Get <AuthConfig>();
            var authToken  = await authService.ChangePassword(authConfig, accessToken, newPassword);

            authToken.CustomerExists = dataContext.Users.Any(c => c.FirebaseUserId == authToken.UserId);

            return(authToken);
        }
Beispiel #2
0
        public async Task <ActionResult <AuthToken> > SocialLogin(SocialAuthProvider provider, string accessToken)
        {
            var authConfig = configuration.GetSection("AuthConfig").Get <AuthConfig>();
            var authToken  = await authService.SocialLogin(authConfig, IAuthService.SocialAuthProvider.Facebook, accessToken);

            authToken.CustomerExists = dataContext.Users.Any(c => c.FirebaseUserId == authToken.UserId);

            return(authToken);
        }
Beispiel #3
0
        public virtual void AddSocialNetworkAccount(SocialAuthProvider provider, string providerUserId)
        {
            if (_socialNetworkAccounts.All(x => x.Provider != provider))
            {
                var socialNetworkAccount = new SocialNetworkAccount(provider, this, providerUserId);

                _socialNetworkAccounts.Add(socialNetworkAccount);
            }
        }
Beispiel #4
0
        public async Task <AuthToken> SocialLogin(AuthConfig authConfig, SocialAuthProvider provider, string accessToken)
        {
            using (var client = new HttpClient())
            {
                try
                {
                    var authType = FirebaseAuthType.Facebook;

                    switch (provider)
                    {
                    case SocialAuthProvider.Facebook: authType = FirebaseAuthType.Facebook; break;

                    case SocialAuthProvider.Google: authType = FirebaseAuthType.Google; break;

                    case SocialAuthProvider.Twitter: authType = FirebaseAuthType.Twitter; break;
                    }

                    var firebaseAuthProvider = new FirebaseAuthProvider(new FirebaseConfig(authConfig.ApiKey));
                    var authLink             = await firebaseAuthProvider.SignInWithOAuthAsync(authType, accessToken);

                    var authToken = new AuthToken
                    {
                        Token     = authLink.FirebaseToken,
                        ExpiresAt = DateTime.Now.AddSeconds(authLink.ExpiresIn)
                    };

                    var handler  = new JwtSecurityTokenHandler();
                    var userInfo = handler.ReadJwtToken(authLink.FirebaseToken);
                    userInfo.Payload.TryGetValue("user_id", out object userId);
                    authToken.UserId = userId as string;

                    return(authToken);
                }
                catch (FirebaseAuthException e)
                {
                    switch (e.Reason)
                    {
                    case AuthErrorReason.MissingEmail: throw new AuthException(SignUpError.MissingEmail.ToDescription());

                    case AuthErrorReason.WrongPassword: throw new AuthException(SignUpError.WrongPassowrd.ToDescription());

                    case AuthErrorReason.UserDisabled: throw new AuthException(SignUpError.DisabledUser.ToDescription());

                    case AuthErrorReason.InvalidEmailAddress: throw new AuthException(SignUpError.InvalidEmail.ToDescription());

                    case AuthErrorReason.Undefined: throw new AuthException(e.InnerException != null ? e.InnerException.Message : e.Message);

                    default: throw new AuthException(SignUpError.Other.ToDescription());
                    }
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message);
                }
            }
        }
Beispiel #5
0
        public SocialNetworkAccount(SocialAuthProvider provider, User user, string providerUserId)
            : this()
        {
            if (user == null) throw new ArgumentNullException("user");
            if (providerUserId == null) throw new ArgumentNullException("providerUserId");

            Provider = provider;
            User = user;
            ProviderUserId = providerUserId;
        }
Beispiel #6
0
 public async Task ResetPassword(SocialAuthProvider provider, string email)
 {
     var authConfig = configuration.GetSection("AuthConfig").Get <AuthConfig>();
     await authService.ResetPassword(authConfig, email);
 }