// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.Configure <ApplicationSettings>(Configuration.GetSection("ApplicationSettings")); services.AddControllers(); services.AddAutoMapper(typeof(Startup)); services.AddDbContext <BookingAppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("BookingServiceConnection"))); services.AddDefaultIdentity <AuthentificationUser>().AddRoles <AuthorizationRole>() .AddEntityFrameworkStores <BookingAppDbContext>(); services.Configure <IdentityOptions>(options => { options.Password.RequireDigit = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireLowercase = true; options.Password.RequireUppercase = true; options.Password.RequiredLength = 6; } ); services.AddCors(); var key = Encoding.UTF8.GetBytes(Configuration["ApplicationSettings:JWT_Secret"].ToString()); services.AddAuthentication(x => { x.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = false; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false, ClockSkew = TimeSpan.Zero }; }); services.AddAuthorization(config => { config.AddPolicy(Policies.AirlineAdmin, Policies.AirlineAdminPolicy()); config.AddPolicy(Policies.User, Policies.UserPolicy()); config.AddPolicy(Policies.RentACarAdmin, Policies.RentACarAdminPolicy()); config.AddPolicy(Policies.Admin, Policies.AdminPolicy()); }); //DI services services.AddScoped <ILoginService, LoginService>(); services.AddScoped <IFastFlightService, FastFlightService>(); services.AddScoped <IFriendRequestService, FriendRequestService>(); services.AddScoped <IGeneralUserService, GeneralUserService>(); services.AddScoped <IFastFlightRepository, FastFlightRepository>(); services.AddScoped <IFastFlightReservationService, FastFlightReservationService>(); services.AddScoped <IUserRepository, UserRepository>(); services.AddScoped <IAirlineAdminRepository, AirlineAdminRepository>(); services.AddScoped <IAirlineReservationRepository, AirlineReservationRepository>(); services.AddScoped <IAirlineRepository, AirlineRepository>(); services.AddScoped <IAirplaneRepository, AirplaneRepository>(); services.AddScoped <IFlightRepository, FlightRepository>(); services.AddScoped <IUnitOfWork, UnitOfWork>(); services.AddScoped <IAirlineService, AirlineService>(); services.AddScoped <IAirplaneService, AirplaneService>(); services.AddScoped <IAirlineAdminService, AirlineAdminService>(); services.AddScoped <IFlightService, FlightService>(); services.AddScoped <IUserService, UserService>(); services.AddScoped <IFriendsService, FriendsService>(); services.AddScoped <ISeatService, SeatService>(); services.AddScoped <IAirlineReservationService, AirlineReservationService>(); services.AddScoped <IAdminRepository, AdminRepository>(); //rent a car services.AddScoped <ICarRepository, CarRepository>(); services.AddScoped <IEnterpriseBranchRepository, EnterpriseBranchRepository>(); services.AddScoped <IEnterpriseRepository, EnterpriseRepository>(); services.AddScoped <IRentACarAdminRepository, RentACarAdminRepository>(); services.AddScoped <ISpecialOfferRepository, SpecialOfferRepository>(); services.AddScoped <IAdminService, AdminService>(); services.AddScoped <IBranchService, BranchService>(); services.AddScoped <ICarService, CarService>(); services.AddScoped <IEnterpriseService, EnterpriseService>(); services.AddScoped <ISpecialOfferService, SpecialOfferService>(); }