public async Task <bool> TwoFactorIsEnabledAsync(ITwoFactorProvidersUser user) { var providers = user.GetTwoFactorProviders(); if (providers == null) { return(false); } foreach (var p in providers) { if (p.Value?.Enabled ?? false) { if (!TwoFactorProvider.RequiresPremium(p.Key)) { return(true); } if (await CanAccessPremium(user)) { return(true); } } } return(false); }
public async Task <bool> CanAccessPremium(ITwoFactorProvidersUser user) { var userId = user.GetUserId(); if (!userId.HasValue) { return(false); } if (user.GetPremium()) { return(true); } var orgs = await _currentContext.OrganizationMembershipAsync(_organizationUserRepository, userId.Value); if (!orgs.Any()) { return(false); } var orgAbilities = await _applicationCacheService.GetOrganizationAbilitiesAsync(); return(orgs.Any(o => orgAbilities.ContainsKey(o.Id) && orgAbilities[o.Id].UsersGetPremium && orgAbilities[o.Id].Enabled)); }
public async Task <bool> TwoFactorProviderIsEnabledAsync(TwoFactorProviderType provider, ITwoFactorProvidersUser user) { var providers = user.GetTwoFactorProviders(); if (providers == null || !providers.ContainsKey(provider) || !providers[provider].Enabled) { return(false); } if (!TwoFactorProvider.RequiresPremium(provider)) { return(true); } return(await CanAccessPremium(user)); }