예제 #1
0
        public static string GetDbConnectionString(this SiteSettings siteSettingsValue)
        {
            siteSettingsValue.CheckArgumentIsNull(nameof(siteSettingsValue));

            switch (siteSettingsValue.ActiveDatabase)
            {
            case ActiveDatabase.InMemoryDatabase:
                return(null);

            case ActiveDatabase.LocalDb:
                var attachDbFilename      = siteSettingsValue.ConnectionStrings.LocalDb.AttachDbFilename;
                var webRootPath           = Path.Combine(AppContext.BaseDirectory.Split(new[] { "bin" }, StringSplitOptions.RemoveEmptyEntries).First(), "wwwroot");
                var attachDbFilenamePath  = Path.Combine(webRootPath, "App_Data", attachDbFilename);
                var localDbInitialCatalog = siteSettingsValue.ConnectionStrings.LocalDb.InitialCatalog;
                return($@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog={localDbInitialCatalog};AttachDbFilename={attachDbFilenamePath};Integrated Security=True;MultipleActiveResultSets=True;");

            case ActiveDatabase.SqlServer:
                return(siteSettingsValue.ConnectionStrings.SqlServer.ApplicationDbContextConnection);

            case ActiveDatabase.Postgres:
                return(siteSettingsValue.ConnectionStrings.Postgres.ApplicationDbContextConnection);

            default:
                throw new NotSupportedException("Please set the ActiveDatabase in appsettings.json file.");
            }
        }
        public static IServiceCollection AddIdentityOptions(
            this IServiceCollection services, SiteSettings siteSettings)
        {
            siteSettings.CheckArgumentIsNull(nameof(siteSettings));

            services.addConfirmEmailDataProtectorTokenOptions(siteSettings);
            services.AddIdentity <User, Role>(identityOptions =>
            {
                setPasswordOptions(identityOptions.Password, siteSettings);
                setSignInOptions(identityOptions.SignIn, siteSettings);
                setUserOptions(identityOptions.User);
                setLockoutOptions(identityOptions.Lockout, siteSettings);
            }).AddUserStore <ApplicationUserStore>()
            .AddUserManager <ApplicationUserManager>()
            .AddRoleStore <ApplicationRoleStore>()
            .AddRoleManager <ApplicationRoleManager>()
            .AddSignInManager <ApplicationSignInManager>()
            .AddErrorDescriber <CustomIdentityErrorDescriber>()
            // You **cannot** use .AddEntityFrameworkStores() when you customize everything
            //.AddEntityFrameworkStores<ApplicationDbContext, int>()
            .AddDefaultTokenProviders()
            .AddTokenProvider <ConfirmEmailDataProtectorTokenProvider <User> >(EmailConfirmationTokenProviderName);

            services.ConfigureApplicationCookie(identityOptionsCookies =>
            {
                var provider = services.BuildServiceProvider();
                setApplicationCookieOptions(provider, identityOptionsCookies, siteSettings);
            });

            services.enableImmediateLogout();

            return(services);
        }
        public static string GetDbConnectionString(this SiteSettings siteSettingsValue)
        {
            siteSettingsValue.CheckArgumentIsNull(nameof(siteSettingsValue));

            switch (siteSettingsValue.ActiveDatabase)
            {
            case ActiveDatabase.InMemoryDatabase:
                return(null);


            case ActiveDatabase.SqlServer:
                return(siteSettingsValue.ConnectionStrings.SqlServer.ApplicationDbContextConnection);

            default:
                throw new NotSupportedException("Please set the ActiveDatabase in appsettings.json file.");
            }
        }