Esempio n. 1
0
        private void ConfigureBackend(IAppBuilder app)
        {
            var appDataPath = Path.Combine(AppLocalRootPath, "App_Data"); // HostingEnvironment.MapPath("~/App_Data");

            var dbPath   = Path.Combine(appDataPath, "Pim.db");
            var database = NoteLiteDb.GetNoteDatabase($"Filename={dbPath}; Upgrade=true; Initial Size=5MB; Password=;");

            AuthDatabase = database;
            IdentityDatabaseContextFactory = new IdentityDatabaseContextFactory(AuthDatabase);

            var storage = NoteStorage.CreateStandard(database, appDataPath, true);

            storage.Open();

            var languageSetting = ConfigurationManager.AppSettings[AppSettingKeyFulltextIndexLanguages];

            if (string.IsNullOrWhiteSpace(languageSetting))
            {
                languageSetting = "English,Russian";
            }

            var stemmerNames     = languageSetting.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToCaseInsensitiveSet();
            var redundantIndexes = storage.ActiveIndexNames.Where(name => !stemmerNames.Contains(name));

            foreach (var redundantIndexName in redundantIndexes)
            {
                Log.InfoFormat("Removing FT index {0}", redundantIndexName);
                storage.RemoveIndex(redundantIndexName);
            }

            stemmerNames.ExceptWith(storage.ActiveIndexNames);

            storage.OpenOrCreateIndexes(stemmerNames);

            storage.MultiIndex.UseFuzzySearch = true;

            Storage = storage;

            var builder = new ContainerBuilder();

            builder.RegisterControllers(typeof(Startup).Assembly);

            builder.Register(context => Storage).SingleInstance();
            //builder.RegisterType<HomeController>();
            //builder.RegisterType<ViewEditController>();
            //builder.RegisterType<SearchController>();
            builder.Register(c => IdentityDatabaseContextFactory).SingleInstance();

            Container = builder.Build();

            app.UseAutofacMiddleware(Container);

            DependencyResolver.SetResolver(new AutofacDependencyResolver(Container));

            app.UseAutofacMvc();
        }
Esempio n. 2
0
        private static void ProcessCommand(MyArguments arguments)
        {
            Check.DoRequireArgumentNotNull(arguments, nameof(arguments));

            if (arguments.IsOperationResetAdmin)
            {
                CheckCommandLineArgument(!string.IsNullOrWhiteSpace(arguments.IdentityDatabasePath), "Identity database path is required.");
                CheckCommandLineArgument(!string.IsNullOrWhiteSpace(arguments.NewPassword), "New password is required.");

                var database       = new LiteDatabase($"Filename={arguments.IdentityDatabasePath}; Password={arguments.DatabasePassword};");
                var contextFactory = new IdentityDatabaseContextFactory(database);
                var identityConfig = new IdentityConfiguration(contextFactory);

                identityConfig.EnsureDefaultUsersAndRolesAsync().GetAwaiter().GetResult();

                Console.WriteLine("Resetting admin password in {0} to {1}", arguments.IdentityDatabasePath, arguments.NewPassword);
                identityConfig.ResetPasswordAsync(IdentityConfiguration.AdminUserName, arguments.NewPassword)
                .GetAwaiter()
                .GetResult();
                var userManager = ApplicationUserManager.CreateOutOfContext(contextFactory);
                var adminUser   = userManager.FindByNameAsync(IdentityConfiguration.AdminUserName)
                                  .GetAwaiter().GetResult();
                Console.WriteLine("Admin user locked: {0}; end date: {1}, has password: {2}", adminUser?.LockoutEnabled, adminUser?.LockoutEndDateUtc, adminUser?.HasPassword());
                if (adminUser != null)
                {
                    if (adminUser.LockoutEnabled)
                    {
                        Console.WriteLine("Unlocking admin");
                        userManager.ResetAccessFailedCountAsync(adminUser.Id);
                        userManager.SetLockoutEnabledAsync(adminUser.Id, false);
                    }
                }
            }
            else
            {
                throw new MyArgumentException($"Operation not recognized: '{arguments.Operation}'; nothing to do.");
            }
        }