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
                };
            });
        }
Example #3
0
 /// <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;
 }
Example #4
0
 public Startup(IConfiguration configuration)
 {
     _configuration = new LibraryManagementConfig(configuration);
 }
Example #5
0
 public static void RegisterApiDependencies(this ContainerBuilder builder, ILibraryManagementConfig appConfig)
 {
     builder.RegisterInstance(appConfig).As <ILibraryManagementConfig>().SingleInstance();
 }