diff --git a/Controllers/CollaborateursApi.cs b/Controllers/CollaborateursApi.cs index 29a4dbe..c727c50 100644 --- a/Controllers/CollaborateursApi.cs +++ b/Controllers/CollaborateursApi.cs @@ -24,6 +24,7 @@ using EPAServeur.Exceptions; using IO.Swagger.ClientCollaborateur; using Microsoft.AspNetCore.Server.Kestrel.Core; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authentication.JwtBearer; namespace IO.Swagger.Controllers { @@ -50,7 +51,7 @@ namespace IO.Swagger.Controllers /// Ressource n'a pas été trouvée [HttpGet] [Route("/api/collaborateurs/{idCollaborateur}")] - //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] + //[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH,Assistante,Commercial")] [ValidateModelState] [SwaggerOperation("GetCollaborateurById")] [SwaggerResponse(statusCode: 200, type: typeof(CollaborateurDTO), description: "OK")] @@ -72,7 +73,7 @@ namespace IO.Swagger.Controllers } catch (CollaborateurNotFoundException) { - logger.LogError("Le ccollaborateur {id} est introuvable", idCollaborateur); + logger.LogError("Le collaborateur {id} est introuvable", idCollaborateur); ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", @@ -98,7 +99,7 @@ namespace IO.Swagger.Controllers /// Ressource n'a pas été trouvée [HttpGet] [Route("/api/collaborateurs/mail/{mail}")] - //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] + //[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH,Assistante,Commercial")] [ValidateModelState] [SwaggerOperation("GetCollaborateurByMail")] [SwaggerResponse(statusCode: 200, type: typeof(CollaborateurDTO), description: "OK")] @@ -116,7 +117,7 @@ namespace IO.Swagger.Controllers } catch (CollaborateurNotFoundException) { - logger.LogError("Le ccollaborateur {mail} est introuvable", mail); + logger.LogError("Le collaborateur {mail} est introuvable", mail); ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", @@ -152,7 +153,7 @@ namespace IO.Swagger.Controllers /// Acces interdit [HttpGet] [Route("/api/collaborateurs")] - //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH,Assistante,Commercial")] [ValidateModelState] [SwaggerOperation("GetCollaborateurs")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")] @@ -195,7 +196,7 @@ namespace IO.Swagger.Controllers /// Ressource n'a pas été trouvée [HttpGet] [Route("/api/collaborateurs/referent/{idReferent}")] - //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] + //[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH,Assistante,Commercial")] [ValidateModelState] [SwaggerOperation("GetCollaborateursByReferent")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")] @@ -242,7 +243,7 @@ namespace IO.Swagger.Controllers /// Ressource n'a pas été trouvée [HttpGet] [Route("/api/collaborateurs/profil/{mail}/")] - //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] + //[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH,Assistante,Commercial")] [ValidateModelState] [SwaggerOperation("GetProfilCollaborateurByMail")] [SwaggerResponse(statusCode: 200, type: typeof(ProfilDTO), description: "OK")] diff --git a/EPAServeur.csproj b/EPAServeur.csproj index 5900bca..b88d2f0 100644 --- a/EPAServeur.csproj +++ b/EPAServeur.csproj @@ -6,6 +6,7 @@ + diff --git a/Services/EngagementService.cs b/Services/EngagementService.cs index cab7c58..cb9c4a9 100644 --- a/Services/EngagementService.cs +++ b/Services/EngagementService.cs @@ -54,9 +54,9 @@ namespace EPAServeur.Services int take = parPAge.Value; if (idAgence != null) - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence).Skip(skip).Take(take); else - engagements = epContext.Engagement.Include(engagement => engagement.Ep); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Skip(skip).Take(take); if (engagements == null || engagements.Count() == 0) return new List(); @@ -79,9 +79,9 @@ namespace EPAServeur.Services int take = parPAge.Value; if (idAgence != null) - engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence).ToListAsync(); + engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence).Skip(skip).Take(take).ToListAsync(); else - engagements = await epContext.Engagement.Include(engagement => engagement.Ep).ToListAsync(); + engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Skip(skip).Take(take).ToListAsync(); if (engagements == null || engagements.Count() == 0) return new List(); @@ -105,9 +105,9 @@ namespace EPAServeur.Services int take = parPAge.Value; if (idAgence != null) - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Realise == null).ToList(); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Realise == null).Skip(skip).Take(take).ToList(); else - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise == null).ToList(); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise == null).Skip(skip).Take(take).ToList(); if (engagements == null || engagements.Count() == 0) return new List(); @@ -130,9 +130,9 @@ namespace EPAServeur.Services int take = parPAge.Value; if (idAgence != null) - engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Realise == null).ToListAsync(); + engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Realise == null).Skip(skip).Take(take).ToListAsync(); else - engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise == null).ToListAsync(); + engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise == null).Skip(skip).Take(take).ToListAsync(); if (engagements == null || engagements.Count() == 0) return new List(); @@ -156,9 +156,9 @@ namespace EPAServeur.Services int take = parPAge.Value; if (idAgence != null) - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Modalite.ToLower().Contains(texte)); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Modalite.ToLower().Contains(texte)).Skip(skip).Take(take); else - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise != null && engagement.Modalite.ToLower().Contains(texte)); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise != null && engagement.Modalite.ToLower().Contains(texte)).Skip(skip).Take(take); if (engagements == null || engagements.Count() == 0) return new List(); @@ -181,9 +181,9 @@ namespace EPAServeur.Services int take = parPAge.Value; if (idAgence != null) - engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Modalite.ToLower().Contains(texte)).ToListAsync(); + engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Modalite.ToLower().Contains(texte)).Skip(skip).Take(take).ToListAsync(); else - engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise != null && engagement.Modalite.ToLower().Contains(texte)).ToListAsync(); + engagements = await epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise != null && engagement.Modalite.ToLower().Contains(texte)).Skip(skip).Take(take).ToListAsync(); if (engagements == null || engagements.Count() == 0) return new List(); diff --git a/Services/FormationService.cs b/Services/FormationService.cs index f164303..67c4c95 100644 --- a/Services/FormationService.cs +++ b/Services/FormationService.cs @@ -102,7 +102,7 @@ namespace EPAServeur.Services .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) .Include(formation => formation.TypeFormation) - .Where(formation => formation.Statut.Id == statutFormation && formation.IdAgence == idAgence); + .Where(formation => formation.Statut.Id == statutFormation && formation.IdAgence == idAgence).Skip(skip).Take(take); } else if (statutFormation != null && idAgence == null) { @@ -111,7 +111,7 @@ namespace EPAServeur.Services .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) .Include(formation => formation.TypeFormation) - .Where(formation => formation.Statut.Id == statutFormation); + .Where(formation => formation.Statut.Id == statutFormation).Skip(skip).Take(take); } else if (idAgence != null) { @@ -119,14 +119,14 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take); } else { formations = epContext.Formation.Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take); } @@ -168,7 +168,7 @@ namespace EPAServeur.Services .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) .Include(formation => formation.TypeFormation) - .Where(formation => formation.Statut.Id == statutFormation && formation.IdAgence == idAgence).ToListAsync(); + .Where(formation => formation.Statut.Id == statutFormation && formation.IdAgence == idAgence).Skip(skip).Take(take).ToListAsync(); } else if (statutFormation != null && idAgence == null) { @@ -177,7 +177,7 @@ namespace EPAServeur.Services .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) .Include(formation => formation.TypeFormation) - .Where(formation => formation.Statut.Id == statutFormation).ToListAsync(); + .Where(formation => formation.Statut.Id == statutFormation).Skip(skip).Take(take).ToListAsync(); } else if (idAgence != null) { @@ -186,7 +186,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation).Where(formation => formation.IdAgence == idAgence).ToListAsync(); + .Include(formation => formation.TypeFormation).Where(formation => formation.IdAgence == idAgence).Skip(skip).Take(take).ToListAsync(); } else @@ -195,7 +195,7 @@ namespace EPAServeur.Services formations = await epContext.Formation.Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation).ToListAsync(); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take).ToListAsync(); } @@ -236,13 +236,13 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take); else formations = epContext.Formation.Where(formation => formation.Statut.Id == 4) .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take); if (formations == null) return null; @@ -280,13 +280,13 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation).ToListAsync(); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take).ToListAsync(); else formations = await epContext.Formation.Where(formation => formation.Statut.Id == 4) .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation).ToListAsync(); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take).ToListAsync(); if (formations == null) return null; @@ -326,7 +326,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take); } else @@ -336,7 +336,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take); } @@ -379,7 +379,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation).ToListAsync(); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take).ToListAsync(); } else @@ -389,7 +389,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation).ToListAsync(); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take).ToListAsync(); } @@ -430,7 +430,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take); } else @@ -439,7 +439,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take); } if (formations == null) @@ -479,7 +479,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation).ToListAsync(); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take).ToListAsync(); } @@ -489,7 +489,7 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation).ToListAsync(); + .Include(formation => formation.TypeFormation).Skip(skip).Take(take).ToListAsync(); } if (formations == null) diff --git a/Startup.cs b/Startup.cs index 8d79041..2efbb17 100644 --- a/Startup.cs +++ b/Startup.cs @@ -2,10 +2,10 @@ using EPAServeur.Context; using EPAServeur.IServices; using EPAServeur.Services; using IO.Swagger.ApiCollaborateur; -using IO.Swagger.Security; -using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -14,82 +14,129 @@ using System.IO; namespace EPAServeur { - public class Startup - { - - readonly string AllowCrossClientEPA = "_AllowsCrossOriginClientEPA"; - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddCors(options => - { - options.AddPolicy(name: AllowCrossClientEPA, - builder => - { - builder.WithOrigins("http://localhost:4200").AllowAnyHeader().AllowAnyMethod(); - }); - }); - - services.AddControllers(); - services.AddAuthentication(BearerAuthenticationHandler.SchemeName) - .AddScheme(BearerAuthenticationHandler.SchemeName, null); - - services.AddDbContext(); - using(var context = new EpContext()) - { - context.Database.EnsureDeleted(); //PENSEZ A ENLEVER CETTE LIGNE ET A NE JAMAIS LA REMETTRE QUAND LE SERVEUR SERA MIS EN PRODUCTION ^^ - context.Database.EnsureCreated(); - context.SaveChanges(); - context.AjoutInformationsDeBase(); - context.AjoutChamps(); - context.AjouterNotes(); - } - //faire using, check si kekchoz exkist puis appeler les m�thodes de cr�ation si il n'y a rien - - //API Collaborateurs - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - - - - //Services - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory logger) - { - string path = Directory.GetCurrentDirectory(); - logger.AddFile(path+"Log/loggerfile-{Date}.txt"); - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - - app.UseHttpsRedirection(); - - app.UseRouting(); - - app.UseCors(AllowCrossClientEPA); - - app.UseAuthorization(); - - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } + public class Startup + { + readonly string AllowCrossClientEPA = "_AllowsCrossOriginClientEPA"; + + public Startup(IConfiguration configuration, IWebHostEnvironment env) + { + Configuration = configuration; + Environment = env; + } + + public IConfiguration Configuration { get; } + public IWebHostEnvironment Environment { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddCors(options => + { + options.AddPolicy(name: AllowCrossClientEPA, + builder => + { + builder.WithOrigins("http://localhost:4200").AllowAnyHeader().AllowAnyMethod(); + }); + }); + + services.AddControllers(); + + services.AddAuthentication(options => + { + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }).AddJwtBearer(o => + { + o.Authority = Configuration["Jwt:Authority"]; + o.Audience = Configuration["Jwt:Audience"]; + + if (Environment.IsDevelopment()) + { + o.RequireHttpsMetadata = false; + } + + o.Events = new JwtBearerEvents() + { + OnAuthenticationFailed = c => + { + c.NoResult(); + + c.Response.StatusCode = 500; + c.Response.ContentType = "text/plain"; + + if (Environment.IsDevelopment()) + { + return c.Response.WriteAsync(c.Exception.ToString()); + } + + return c.Response.WriteAsync("Une erreur s'est produite lors du processus d'authentification."); + }, + OnForbidden = c => + { + c.NoResult(); + + c.Response.StatusCode = 403; + c.Response.ContentType = "text/plain"; + + return c.Response.WriteAsync("L'utilisateur n'est pas autorisé à accéder à cette ressource."); + } + }; + }); + + services.AddDbContext(); + using (var context = new EpContext()) + { + context.Database.EnsureDeleted(); //PENSEZ A ENLEVER CETTE LIGNE ET A NE JAMAIS LA REMETTRE QUAND LE SERVEUR SERA MIS EN PRODUCTION ^^ + context.Database.EnsureCreated(); + context.SaveChanges(); + context.AjoutInformationsDeBase(); + context.AjoutChamps(); + context.AjouterNotes(); + } + //faire using, check si kekchoz exkist puis appeler les m�thodes de cr�ation si il n'y a rien + + //API Collaborateurs + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + + + + //Services + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory logger) + { + string path = Directory.GetCurrentDirectory(); + logger.AddFile(path + "Log/loggerfile-{Date}.txt"); + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseHttpsRedirection(); + + app.UseRouting(); + + app.UseCors(AllowCrossClientEPA); + + app.UseAuthentication(); + + app.UseAuthorization(); + + + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + + } + } } diff --git a/appsettings.json b/appsettings.json index d9d9a9b..aad810b 100644 --- a/appsettings.json +++ b/appsettings.json @@ -1,4 +1,8 @@ { + "Jwt": { + "Authority": "http://localhost:8080/auth/realms/Apside", + "Audience": "account" + }, "Logging": { "LogLevel": { "Default": "Information",