public static void AddPersistenceServices(this IServiceCollection services, ILibraryManagementConfig appConfig) { services.AddAutoMapper(); services.AddDbContext <LibraryManagementObjectContext>(optionsBuilder => { if (appConfig.IsTesting) { optionsBuilder.UseLazyLoadingProxies() .UseInMemoryDatabase("LibraryManagementTestDb"); } else { // production Db optionsBuilder.UseLazyLoadingProxies() .UseSqlServer(appConfig.DataConnectionString, options => { options.MigrationsAssembly("LibraryManagement.Infrastructure"); }); } }); }
/// <summary> /// Configure jwt authentication /// </summary> /// <param name="services">current</param> /// <param name="appConfig">App config.</param> public static void AddJwtAuthentication(this IServiceCollection services, ILibraryManagementConfig appConfig) { var key = Encoding.ASCII.GetBytes(appConfig.AppSecret); services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(x => { x.Events = new JwtBearerEvents { OnTokenValidated = context => { var userRepository = context.HttpContext.RequestServices.GetRequiredService <IUserRepository>(); var user = userRepository.GetById(Guid.Parse(context.Principal.Identity.Name)); if (user == null) { // return unauthorized if user no longer exists context.Fail("Unauthorized"); } return(Task.CompletedTask); } }; x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); }
/// <summary> /// AuthenticateHandler ctor. /// </summary> /// <param name="userRepository">User Repository</param> /// <param name="appConfig">App. Config</param> public AuthenticateHandler(IUserRepository userRepository, ILibraryManagementConfig appConfig) { _userRepository = userRepository; _appConfig = appConfig; }
public Startup(IConfiguration configuration) { _configuration = new LibraryManagementConfig(configuration); }
public static void RegisterApiDependencies(this ContainerBuilder builder, ILibraryManagementConfig appConfig) { builder.RegisterInstance(appConfig).As <ILibraryManagementConfig>().SingleInstance(); }