private async void OnIdTokenChanged(object sender, IdTokenEventArgs e) { if (!isProcessingIdToken) { isProcessingIdToken = true; if (e.Auth.CurrentUser is null) { wasDonor = false; } else { var claims = (await e.Auth.CurrentUser.GetIdTokenResultAsync(false)).Claims; bool isAdmin = false, isPartner = false; if (claims.TryGetValue("admin", out var a)) { isAdmin = (bool)a !; } if (claims.TryGetValue("partner", out var p)) { isPartner = (bool)p !; } isDonor = !(isAdmin || isPartner); if ((isDonor != wasDonor) || CurrentState.Location.OriginalString == "//Loading") { await OnCurrentUserChanged(DonorUser.Current); } wasDonor = isDonor; } DonorUser.SetCurrent(e.Auth.CurrentUser?.Uid); isProcessingIdToken = false; } }
private async void OnIdTokenChanged(IdTokenEventArgs e, bool forceRefresh) { if (!isProcessingIdToken) { isProcessingIdToken = true; if (e.Auth.CurrentUser is null) { wasEmailVerified = wasPartner = false; } else { var claims = (await e.Auth.CurrentUser.GetIdTokenResultAsync(forceRefresh)).Claims; if (claims.TryGetValue("partner", out var p)) { isPartner = (bool)p !; } if (claims.TryGetValue("teamRole", out var tR)) { teamRole = (string?)tR; } if (claims.TryGetValue("teamUID", out var tU)) { teamUID = (string?)tU; } if (claims.TryGetValue("email_verified", out var eV)) { emailVerified = (bool)eV !; } if ((emailVerified != wasEmailVerified) || (isPartner != wasPartner) || (teamUID != previousTeamUID) || (teamRole != previousTeamRole) || CurrentState.Location.OriginalString == "//Loading") { await OnCurrentUserUpdated(PartnerUser.Current); } (wasEmailVerified, wasPartner) = (emailVerified, isPartner); (previousTeamUID, previousTeamRole) = (teamUID, teamRole); } PartnerUser.SetCurrent(e.Auth.CurrentUser?.Uid); isProcessingIdToken = false; } }
private void OnIdTokenChanged(object sender, IdTokenEventArgs e) => OnIdTokenChanged(e, false);