public User Authenticate(OidcUser oidcUser) { // Get Identity Provider var providerName = "OpenIDConnect"; AuthenticationProviderElement externalProvider = Config.Get <AuthenticationConfig>().SecurityTokenService .AuthenticationProviders.Values .FirstOrDefault(x => x.Name == providerName); if (externalProvider != null) { UserManager userManager = UserManager.GetManager(externalProvider.DataProviderName); // Find sitefinity user var sitefinityUser = userManager.GetUser(oidcUser.Email); if (sitefinityUser != null) { // Update sitefinity user SystemManager.RunWithElevatedPrivilege(p => { try { UpdateUser(externalProvider.DataProviderName, externalProvider.Name, oidcUser.Email, oidcUser.Id.ToString(), oidcUser.FirstName, oidcUser.LastName); } catch (Exception ex) { Log.Write($"Failed to update user. Message: {ex.Message}", ConfigurationPolicy.Authentication); throw; } }); } else { // Create sitefinity user SystemManager.RunWithElevatedPrivilege(p => { try { CreateUser(externalProvider.DataProviderName, externalProvider.Name, oidcUser.Email, oidcUser.Id.ToString(), oidcUser.FirstName, oidcUser.LastName); } catch (Exception ex) { Log.Write($"Failed to create user. Message: {ex.Message}", ConfigurationPolicy.Authentication); throw; } }); } sitefinityUser = userManager.GetUser(oidcUser.Email); return(sitefinityUser); } return(null); }
private void Notify(OidcUser user) { var state = user.ToAuthenticationState(); NotifyAuthenticationStateChanged(Task.FromResult(state)); }
private void OnUserChanged(OidcUser user) => Notify(user);