private static ISecretProvider CreateAuthorizedSecretProvider(SecretStoreSource source, Role role, IRoleAuthorization authorization) { if (source.CachedSecretProvider is null) { return(new AuthorizedSecretProvider(role, authorization, source.SecretProvider)); } return(new AuthorizedCachedSecretProvider(role, authorization, source.CachedSecretProvider)); }
private static void ReplaceSecretSourceWithAuthorized(Role role, IList <SecretStoreSource> after, IEnumerable <SecretStoreSource> before) { SecretStoreSource[] pendingAuthorization = after.Except(before).ToArray(); foreach (SecretStoreSource pendingSource in pendingAuthorization) { var authorizedSource = new SecretStoreSource(serviceProvider => { var authorization = serviceProvider.GetRequiredService <IRoleAuthorization>(); ISecretProvider secretProvider = CreateAuthorizedSecretProvider(pendingSource, role, authorization); return(secretProvider); }); int index = after.IndexOf(pendingSource); after[index] = authorizedSource; } }