Example #1
0
        public static INeverEmptyPantryBuilder AddJwtAuthentication(this INeverEmptyPantryBuilder builder)
        {
            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); // => Remove default claims

            builder.Services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultScheme             = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(config =>
            {
                config.RequireHttpsMetadata      = true;
                config.SaveToken                 = true;
                config.TokenValidationParameters = new TokenValidationParameters()
                {
                    ValidIssuer              = builder.JwtDetails.JwtIssuer,
                    ValidAudience            = builder.JwtDetails.JwtAudience,
                    IssuerSigningKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.JwtDetails.JwtKey)),
                    ClockSkew                = TimeSpan.Zero, // remove delay of expired token
                    ValidateIssuerSigningKey = true,
                    ValidateIssuer           = true,
                    ValidateAudience         = true
                };
            });

            return(builder);
        }
Example #2
0
        public static INeverEmptyPantryBuilder AddValidators(this INeverEmptyPantryBuilder builder)
        {
            builder.Services.AddScoped <IValidator <Product>, CreateProductValidator>();
            builder.Services.AddScoped <IValidator <Product>, RemoveProductValidator>();
            builder.Services.AddScoped <IValidator <Product>, UpdateProductValidator>();

            return(builder);
        }
Example #3
0
        public static INeverEmptyPantryBuilder AddRepository(this INeverEmptyPantryBuilder builder)
        {
            builder.Services.AddScoped <IAccountRepository, AccountRepository>();

            builder.Services.AddScoped <IRepository <OfficeLocation>, BaseEntityRepository <OfficeLocation> >();
            builder.Services.AddScoped <IRepository <Product>, BaseEntityRepository <Product> >();

            return(builder);
        }
Example #4
0
        public static INeverEmptyPantryBuilder AddJwtDetails(this INeverEmptyPantryBuilder builder)
        {
            var jwtDetails = new JwtDetails();

            builder.Configuration.GetSection("JwtDetails").Bind(jwtDetails);
            builder.Services.AddSingleton(jwtDetails);
            builder.JwtDetails = jwtDetails;

            return(builder);
        }
Example #5
0
        public static INeverEmptyPantryBuilder AddConnectionStrings(this INeverEmptyPantryBuilder builder)
        {
            var connectionStrings = new ConnectionStrings();

            builder.Configuration.GetSection("ConnectionStrings").Bind(connectionStrings);
            builder.Services.AddSingleton(connectionStrings);
            builder.ConnectionStrings = connectionStrings;

            return(builder);
        }
Example #6
0
        public static INeverEmptyPantryBuilder AddApplication(this INeverEmptyPantryBuilder builder)
        {
            builder.Services.AddScoped <IAuthenticationService, AuthenticationService>();
            builder.Services.AddScoped <IAccountService, AccountService>();
            builder.Services.AddScoped <IValidator <ProfileModel>, ProfileValidator>();
            builder.Services.AddScoped <IProductService, ProductService>();
            builder.Services.AddScoped <IValidatorFactory <Product>, BaseEntityValidatorFactory <Product> >();
            builder.Services.AddScoped <IAdministratorService, AdministratorService>();

            return(builder);
        }
Example #7
0
        public static INeverEmptyPantryBuilder AddIdentity(this INeverEmptyPantryBuilder builder)
        {
            builder.Services.AddIdentity <ApplicationUser, IdentityRole>(options =>
            {
                options.ClaimsIdentity.UserIdClaimType   = JwtRegisteredClaimNames.Sub;
                options.ClaimsIdentity.UserNameClaimType = JwtRegisteredClaimNames.UniqueName;
            })
            .AddEntityFrameworkStores <ApplicationDbContext>()
            .AddSignInManager <ApplicationSignInManager>()
            .AddDefaultTokenProviders();

            return(builder);
        }
Example #8
0
        public static INeverEmptyPantryBuilder AddDbContext(this INeverEmptyPantryBuilder builder, Action <DbContextOptionsBuilder> options)
        {
            builder.Services.AddDbContext <ApplicationDbContext>(options);

            return(builder);
        }