/// <summary> /// Adds 1Password configuration provider for <paramref name="appName"/> to <paramref name="builder"/>. /// A series of conventions are followed: /// - AppName: Identifies the application where to load the settings. A secure note is expected to exist /// in 1Password with a name of the form "appName.AppSettings". Inside this there should be a section /// for each environment with the settings. Each setting should be like eg: "Database:ConnectionString". /// </summary> /// <param name="builder">The <see cref="IConfigurationBuilder"/> to add to.</param> /// <param name="appName">App name pre-configured on 1Password like "appName.AppSettings" and as a secure note</param> /// <param name="organization">1Password organization name</param> /// <param name="vault">1Password organization vault</param> /// <param name="environment">Execution environment to load from the 1Password Note sections.</param> /// <param name="sessionToken">1Password Session Token. The session will last 30 min after you signin with the command line tool.</param> /// <param name="configureSource">Configures the source.</param> /// <returns>The <see cref="IConfigurationBuilder"/>.</returns> public static IConfigurationBuilder Add1Password( this IConfigurationBuilder builder, string appName, string organization, string vault, string environment, string sessionToken, Action <OnePasswordConfigurationSource>?configureSource = null) { var serviceProvider = OnePasswordConfigurationFactory.BuildServiceProvider(); var tool = serviceProvider.GetService <IOnePasswordTool>(); var source = new OnePasswordConfigurationSource( tool, appName, organization, vault, environment, sessionToken); configureSource?.Invoke(source); return(builder.Add(source)); }
/// <summary> /// Creates a configuration provider for 1Password. /// </summary> /// <param name="source">The source settings.</param> public OnePasswordConfigurationProvider(OnePasswordConfigurationSource source) { _source = source ?? throw new ArgumentNullException(nameof(source)); }