public SmartApplicationContext( IHostEnvironment hostEnvironment, IConfiguration configuration, ILogger logger, params Assembly[] coreAssemblies) { Guard.NotNull(hostEnvironment, nameof(hostEnvironment)); Guard.NotNull(configuration, nameof(configuration)); Guard.NotNull(logger, nameof(logger)); HostEnvironment = hostEnvironment; Configuration = configuration; Logger = logger; ConfigureFileSystem(hostEnvironment); DataSettings.SetApplicationContext(this, OnDataSettingsLoaded); ModuleCatalog = new ModuleCatalog(); TypeScanner = new DefaultTypeScanner(ModuleCatalog, logger, coreAssemblies); OSIdentity = new GenericOSIdentity(); // Create app configuration // TODO: (core) Try to incorporate IOptionsMonitor<SmartConfiguration> somehow. var config = new SmartConfiguration(); configuration.Bind("Smartstore", config); AppConfiguration = config; }
private static void PopulateLinuxUser(GenericOSIdentity identity) { var process = new Process { StartInfo = new ProcessStartInfo { RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, FileName = "sh", Arguments = "-c \" id -u ; id -G \"" } }; process.Start(); process.WaitForExit(); var res = process.StandardOutput.ReadToEnd(); var respars = res.Split("\n"); identity.UserId = respars[0]; identity.Groups = respars[1].Split(" ").AsReadOnly(); }
private static void PopulateWindowsUser(GenericOSIdentity identity) { identity.Groups = WindowsIdentity.GetCurrent().Groups?.Select(p => p.Value).AsReadOnly(); identity.UserId = identity.Name; }