From 58a0d8df262d8b43423d54ffa1ea4f9fc2e6ec81 Mon Sep 17 00:00:00 2001 From: Thomas Staub <thomas.staub@gibb.ch> Date: Sun, 24 Dec 2023 05:33:18 +0100 Subject: [PATCH] Catalog --- Documentation/Doku.pptx | Bin 707866 -> 726966 bytes .../Play.Catalog.Contracts.csproj | 2 +- ...403973d2-6365-4395-b014-67b618407274.vsidx | Bin 28465 -> 0 bytes ...8b123d74-4851-498d-be35-af2b7c09290f.vsidx | Bin 0 -> 34204 bytes .../FileContentIndex/read.lock | 0 .../Play.Catalog.Service/v17/.futdcache.v2 | Bin 152 -> 321 bytes .../.vs/Play.Catalog.Service/v17/.suo | Bin 5120 -> 9728 bytes .../Controllers/ItemsController.cs | 42 +++--- .../src/Play.Catalog.Service/Program.cs | 132 +++++++++--------- .../src/Play.Catalog.Service/appsettings.json | 4 +- .../src/Play.Catalog.Service/nuget.config | 5 +- .../src/Play.Common/MongoDB/Extensions.cs | 6 +- .../Play.Common/MongoDB/MongoRepository.cs | 6 +- .../src/Play.Common/Play.Common.csproj | 2 +- .../Play.Identity.Service/appsettings.json | 4 +- 15 files changed, 98 insertions(+), 105 deletions(-) delete mode 100644 Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/403973d2-6365-4395-b014-67b618407274.vsidx create mode 100644 Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/8b123d74-4851-498d-be35-af2b7c09290f.vsidx delete mode 100644 Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/read.lock diff --git a/Documentation/Doku.pptx b/Documentation/Doku.pptx index 62eeca3bcf048e830c1a2674912a0829eb95020b..0395c9f9e1e8ff2483d03fa2ac264c24a43b8da7 100644 GIT binary patch delta 31422 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�~>) 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 JBBDWk{}227a_#^C delta 12609 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 diff --git a/Play.Catalog/src/Play.Catalog.Contracts/Play.Catalog.Contracts.csproj b/Play.Catalog/src/Play.Catalog.Contracts/Play.Catalog.Contracts.csproj index 6399150..f427ff0 100644 --- a/Play.Catalog/src/Play.Catalog.Contracts/Play.Catalog.Contracts.csproj +++ b/Play.Catalog/src/Play.Catalog.Contracts/Play.Catalog.Contracts.csproj @@ -3,7 +3,7 @@ <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <PackageDescription>Contracts supported by the Catalog microservice.</PackageDescription> - <Authors>Julio Casal</Authors> + <Authors>Thomas Staub</Authors> <Company>.NET Microservices</Company> </PropertyGroup> diff --git a/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/403973d2-6365-4395-b014-67b618407274.vsidx b/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/403973d2-6365-4395-b014-67b618407274.vsidx deleted file mode 100644 index c01f76a59509a4daaa9b8065ee9846f9ac32e83f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28465 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 VqdZ#ItKg4E`hv^xzi+nx{x21CWo7^X diff --git a/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/8b123d74-4851-498d-be35-af2b7c09290f.vsidx b/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/8b123d74-4851-498d-be35-af2b7c09290f.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..b11ffeaaef22ce45116e9a39348ba42d205cf597 GIT binary patch literal 34204 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 literal 0 HcmV?d00001 diff --git a/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/read.lock b/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/FileContentIndex/read.lock deleted file mode 100644 index e69de29..0000000 diff --git a/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/v17/.futdcache.v2 b/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/v17/.futdcache.v2 index 6edc0ee0a676f891ecc9d31ad9017ab1ff5d3719..4ea848f2a54a07212e55279c7639b223bc72f60e 100644 GIT binary patch delta 77 zcmbQic#w&aX(Hov?Hp&Tn2^-mf|%UQ<f8oI)S|M?<kaH$^vt9rR3Tl%iBef2N7Lu| HFrWbd4=@(f delta 9 QcmX@eG=q_maU$b%01agVhyVZp diff --git a/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/v17/.suo b/Play.Catalog/src/Play.Catalog.Service/.vs/Play.Catalog.Service/v17/.suo index 59de00bf4136fc8198d015d1ceecf2778d39cd9b..45a1b227fdb40bc23b68a8f003da6778c121b82e 100644 GIT binary patch literal 9728 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 J-{ijk{SAA%8Ik}1 delta 372 zcmZqhY0#KpAj`x61p*8VEI=kB5dZuC|365Sd9x$OX2wZOK8#G0FET0cwun7S?Y+s! z4wPzOm|Vr=IoVmrbn*`-A0Ch{W*`P?{6D#oS7UMov-f0YUc*UzEWAKrFaVkQcVeLM zBrcZ8GAtaMeOR_IPE62%7_Z1A&u0+h3O1husQduPd@ml5c_3GT=*fZ1Dw8BwaM;H_ zL4*~k@Gnpy$RZF1fz1vq2Y|My04-(wx7m?pKagWHNvML6XR@HU_v9nIHj@>^U65#p z%`Pl^fQlR#8G#<L7kKmRn0~sRo3L}o*LAXUnEwH_y$5PJI8ldpaxbs301wboey|G} O7{Kz4yau>5H39%WyMbQ- diff --git a/Play.Catalog/src/Play.Catalog.Service/Controllers/ItemsController.cs b/Play.Catalog/src/Play.Catalog.Service/Controllers/ItemsController.cs index dd157ab..421644a 100644 --- a/Play.Catalog/src/Play.Catalog.Service/Controllers/ItemsController.cs +++ b/Play.Catalog/src/Play.Catalog.Service/Controllers/ItemsController.cs @@ -12,16 +12,16 @@ using Play.Common; namespace Play.Catalog.Service.Controllers { - [ApiController] - [Route("items")] - public class ItemsController : ControllerBase + [ApiController] //The ApiController attribute enables a series of features that improve your REST api developer experience like having model validation errors automatically return a 400 Bad Request error or how to bind incoming requests into our method parameters. + [Route("items")] //The Route attribute specifies the URL pattern that this controller will map to. For instance, if we use “items†here, it means that this controller will handle routes that start with /items, like https://localhost:5001/items + public class ItemsController : ControllerBase //ControllerBase provides many properties and methods useful when handling HTTP requests, like the BadRequest, NotFound and CreatedAtAction methods { private const string AdminRole = "Admin"; - private readonly IRepository<Item> itemsRepository; - private readonly IPublishEndpoint publishEndpoint; + private readonly IRepository<Item> itemsRepository; //We are using the IRepository<T> interface to access the database see Play.Common/src/Play.Common/IRepository.cs + private readonly IPublishEndpoint publishEndpoint; //We are using the IPublishEndpoint interface to publish messages to the message broker see Play.Common/src/Play.Common/MassTransit/IMassTransitPublisher.cs - public ItemsController(IRepository<Item> itemsRepository, IPublishEndpoint publishEndpoint) + public ItemsController(IRepository<Item> itemsRepository, IPublishEndpoint publishEndpoint) //We are using dependency injection to get the repository and the publish endpoint { this.itemsRepository = itemsRepository; this.publishEndpoint = publishEndpoint; @@ -29,35 +29,35 @@ namespace Play.Catalog.Service.Controllers [HttpGet] [Authorize(Policies.Read)] - public async Task<ActionResult<IEnumerable<ItemDto>>> GetAsync() + public async Task<ActionResult<IEnumerable<ItemDto>>> GetAsync() //The ActionResult<T> type is a wrapper around the HTTP response that allows us to return a 200 OK with the items as the response body { var items = (await itemsRepository.GetAllAsync()) - .Select(item => item.AsDto()); + .Select(item => item.AsDto()); //We are using the AsDto extension method to convert the Item entity into an ItemDto - return Ok(items); + return Ok(items); // Ok is a method from ControllerBase that returns a 200 OK with the items as the response body } // GET /items/{id} [HttpGet("{id}")] [Authorize(Policies.Read)] - public async Task<ActionResult<ItemDto>> GetByIdAsync(Guid id) + public async Task<ActionResult<ItemDto>> GetByIdAsync(Guid id) //Because we are using the ApiController attribute, we can use the ActionResult<T> type, which will automatically return a 404 Not Found if the item is not found { var item = await itemsRepository.GetAsync(id); - if (item == null) + if (item == null) //If we don’t use the ApiController attribute, we would have to manually check if the item is null and return a 404 Not Found { - return NotFound(); + return NotFound(); // NotFound is a method from ControllerBase that returns a 404 Not Found } - return item.AsDto(); + return item.AsDto(); //We are using the AsDto extension method to convert the Item entity into an ItemDto } // POST /items [HttpPost] - [Authorize(Policies.Write)] + [Authorize(Policies.Write)] //We are using the Authorize attribute to specify that only users with the Admin role can access this endpoint public async Task<ActionResult<ItemDto>> PostAsync(CreateItemDto createItemDto) { - var item = new Item + var item = new Item //We are creating a new Item entity from the CreateItemDto { Name = createItemDto.Name, Description = createItemDto.Description, @@ -65,15 +65,15 @@ namespace Play.Catalog.Service.Controllers CreatedDate = DateTimeOffset.UtcNow }; - await itemsRepository.CreateAsync(item); + await itemsRepository.CreateAsync(item); //We are using the repository to create the item await publishEndpoint.Publish(new CatalogItemCreated( item.Id, item.Name, item.Description, - item.Price)); + item.Price)); //We are publishing the CatalogItemCreated event - return CreatedAtAction(nameof(GetByIdAsync), new { id = item.Id }, item); + return CreatedAtAction(nameof(GetByIdAsync), new { id = item.Id }, item); //We are returning a 201 Created with the item as the response body } // PUT /items/{id} @@ -81,7 +81,7 @@ namespace Play.Catalog.Service.Controllers [Authorize(Policies.Write)] public async Task<IActionResult> PutAsync(Guid id, UpdateItemDto updateItemDto) { - var existingItem = await itemsRepository.GetAsync(id); + var existingItem = await itemsRepository.GetAsync(id); //We are using the repository to get the item by id if (existingItem == null) { @@ -92,7 +92,7 @@ namespace Play.Catalog.Service.Controllers existingItem.Description = updateItemDto.Description; existingItem.Price = updateItemDto.Price; - await itemsRepository.UpdateAsync(existingItem); + await itemsRepository.UpdateAsync(existingItem); // await publishEndpoint.Publish(new CatalogItemUpdated( existingItem.Id, @@ -100,7 +100,7 @@ namespace Play.Catalog.Service.Controllers existingItem.Description, existingItem.Price)); - return NoContent(); + return NoContent(); //We are returning a 204 No Content } // DELETE /items/{id} diff --git a/Play.Catalog/src/Play.Catalog.Service/Program.cs b/Play.Catalog/src/Play.Catalog.Service/Program.cs index 9eeda95..0717fb2 100644 --- a/Play.Catalog/src/Play.Catalog.Service/Program.cs +++ b/Play.Catalog/src/Play.Catalog.Service/Program.cs @@ -18,112 +18,107 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Http; - - namespace Play.Catalog.Service { public class Program { public static void Main(string[] args) { - CreateHostBuilder(args).Build().Run(); + CreateHostBuilder(args).Build().Run(); //We are using the CreateHostBuilder method to create the host and run the app } - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - - .ConfigureWebHostDefaults(webBuilder => + public static IHostBuilder CreateHostBuilder(string[] args) => //We are using the CreateHostBuilder method to create the host and run the app + Host.CreateDefaultBuilder(args) // + .ConfigureWebHostDefaults(webBuilder => //We are using the ConfigureWebHostDefaults method to configure the web host { - webBuilder.UseStartup<Program>(); + webBuilder.UseStartup<Program>(); //We are using the UseStartup method to specify the startup class }); - private ServiceSettings serviceSettings; + private ServiceSettings serviceSettings; //We are using the ServiceSettings class to store the service settings see Play.Common/src/Play.Common/Settings/ServiceSettings.cs - public Program(IConfiguration configuration) + // Configuration of the services defined in the ConfigureServices method, allowing us to pass values as parameters + public Program(IConfiguration configuration) //We are using dependency injection to get the configuration see Play.Common/src/Play.Common/Settings/ServiceSettings.cs { - Configuration = configuration; + Configuration = configuration; //We are using the Configuration property to store the 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) + public void ConfigureServices(IServiceCollection services) { //Remove for real Production IdentityModelEventSource.ShowPII = true; - - - - serviceSettings = Configuration.GetSection(nameof(ServiceSettings)).Get<ServiceSettings>(); - - services.AddMongo() - .AddMongoRepository<Item>("items") - .AddMassTransitWithMessageBroker(Configuration) - .AddJwtBearerAuthentication(); - - services.AddAuthorization(options => + //retrieves the values from appsettings.json + serviceSettings = Configuration.GetSection(nameof(ServiceSettings)).Get<ServiceSettings>(); //We are using dependency injection to get the ServiceSettings see Play.Common/src/Play.Common/Settings/ServiceSettings.cs + + services.AddMongo() //Brings the MongoDB into the app + .AddMongoRepository<Item>("items") //Brings the MongoDB Repository into the app see Play.Common/src/Play.Common/MongoDB/Extensions.cs + .AddMassTransitWithMessageBroker(Configuration) //Brings the MassTransit into the app see Play.Common/src/Play.Common/MassTransit/Extensions.cs + .AddJwtBearerAuthentication(); //Brings the JwtBearerAuthentication into the app see Play.Common/src/Play.Common/Identity/Extensions.cs + + services.AddAuthorization(options => //Brings the Authorization into the app see Play.Common/src/Play.Common/Identity/Extensions.cs { - options.AddPolicy(Policies.Read, policy => + options.AddPolicy(Policies.Read, policy => //We are using the AddPolicy method to add the Read policy { - policy.RequireRole("Admin"); - policy.RequireClaim("scope", "catalog.readaccess", "catalog.fullaccess"); + policy.RequireRole("Admin"); //We are using the RequireRole method to specify that only users with the Admin role can access this policy + policy.RequireClaim("scope", "catalog.readaccess", "catalog.fullaccess"); //We are using the RequireClaim method to specify that the user must have the catalog.readaccess or catalog.fullaccess scope }); - options.AddPolicy(Policies.Write, policy => + options.AddPolicy(Policies.Write, policy => //We are using the AddPolicy method to add the Write policy { - policy.RequireRole("Admin"); - policy.RequireClaim("scope", "catalog.writeaccess", "catalog.fullaccess"); + policy.RequireRole("Admin"); //We are using the RequireRole method to specify that only users with the Admin role can access this policy + policy.RequireClaim("scope", "catalog.writeaccess", "catalog.fullaccess"); //We are using the RequireClaim method to specify that the user must have the catalog.writeaccess or catalog.fullaccess scope }); - + }); - services.AddControllers(options => + services.AddControllers(options => //Brings the Controllers into the app { - options.SuppressAsyncSuffixInActionNames = false; + options.SuppressAsyncSuffixInActionNames = false; //We are using the SuppressAsyncSuffixInActionNames property to disable the async suffix in the controller actions }); - + //Swagger for the API services.AddSwaggerGen(options => { - var scheme = new OpenApiSecurityScheme + var scheme = new OpenApiSecurityScheme //We are using the OpenApiSecurityScheme to configure the OAuth2 authentication { - In = ParameterLocation.Header, - Name = "Authorization", - Flows = new OpenApiOAuthFlows + In = ParameterLocation.Header, //We are using the In property to specify that the token will be passed in the header + Name = "Authorization", //We are using the Name property to specify that the header name will be Authorization + Flows = new OpenApiOAuthFlows //We are using the Flows property to specify the OAuth2 flows { - AuthorizationCode = new OpenApiOAuthFlow + AuthorizationCode = new OpenApiOAuthFlow //We are using the AuthorizationCode property to specify the Authorization Code flow { - AuthorizationUrl = new Uri(Configuration.GetSection("Auth:Swagger:AuthorizationUrl").Get<string>()), - TokenUrl = new Uri(Configuration.GetSection("Auth:Swagger:TokenUrl").Get<string>()) + AuthorizationUrl = new Uri(Configuration.GetSection("Auth:Swagger:AuthorizationUrl").Get<string>()), //We are using the AuthorizationUrl property to specify the authorization URL + TokenUrl = new Uri(Configuration.GetSection("Auth:Swagger:TokenUrl").Get<string>()) //We are using the TokenUrl property to specify the token URL } }, - Type = SecuritySchemeType.OAuth2 + Type = SecuritySchemeType.OAuth2 //We are using the Type property to specify that the type of the security scheme is OAuth2 }; - options.AddSecurityDefinition("OAuth", scheme); + options.AddSecurityDefinition("OAuth", scheme); //We are using the AddSecurityDefinition method to add the OAuth2 security scheme - options.AddSecurityRequirement(new OpenApiSecurityRequirement + options.AddSecurityRequirement(new OpenApiSecurityRequirement //We are using the AddSecurityRequirement method to add the security requirements { { new OpenApiSecurityScheme { - Reference = new OpenApiReference { Id = "OAuth", Type = ReferenceType.SecurityScheme } + Reference = new OpenApiReference { Id = "OAuth", Type = ReferenceType.SecurityScheme } //We are using the Reference property to specify the reference to the OAuth2 security scheme }, - new List<string> { } + new List<string> { } //We are using the List<string> to specify the scopes } }); }); - - - - + + //Brings the HealthChecks into the app services.AddHealthChecks() .AddMongoDb(); - + //Brings the Metric into the app + //Brings the OpenTelemetry into the app services.AddSeqLogging(Configuration) .AddTracing(Configuration) .AddMetrics(Configuration); @@ -132,52 +127,53 @@ namespace Play.Catalog.Service // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { - //Remove || env.IsProduction() for real Production. Made vor Docker + //Remove || env.IsProduction() for real Production. Made vor Docker otherwise troubleshooting in Docker for Learning is difficult if (env.IsDevelopment() || env.IsProduction()) { - app.UseDeveloperExceptionPage(); - app.UseSwagger() - .UseSwaggerUI(options => + + app.UseDeveloperExceptionPage(); //We are using the UseDeveloperExceptionPage method to show the developer exception page that contains the exception details + app.UseSwagger() //We are using the UseSwagger method to enable the Swagger middleware to show the Swagger UI + .UseSwaggerUI(options => { - options.OAuthClientId("api-swagger"); + options.OAuthClientId("api-swagger"); //We are using the OAuthClientId method to specify the client ID options.OAuthScopes("profile", "openid", "catalog.fullaccess", "catalog.readaccess", "catalog.writeaccess", "inventory.fullaccess", "trading.fullaccess", "IdentityServerApi", - "roles"); - options.OAuthUsePkce(); - options.OAuth2RedirectUrl("http://host.docker.internal:5002/swagger/oauth2-redirect.html"); + "roles"); //We are using the OAuthScopes method to specify the scopes + options.OAuthUsePkce(); //We are using the OAuthUsePkce method to enable the PKCE flow that is required by IdentityServer because we are using the Authorization Code flow + options.OAuth2RedirectUrl("http://host.docker.internal:5002/swagger/oauth2-redirect.html"); //We are using the OAuth2RedirectUrl method to specify the redirect URL that will be used by the Swagger UI options.EnablePersistAuthorization(); //options.InjectStylesheet("/content/swagger-extras.css"); }); - + // allows access to the API from other domains app.UseCors(builder => { var allowedOrigins = Configuration.GetSection("AllowedOrigins").Get<string[]>(); - builder.WithOrigins(allowedOrigins) - .AllowAnyHeader() - .AllowAnyMethod(); + builder.WithOrigins(allowedOrigins) //allows access to the API from other domains + .AllowAnyHeader() + .AllowAnyMethod(); // }); } - //app.UseHttpsRedirection(); + //app.UseHttpsRedirection(); // Removed because in microservices we are in a private network and we don't need https redirection it makes the app slower app.UseOpenTelemetryPrometheusScrapingEndpoint(); - app.UseRouting(); + app.UseRouting(); //Routing is used to route the request to the correct controller - app.UseAuthentication(); - app.UseAuthorization(); + app.UseAuthentication(); //Authentication is used to authenticate the user + app.UseAuthorization(); //Authorization is used to authorize the user app.UseEndpoints(endpoints => { - endpoints.MapControllers(); - endpoints.MapPlayEconomyHealthChecks(); + endpoints.MapControllers(); //MapControllers is used to map the controllers + endpoints.MapPlayEconomyHealthChecks(); //MapPlayEconomyHealthChecks is used to map the health checks }); } diff --git a/Play.Catalog/src/Play.Catalog.Service/appsettings.json b/Play.Catalog/src/Play.Catalog.Service/appsettings.json index 800cbdf..283e9bf 100644 --- a/Play.Catalog/src/Play.Catalog.Service/appsettings.json +++ b/Play.Catalog/src/Play.Catalog.Service/appsettings.json @@ -1,7 +1,7 @@ { "Logging": { "LogLevel": { - "Default": "Information", + "Default": "Debug", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } @@ -34,6 +34,6 @@ } }, "AllowedHosts": "*", - "AllowedOrigins": ["http://host.docker.internal:3000","http://host.docker.internal:5000","http://host.docker.internal:5008"] + "AllowedOrigins": ["http://host.docker.internal:3000","http://host.docker.internal:5000","http://host.docker.internal:5008","localhost"] } \ No newline at end of file diff --git a/Play.Catalog/src/Play.Catalog.Service/nuget.config b/Play.Catalog/src/Play.Catalog.Service/nuget.config index 317aade..2af2dbb 100644 --- a/Play.Catalog/src/Play.Catalog.Service/nuget.config +++ b/Play.Catalog/src/Play.Catalog.Service/nuget.config @@ -2,12 +2,9 @@ <configuration> <packageSources> <clear /> -<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> - +<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="Play.Common" value="https://git.gibb.ch/api/v4/projects/5940/packages/nuget/index.json" /> </packageSources> - - </configuration> \ No newline at end of file diff --git a/Play.Common/src/Play.Common/MongoDB/Extensions.cs b/Play.Common/src/Play.Common/MongoDB/Extensions.cs index aa52bf5..14a3e36 100644 --- a/Play.Common/src/Play.Common/MongoDB/Extensions.cs +++ b/Play.Common/src/Play.Common/MongoDB/Extensions.cs @@ -10,10 +10,10 @@ namespace Play.Common.MongoDB { public static class Extensions { - public static IServiceCollection AddMongo(this IServiceCollection services) + public static IServiceCollection AddMongo(this IServiceCollection services) //We are using dependency injection to get the database and the collection name { - BsonSerializer.RegisterSerializer(new GuidSerializer(BsonType.String)); - BsonSerializer.RegisterSerializer(new DateTimeOffsetSerializer(BsonType.String)); + BsonSerializer.RegisterSerializer(new GuidSerializer(BsonType.String)); //We are registering the GuidSerializer to serialize the Guid as a string instead of an object + BsonSerializer.RegisterSerializer(new DateTimeOffsetSerializer(BsonType.String)); //We are registering the DateTimeOffsetSerializer to serialize the DateTimeOffset as a string instead of an object services.AddSingleton(serviceProvider => { diff --git a/Play.Common/src/Play.Common/MongoDB/MongoRepository.cs b/Play.Common/src/Play.Common/MongoDB/MongoRepository.cs index 6e91c2c..1082117 100644 --- a/Play.Common/src/Play.Common/MongoDB/MongoRepository.cs +++ b/Play.Common/src/Play.Common/MongoDB/MongoRepository.cs @@ -7,12 +7,12 @@ using MongoDB.Driver; namespace Play.Common.MongoDB { - public class MongoRepository<T> : IRepository<T> where T : IEntity + public class MongoRepository<T> : IRepository<T> where T : IEntity //We are using the IRepository<T> interface to access the database see Play.Common/src/Play.Common/IRepository.cs { - private readonly IMongoCollection<T> dbCollection; + private readonly IMongoCollection<T> dbCollection; //We are using the IMongoCollection<T> interface to access the database private readonly FilterDefinitionBuilder<T> filterBuilder = Builders<T>.Filter; - public MongoRepository(IMongoDatabase database, string collectionName) + public MongoRepository(IMongoDatabase database, string collectionName) //We are using dependency injection to get the database and the collection name see Play.Common/src/Play.Common/MongoDB/Extensions.cs { dbCollection = database.GetCollection<T>(collectionName); } diff --git a/Play.Common/src/Play.Common/Play.Common.csproj b/Play.Common/src/Play.Common/Play.Common.csproj index d4f819d..2cb8e85 100644 --- a/Play.Common/src/Play.Common/Play.Common.csproj +++ b/Play.Common/src/Play.Common/Play.Common.csproj @@ -3,7 +3,7 @@ <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <PackageDescription>Common libraries used by Play Economy services.</PackageDescription> - <Authors>Julio Casal</Authors> + <Authors>Thomas Staub</Authors> <Company>.NET Microservices</Company> </PropertyGroup> diff --git a/Play.Identity/src/Play.Identity.Service/appsettings.json b/Play.Identity/src/Play.Identity.Service/appsettings.json index 76623c0..8ca6e65 100644 --- a/Play.Identity/src/Play.Identity.Service/appsettings.json +++ b/Play.Identity/src/Play.Identity.Service/appsettings.json @@ -149,7 +149,7 @@ "PostLogoutRedirectUris":[ "http://host.docker.internal:5008/" ], - "AllowedCorsOrigins" : ["http://host.docker.internal:5009","http://host.docker.internal:5008" ] + "AllowedCorsOrigins" : ["http://host.docker.internal:5009","http://host.docker.internal:5008"] }, { @@ -175,7 +175,7 @@ "roles" ], - "AllowedCorsOrigins" : ["http://host.docker.internal:5009","http://host.docker.internal:5008","http://host.docker.internal:5002","http://host.docker.internal:5004","http://host.docker.internal:5006" ], + "AllowedCorsOrigins" : ["http://host.docker.internal:5009","http://host.docker.internal:5008","http://host.docker.internal:5002","http://host.docker.internal:5004","http://host.docker.internal:5006","http://host.docker.internal:5000" ], "AlwaysIncludeUserClaimsInIdToken" : true }, -- GitLab