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); }
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); }
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); } }
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); } } }
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; }
public async Task ResetPassword(SocialAuthProvider provider, string email) { var authConfig = configuration.GetSection("AuthConfig").Get <AuthConfig>(); await authService.ResetPassword(authConfig, email); }