コード例 #1
0
 public AuthMessageSender(IOptions <EmailConfigOptions> options)
 {
     this.options = options.Value;
 }
コード例 #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddOptions();

            services.AddMvc(options => { })
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.DateTimeZoneHandling  = Newtonsoft.Json.DateTimeZoneHandling.Local;
                options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            });

            services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
                                  builder => builder.AllowAnyOrigin()
                                  .AllowAnyMethod()
                                  .AllowAnyHeader()
                                  .AllowCredentials());
            });


            services.AddDbContext <IPCS.Repositories.Context.IPCSContext>(options =>
            {
                var defautlConnection = Configuration.GetConnectionString("Default");
                options.UseSqlServer(Configuration.GetConnectionString(defautlConnection),
                                     b => b.MigrationsAssembly(("IPCS.Repositories")));
            });

            services.AddDbContext <IPCSOAuthContext>(options =>
            {
                var defautlConnection = Configuration.GetConnectionString("DefaultOAuth");
                options.UseSqlServer(Configuration.GetConnectionString(defautlConnection),
                                     b => b.MigrationsAssembly(("IPCS.OAuth.Repositories")));
            });


            services.AddAuthorization(options =>
            {
                options.AddPolicy("User", policy =>
                {
                    policy.RequireRole("ROLE_USER");
                    policy.AddAuthenticationSchemes("Bearer");
                });

                options.AddPolicy("Client", policy =>
                {
                    policy.RequireAuthenticatedUser();
                    policy.AddAuthenticationSchemes("Bearer");
                });
            });

            var passwordOptions = Configuration.GetSection("PasswordOptions");

            //Configuration
            services.Configure <IdentityOptions>(options =>
            {
                // Password settings
                options.Password.RequireDigit           = passwordOptions.GetValue <bool>("RequireDigit");
                options.Password.RequiredLength         = passwordOptions.GetValue <int>("RequiredLength");
                options.Password.RequireNonAlphanumeric = passwordOptions.GetValue <bool>("RequireNonAlphanumeric");
                options.Password.RequireUppercase       = passwordOptions.GetValue <bool>("RequireUppercase");
                options.Password.RequireLowercase       = passwordOptions.GetValue <bool>("RequireLowercase");

                // Lockout settings
                options.Lockout.DefaultLockoutTimeSpan  = TimeSpan.FromMinutes(passwordOptions.GetValue <double>("DefaultLockoutTimeSpan"));
                options.Lockout.MaxFailedAccessAttempts = passwordOptions.GetValue <int>("MaxFailedAccessAttempts");

                // User settings
                options.User.RequireUniqueEmail = passwordOptions.GetValue <bool>("RequireUniqueEmail");
            });

            services.AddIdentity <User, IdentityRole>(config =>
            {
                config.SignIn.RequireConfirmedEmail = true;
            })
            .AddEntityFrameworkStores <IPCSOAuthContext>()
            .AddDefaultTokenProviders();

            services.AddJsonLocalization(options =>
            {
                options.ResourceFilesDirectory = "Resources";
            });

            services.AddTransient <IEmailSender, AuthMessageSender>();

            services.AddScoped <IStringLocalizer, JsonStringLocalizer>();

            //Repository
            services.AddScoped <IBudgetRepository, BudgetRepository>();
            services.AddScoped <IActivityTypeRepository, ProjectActivityTypeRepository>();
            services.AddScoped <ICurrencyRepository, CurrencyRepository>();
            services.AddScoped <IEntityRepository, EntityRepository>();
            services.AddScoped <IProjectActivityRepository, ProjectActivityRepository>();
            services.AddScoped <IProjectCertificationRepository, ProjectCertificationRepository>();
            services.AddScoped <IProjectContactRepository, ProjectContactRepository>();
            services.AddScoped <IProjectDailyReportRepository, ProjectDailyReportRepository>();
            services.AddScoped <IProjectInformationRepository, ProjectInformationRepository>();
            services.AddScoped <IProjectLocationRepository, ProjectLocationRepository>();
            services.AddScoped <IProjectOrderRepository, ProjectOrderRepository>();
            services.AddScoped <IProjectPropertyRepository, ProjectPropertyRepository>();
            services.AddScoped <IProjectStatusRepository, ProjectStatusRepository>();
            //services.AddScoped<IProjectWeatherRepository, ProjectWeatherRepository>();
            services.AddScoped <IWeatherConditionRepository, WeatherConditionRepository>();
            services.AddScoped <IRecoverPasswordRepository, RecoverPasswordRepository>();
            services.AddScoped <IUserReporsitory, UserRepository>();
            services.AddScoped <ICountryRepository, CountryRepository>();
            services.AddScoped <ICityRepository, CityRepository>();
            services.AddScoped <IStateRepository, StateRepository>();
            //services.AddScoped<IProjectSafetyRepository, ProjectSafetyRepository>();
            //services.AddScoped<IProjectCriticalPathRepository, ProjectCriticalPathRepository>();
            services.AddScoped <ISafetyIssueRepository, SafetyIssueRepository>();
            services.AddScoped <IProjectDailyReportRepository, ProjectDailyReportRepository>();


            //Services
            services.AddScoped <IBudgetService, BudgetService>();
            services.AddScoped <IActivityTyperService, ActivityTypeService>();
            services.AddScoped <ICurrencyService, CurrencyService>();
            services.AddScoped <IEntityService, EntityService>();
            services.AddScoped <IProjectActivityService, ProjectActivityService>();
            services.AddScoped <IProjectCertificationService, ProjectCertificationService>();
            services.AddScoped <IProjectContactService, ProjectContactService>();
            services.AddScoped <IProjectDailyReportService, ProjectDailyReportService>();
            services.AddScoped <IProjectInformationService, ProjectInformationService>();
            services.AddScoped <IProjectLocationService, ProjectLocationService>();
            services.AddScoped <IProjectOrderService, ProjectOrderService>();
            services.AddScoped <IProjectPropertyService, ProjectPropertyService>();
            services.AddScoped <IProjectStatusService, ProjectStatusService>();
            //services.AddScoped<IProjectWeatherService, ProjectWeatherService>();
            services.AddScoped <IWeatherConditionService, WeatherConditionService>();
            services.AddScoped <IRecoverPasswordService, RecoverPasswordService>();
            services.AddScoped <ILocationDataService, LocationDataService>();
            //services.AddScoped<IProjectSafetyService, ProjectSafetyService>();
            //services.AddScoped<IProjectCriticalPathService, ProjectCriticalPathService>();
            services.AddScoped <ISafetyIssueService, SafetyIssueService>();
            services.AddScoped <IProjectDailyReportService, ProjectDailyReportService>();

            // Add framework services.
            //services.AddScoped<IClaimsTransformer, Auth.ClaimsTransformer>();
            //services.AddScoped<ICustomTokenRequestValidator, CustomTokenRequestValidator>();


            services.Configure <Config.PasswordOptions>(Configuration);
            services.Configure <Config.UseIdentityServerAuthenticationOptions>(Configuration);
            //services.Configure<Config.GeneralOptions>(Configuration);
            services.Configure <GeneralOptions>(options => Configuration.GetSection("GeneralOptions").Bind(options));


            var emailConfigOptions = new EmailConfigOptions();

            Configuration.GetSection("EmailConfigOptions").Bind(emailConfigOptions);

            services.EmailConfigOptions(options => {
                options.SmtpPort     = emailConfigOptions.SmtpPort;
                options.SmtpUri      = emailConfigOptions.SmtpUri;
                options.From         = emailConfigOptions.From;
                options.FromEmail    = emailConfigOptions.FromEmail;
                options.LocalDomain  = emailConfigOptions.LocalDomain;
                options.SmtpPassword = emailConfigOptions.SmtpPassword;
            });
        }