public async Task <T> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (normalizedUserName == null) { throw new ArgumentNullException(nameof(normalizedUserName)); } T foundUser = null; try { TokkepediaApiClient apiClient = new TokkepediaApiClient(); foundUser = (T)(dynamic)await apiClient.GetUserAsync(normalizedUserName); } catch { } return(null); //return (T)(dynamic)(new FirebaseIdentityUser()); }
public async Task <T> FindByIdAsync(string userId, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (userId == null) { throw new ArgumentNullException(nameof(userId)); } T foundUser = null; try { TokkepediaApiClient apiClient = new TokkepediaApiClient(); var item = await apiClient.GetUserAsync(userId); foundUser = (T)(dynamic)item; } catch { } return(foundUser); }
public async Task <IActionResult> OnGetCallbackAsync(string returnUrl = null, string remoteError = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (remoteError != null) { ErrorMessage = $"Error from external provider: {remoteError}"; return(RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { ErrorMessage = "Error loading external login information."; return(RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } // profile claims // Sign in the user with this external login provider if the user already has a login. FirebaseAuthType authType; string email = "", photoUrl = ""; if (info.ProviderDisplayName == "Facebook") { authType = FirebaseAuthType.Facebook; var claims = info.Principal.Identities.First().Claims; email = claims.ElementAt(1).Value; } else if (info.ProviderDisplayName == "Google") { authType = FirebaseAuthType.Google; var claims = info.Principal.Identities.First().Claims; email = claims.ElementAt(4).Value; photoUrl = claims.ElementAt(5).Value; } else { authType = new FirebaseAuthType(); } var token = info.AuthenticationTokens.First().Value; TokkepediaApiClient apiClient = new TokkepediaApiClient(); FirebaseAuthLink link = null; try { link = await apiClient.LoginOAuthAsync(info.ProviderDisplayName, token); } catch { } TokketUser user = await apiClient.GetUserAsync(link.User.LocalId); // If the user does not have an account, then ask the user to create an account. if (user == null) { ReturnUrl = returnUrl; LoginProvider = info.LoginProvider; if (info.Principal.HasClaim(c => c.Type == ClaimTypes.Email)) { Input = new InputModel { FirebaseToken = link.FirebaseToken, Id = link.User.LocalId, UserName = link.User.LocalId, DisplayName = info.Principal.Identity.Name, Email = info.Principal.FindFirstValue(ClaimTypes.Email) }; } return(Page()); } //Sign user in else { if (user.IsLockedOut) { return(RedirectToPage("./Lockout")); } await _signInManager.SignInAsync(user, true); _logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider); return(LocalRedirect(returnUrl)); } //var result = new Microsoft.AspNetCore.Identity.SignInResult();// await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false, bypassTwoFactor : true); //if (result.Succeeded) //{ // _logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider); // return LocalRedirect(returnUrl); //} //if (result.IsLockedOut) //{ // return RedirectToPage("./Lockout"); //} //else //{ // // If the user does not have an account, then ask the user to create an account. // ReturnUrl = returnUrl; // LoginProvider = info.LoginProvider; // if (info.Principal.HasClaim(c => c.Type == ClaimTypes.Email)) // { // Input = new InputModel // { // Email = info.Principal.FindFirstValue(ClaimTypes.Email) // }; // } // return Page(); //} }