Exemple #1
0
        // 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>();
        }