From e1f9ddd19278b7612448a4e91449feb511fe55a2 Mon Sep 17 00:00:00 2001 From: Shady Nagy Date: Sat, 25 Jul 2020 23:28:21 +0200 Subject: [PATCH 1/4] BlazorShared and Services (#430) * Service to Services * Change Shared project to BlazorShared * change refrerances to BlazorShared --- eShopOnWeb.sln | 12 ++++++------ src/ApplicationCore/ApplicationCore.csproj | 4 ++++ .../Constants/AuthorizationConstants.cs | 4 ---- src/BlazorAdmin/BlazorAdmin.csproj | 2 +- src/BlazorAdmin/Constants.cs | 5 ----- src/BlazorAdmin/CustomAuthStateProvider.cs | 2 +- src/BlazorAdmin/Pages/CatalogItemPage/Create.razor | 2 +- src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor | 6 +++--- .../Pages/CatalogItemPage/Details.razor | 4 ++-- src/BlazorAdmin/Pages/CatalogItemPage/Edit.razor | 2 +- src/BlazorAdmin/Pages/CatalogItemPage/List.razor | 8 ++++---- .../Pages/CatalogItemPage/List.razor.cs | 14 +++++++------- src/BlazorAdmin/Services/AuthService.cs | 2 +- .../List.CatalogBrand.cs | 2 +- .../List.CatalogBrandResult.cs | 2 +- .../List.cs | 2 +- .../CatalogItem.cs | 2 +- .../Create.CreateCatalogItemRequest.cs | 2 +- .../Create.CreateCatalogItemResult.cs | 2 +- .../Create.cs | 2 +- .../Delete.DeleteCatalogItemResult.cs | 2 +- .../Delete.cs | 2 +- .../Edit.EditCatalogItemResult.cs | 2 +- .../Edit.cs | 2 +- .../GetById.GetByIdCatalogItemResult.cs | 2 +- .../GetById.cs | 2 +- .../ListPaged.PagedCatalogItemResult.cs | 2 +- .../ListPaged.cs | 2 +- .../List.CatalogType.cs | 2 +- .../List.CatalogTypeResult.cs | 2 +- .../List.cs | 2 +- src/BlazorAdmin/Shared/MainLayout.razor | 2 +- src/BlazorAdmin/_Imports.razor | 6 +++--- .../Authorization/ClaimValue.cs | 2 +- src/BlazorShared/Authorization/Constants.cs | 14 ++++++++++++++ .../Authorization/UserInfo.cs | 2 +- src/BlazorShared/BlazorShared.csproj | 9 +++++++++ .../Identity/AppIdentityDbContextSeed.cs | 4 ++-- src/PublicApi/CatalogItemEndpoints/Create.cs | 2 +- src/PublicApi/CatalogItemEndpoints/Delete.cs | 2 +- src/PublicApi/CatalogItemEndpoints/Update.cs | 2 +- src/Shared/Shared.csproj | 7 ------- src/Web/Controllers/UserController.cs | 2 +- src/Web/Pages/Admin/EditCatalogItem.cshtml.cs | 2 +- src/Web/Pages/Admin/Index.cshtml.cs | 2 +- src/Web/Web.csproj | 2 +- 46 files changed, 87 insertions(+), 76 deletions(-) rename src/BlazorAdmin/Services/{CatalogBrandService => CatalogBrandServices}/List.CatalogBrand.cs (69%) rename src/BlazorAdmin/Services/{CatalogBrandService => CatalogBrandServices}/List.CatalogBrandResult.cs (77%) rename src/BlazorAdmin/Services/{CatalogBrandService => CatalogBrandServices}/List.cs (96%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/CatalogItem.cs (93%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/Create.CreateCatalogItemRequest.cs (93%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/Create.CreateCatalogItemResult.cs (81%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/Create.cs (95%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/Delete.DeleteCatalogItemResult.cs (67%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/Delete.cs (94%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/Edit.EditCatalogItemResult.cs (70%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/Edit.cs (95%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/GetById.GetByIdCatalogItemResult.cs (70%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/GetById.cs (94%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/ListPaged.PagedCatalogItemResult.cs (81%) rename src/BlazorAdmin/Services/{CatalogItemService => CatalogItemServices}/ListPaged.cs (94%) rename src/BlazorAdmin/Services/{CatalogTypeService => CatalogTypeServices}/List.CatalogType.cs (69%) rename src/BlazorAdmin/Services/{CatalogTypeService => CatalogTypeServices}/List.CatalogTypeResult.cs (77%) rename src/BlazorAdmin/Services/{CatalogTypeService => CatalogTypeServices}/List.cs (96%) rename src/{Shared => BlazorShared}/Authorization/ClaimValue.cs (90%) create mode 100644 src/BlazorShared/Authorization/Constants.cs rename src/{Shared => BlazorShared}/Authorization/UserInfo.cs (91%) create mode 100644 src/BlazorShared/BlazorShared.csproj delete mode 100644 src/Shared/Shared.csproj diff --git a/eShopOnWeb.sln b/eShopOnWeb.sln index 435595f..5742f2e 100755 --- a/eShopOnWeb.sln +++ b/eShopOnWeb.sln @@ -34,7 +34,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PublicApi", "src\PublicApi\ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorAdmin", "src\BlazorAdmin\BlazorAdmin.csproj", "{71368733-80A4-4869-B215-3A7001878577}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "src\Shared\Shared.csproj", "{7BDB419E-FAC1-4D43-8AA9-FB61EBE31BB8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorShared", "src\BlazorShared\BlazorShared.csproj", "{715CF7AF-A1EE-40A6-94A0-8DA3F3B2CAE9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -78,10 +78,10 @@ Global {71368733-80A4-4869-B215-3A7001878577}.Debug|Any CPU.Build.0 = Debug|Any CPU {71368733-80A4-4869-B215-3A7001878577}.Release|Any CPU.ActiveCfg = Release|Any CPU {71368733-80A4-4869-B215-3A7001878577}.Release|Any CPU.Build.0 = Release|Any CPU - {7BDB419E-FAC1-4D43-8AA9-FB61EBE31BB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7BDB419E-FAC1-4D43-8AA9-FB61EBE31BB8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7BDB419E-FAC1-4D43-8AA9-FB61EBE31BB8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7BDB419E-FAC1-4D43-8AA9-FB61EBE31BB8}.Release|Any CPU.Build.0 = Release|Any CPU + {715CF7AF-A1EE-40A6-94A0-8DA3F3B2CAE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {715CF7AF-A1EE-40A6-94A0-8DA3F3B2CAE9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {715CF7AF-A1EE-40A6-94A0-8DA3F3B2CAE9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {715CF7AF-A1EE-40A6-94A0-8DA3F3B2CAE9}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -95,7 +95,7 @@ Global {7EFB5482-F942-4C3D-94B0-9B70596E6D0A} = {15EA4737-125B-4E6E-A806-E13B7EBCDCCF} {B5E4F33C-4667-4A55-AF6A-740F84C4CF3A} = {419A6ACE-0419-4315-A6FB-B0E63D39432E} {71368733-80A4-4869-B215-3A7001878577} = {419A6ACE-0419-4315-A6FB-B0E63D39432E} - {7BDB419E-FAC1-4D43-8AA9-FB61EBE31BB8} = {419A6ACE-0419-4315-A6FB-B0E63D39432E} + {715CF7AF-A1EE-40A6-94A0-8DA3F3B2CAE9} = {419A6ACE-0419-4315-A6FB-B0E63D39432E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {49813262-5DA3-4D61-ABD3-493C74CE8C2B} diff --git a/src/ApplicationCore/ApplicationCore.csproj b/src/ApplicationCore/ApplicationCore.csproj index 8e8906c..11dff61 100644 --- a/src/ApplicationCore/ApplicationCore.csproj +++ b/src/ApplicationCore/ApplicationCore.csproj @@ -13,4 +13,8 @@ + + + + \ No newline at end of file diff --git a/src/ApplicationCore/Constants/AuthorizationConstants.cs b/src/ApplicationCore/Constants/AuthorizationConstants.cs index c2d14c8..6c48ff2 100644 --- a/src/ApplicationCore/Constants/AuthorizationConstants.cs +++ b/src/ApplicationCore/Constants/AuthorizationConstants.cs @@ -2,10 +2,6 @@ { public class AuthorizationConstants { - public static class Roles - { - public const string ADMINISTRATORS = "Administrators"; - } // TODO: Don't use this in production public const string DEFAULT_PASSWORD = "Pass@word1"; diff --git a/src/BlazorAdmin/BlazorAdmin.csproj b/src/BlazorAdmin/BlazorAdmin.csproj index 84a9a38..9867426 100644 --- a/src/BlazorAdmin/BlazorAdmin.csproj +++ b/src/BlazorAdmin/BlazorAdmin.csproj @@ -18,7 +18,7 @@ - + diff --git a/src/BlazorAdmin/Constants.cs b/src/BlazorAdmin/Constants.cs index ae930e5..0ff40f7 100644 --- a/src/BlazorAdmin/Constants.cs +++ b/src/BlazorAdmin/Constants.cs @@ -3,10 +3,5 @@ public class Constants { public const string API_URL = "https://localhost:5099/api/"; - - public static class Roles - { - public const string ADMINISTRATORS = "Administrators"; - } } } diff --git a/src/BlazorAdmin/CustomAuthStateProvider.cs b/src/BlazorAdmin/CustomAuthStateProvider.cs index bdf4dd5..af6092e 100644 --- a/src/BlazorAdmin/CustomAuthStateProvider.cs +++ b/src/BlazorAdmin/CustomAuthStateProvider.cs @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Components.Authorization; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.Extensions.Logging; -using Shared.Authorization; +using BlazorShared.Authorization; namespace BlazorAdmin { diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/Create.razor b/src/BlazorAdmin/Pages/CatalogItemPage/Create.razor index 7c86680..adecc76 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/Create.razor +++ b/src/BlazorAdmin/Pages/CatalogItemPage/Create.razor @@ -118,7 +118,7 @@ private async Task CreateClick() { - await new BlazorAdmin.Services.CatalogItemService.Create(Auth).HandleAsync(_item); + await new BlazorAdmin.Services.CatalogItemServices.Create(Auth).HandleAsync(_item); await OnCloseClick.InvokeAsync(null); Close(); } diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor b/src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor index 82bb464..d643167 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor +++ b/src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor @@ -47,7 +47,7 @@
- @Services.CatalogBrandService.List.GetBrandName(Brands, _item.CatalogBrandId) + @Services.CatalogBrandServices.List.GetBrandName(Brands, _item.CatalogBrandId)
@@ -55,7 +55,7 @@
- @Services.CatalogTypeService.List.GetTypeName(Types, _item.CatalogTypeId) + @Services.CatalogTypeServices.List.GetTypeName(Types, _item.CatalogTypeId)
Price @@ -105,7 +105,7 @@ { // TODO: Add some kind of "are you sure" check before this - await new BlazorAdmin.Services.CatalogItemService.Delete(Auth).HandleAsync(id); + await new BlazorAdmin.Services.CatalogItemServices.Delete(Auth).HandleAsync(id); await OnCloseClick.InvokeAsync(null); Close(); diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/Details.razor b/src/BlazorAdmin/Pages/CatalogItemPage/Details.razor index 12c8956..1539ee6 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/Details.razor +++ b/src/BlazorAdmin/Pages/CatalogItemPage/Details.razor @@ -50,7 +50,7 @@
- @Services.CatalogBrandService.List.GetBrandName(Brands, _item.CatalogBrandId) + @Services.CatalogBrandServices.List.GetBrandName(Brands, _item.CatalogBrandId)
@@ -58,7 +58,7 @@
- @Services.CatalogTypeService.List.GetTypeName(Types, _item.CatalogTypeId) + @Services.CatalogTypeServices.List.GetTypeName(Types, _item.CatalogTypeId)
Price diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/Edit.razor b/src/BlazorAdmin/Pages/CatalogItemPage/Edit.razor index 4a193ee..4e9fd24 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/Edit.razor +++ b/src/BlazorAdmin/Pages/CatalogItemPage/Edit.razor @@ -118,7 +118,7 @@ private async Task SaveClick() { - await new BlazorAdmin.Services.CatalogItemService.Edit(Auth).HandleAsync(_item); + await new BlazorAdmin.Services.CatalogItemServices.Edit(Auth).HandleAsync(_item); Close(); } diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/List.razor b/src/BlazorAdmin/Pages/CatalogItemPage/List.razor index 90125a0..d0de450 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/List.razor +++ b/src/BlazorAdmin/Pages/CatalogItemPage/List.razor @@ -1,7 +1,7 @@ @page "/admin" -@attribute [Authorize(Roles = Constants.Roles.ADMINISTRATORS)] +@attribute [Authorize(Roles = BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS)] @inject AuthService Auth -@using global::Shared.Authorization +@using global::BlazorShared.Authorization @inherits BlazorAdmin.Helpers.BlazorComponent @namespace BlazorAdmin.Pages.CatalogItemPage @@ -40,8 +40,8 @@ else - @Services.CatalogTypeService.List.GetTypeName(catalogTypes, item.CatalogTypeId) - @Services.CatalogBrandService.List.GetBrandName(catalogBrands, item.CatalogBrandId) + @Services.CatalogTypeServices.List.GetTypeName(catalogTypes, item.CatalogTypeId) + @Services.CatalogBrandServices.List.GetBrandName(catalogBrands, item.CatalogBrandId) @item.Id @item.Name @item.Description diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/List.razor.cs b/src/BlazorAdmin/Pages/CatalogItemPage/List.razor.cs index a37fa02..21cbe2d 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/List.razor.cs +++ b/src/BlazorAdmin/Pages/CatalogItemPage/List.razor.cs @@ -1,7 +1,7 @@ using BlazorAdmin.Helpers; -using BlazorAdmin.Services.CatalogBrandService; -using BlazorAdmin.Services.CatalogItemService; -using BlazorAdmin.Services.CatalogTypeService; +using BlazorAdmin.Services.CatalogBrandServices; +using BlazorAdmin.Services.CatalogItemServices; +using BlazorAdmin.Services.CatalogTypeServices; using System.Collections.Generic; using System.Threading.Tasks; @@ -22,9 +22,9 @@ namespace BlazorAdmin.Pages.CatalogItemPage { if (firstRender) { - catalogItems = await new BlazorAdmin.Services.CatalogItemService.ListPaged(Auth).HandleAsync(50); - catalogTypes = await new BlazorAdmin.Services.CatalogTypeService.List(Auth).HandleAsync(); - catalogBrands = await new BlazorAdmin.Services.CatalogBrandService.List(Auth).HandleAsync(); + catalogItems = await new BlazorAdmin.Services.CatalogItemServices.ListPaged(Auth).HandleAsync(50); + catalogTypes = await new BlazorAdmin.Services.CatalogTypeServices.List(Auth).HandleAsync(); + catalogBrands = await new BlazorAdmin.Services.CatalogBrandServices.List(Auth).HandleAsync(); CallRequestRefresh(); } @@ -54,7 +54,7 @@ namespace BlazorAdmin.Pages.CatalogItemPage private async Task ReloadCatalogItems() { - catalogItems = await new BlazorAdmin.Services.CatalogItemService.ListPaged(Auth).HandleAsync(50); + catalogItems = await new BlazorAdmin.Services.CatalogItemServices.ListPaged(Auth).HandleAsync(50); StateHasChanged(); } } diff --git a/src/BlazorAdmin/Services/AuthService.cs b/src/BlazorAdmin/Services/AuthService.cs index 12bda0a..714ef31 100644 --- a/src/BlazorAdmin/Services/AuthService.cs +++ b/src/BlazorAdmin/Services/AuthService.cs @@ -11,7 +11,7 @@ using BlazorAdmin.JavaScript; using Blazored.LocalStorage; using Microsoft.JSInterop; using Newtonsoft.Json; -using Shared.Authorization; +using BlazorShared.Authorization; namespace BlazorAdmin.Services { diff --git a/src/BlazorAdmin/Services/CatalogBrandService/List.CatalogBrand.cs b/src/BlazorAdmin/Services/CatalogBrandServices/List.CatalogBrand.cs similarity index 69% rename from src/BlazorAdmin/Services/CatalogBrandService/List.CatalogBrand.cs rename to src/BlazorAdmin/Services/CatalogBrandServices/List.CatalogBrand.cs index b535633..b8d8a5b 100644 --- a/src/BlazorAdmin/Services/CatalogBrandService/List.CatalogBrand.cs +++ b/src/BlazorAdmin/Services/CatalogBrandServices/List.CatalogBrand.cs @@ -1,4 +1,4 @@ -namespace BlazorAdmin.Services.CatalogBrandService +namespace BlazorAdmin.Services.CatalogBrandServices { public class CatalogBrand { diff --git a/src/BlazorAdmin/Services/CatalogBrandService/List.CatalogBrandResult.cs b/src/BlazorAdmin/Services/CatalogBrandServices/List.CatalogBrandResult.cs similarity index 77% rename from src/BlazorAdmin/Services/CatalogBrandService/List.CatalogBrandResult.cs rename to src/BlazorAdmin/Services/CatalogBrandServices/List.CatalogBrandResult.cs index 18f6219..88493ea 100644 --- a/src/BlazorAdmin/Services/CatalogBrandService/List.CatalogBrandResult.cs +++ b/src/BlazorAdmin/Services/CatalogBrandServices/List.CatalogBrandResult.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace BlazorAdmin.Services.CatalogBrandService +namespace BlazorAdmin.Services.CatalogBrandServices { public class CatalogBrandResult { diff --git a/src/BlazorAdmin/Services/CatalogBrandService/List.cs b/src/BlazorAdmin/Services/CatalogBrandServices/List.cs similarity index 96% rename from src/BlazorAdmin/Services/CatalogBrandService/List.cs rename to src/BlazorAdmin/Services/CatalogBrandServices/List.cs index be4cd68..fc7b7ee 100644 --- a/src/BlazorAdmin/Services/CatalogBrandService/List.cs +++ b/src/BlazorAdmin/Services/CatalogBrandServices/List.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Components.WebAssembly.Authentication; using Newtonsoft.Json; -namespace BlazorAdmin.Services.CatalogBrandService +namespace BlazorAdmin.Services.CatalogBrandServices { public class List { diff --git a/src/BlazorAdmin/Services/CatalogItemService/CatalogItem.cs b/src/BlazorAdmin/Services/CatalogItemServices/CatalogItem.cs similarity index 93% rename from src/BlazorAdmin/Services/CatalogItemService/CatalogItem.cs rename to src/BlazorAdmin/Services/CatalogItemServices/CatalogItem.cs index 5be1da1..d47c53e 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/CatalogItem.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/CatalogItem.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class CatalogItem { diff --git a/src/BlazorAdmin/Services/CatalogItemService/Create.CreateCatalogItemRequest.cs b/src/BlazorAdmin/Services/CatalogItemServices/Create.CreateCatalogItemRequest.cs similarity index 93% rename from src/BlazorAdmin/Services/CatalogItemService/Create.CreateCatalogItemRequest.cs rename to src/BlazorAdmin/Services/CatalogItemServices/Create.CreateCatalogItemRequest.cs index 377ded0..b9d09cb 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/Create.CreateCatalogItemRequest.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Create.CreateCatalogItemRequest.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class CreateCatalogItemRequest { diff --git a/src/BlazorAdmin/Services/CatalogItemService/Create.CreateCatalogItemResult.cs b/src/BlazorAdmin/Services/CatalogItemServices/Create.CreateCatalogItemResult.cs similarity index 81% rename from src/BlazorAdmin/Services/CatalogItemService/Create.CreateCatalogItemResult.cs rename to src/BlazorAdmin/Services/CatalogItemServices/Create.CreateCatalogItemResult.cs index 71d68fe..f76fe3f 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/Create.CreateCatalogItemResult.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Create.CreateCatalogItemResult.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class CreateCatalogItemResult { diff --git a/src/BlazorAdmin/Services/CatalogItemService/Create.cs b/src/BlazorAdmin/Services/CatalogItemServices/Create.cs similarity index 95% rename from src/BlazorAdmin/Services/CatalogItemService/Create.cs rename to src/BlazorAdmin/Services/CatalogItemServices/Create.cs index ac37d82..c9fe760 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/Create.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Create.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class Create { diff --git a/src/BlazorAdmin/Services/CatalogItemService/Delete.DeleteCatalogItemResult.cs b/src/BlazorAdmin/Services/CatalogItemServices/Delete.DeleteCatalogItemResult.cs similarity index 67% rename from src/BlazorAdmin/Services/CatalogItemService/Delete.DeleteCatalogItemResult.cs rename to src/BlazorAdmin/Services/CatalogItemServices/Delete.DeleteCatalogItemResult.cs index 4b66e4e..8436815 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/Delete.DeleteCatalogItemResult.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Delete.DeleteCatalogItemResult.cs @@ -1,4 +1,4 @@ -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class DeleteCatalogItemResult { diff --git a/src/BlazorAdmin/Services/CatalogItemService/Delete.cs b/src/BlazorAdmin/Services/CatalogItemServices/Delete.cs similarity index 94% rename from src/BlazorAdmin/Services/CatalogItemService/Delete.cs rename to src/BlazorAdmin/Services/CatalogItemServices/Delete.cs index ce74c67..4b36204 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/Delete.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Delete.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Newtonsoft.Json; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class Delete { diff --git a/src/BlazorAdmin/Services/CatalogItemService/Edit.EditCatalogItemResult.cs b/src/BlazorAdmin/Services/CatalogItemServices/Edit.EditCatalogItemResult.cs similarity index 70% rename from src/BlazorAdmin/Services/CatalogItemService/Edit.EditCatalogItemResult.cs rename to src/BlazorAdmin/Services/CatalogItemServices/Edit.EditCatalogItemResult.cs index fb17b93..9f303eb 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/Edit.EditCatalogItemResult.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Edit.EditCatalogItemResult.cs @@ -1,4 +1,4 @@ -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class EditCatalogItemResult { diff --git a/src/BlazorAdmin/Services/CatalogItemService/Edit.cs b/src/BlazorAdmin/Services/CatalogItemServices/Edit.cs similarity index 95% rename from src/BlazorAdmin/Services/CatalogItemService/Edit.cs rename to src/BlazorAdmin/Services/CatalogItemServices/Edit.cs index d80f19c..7bf917a 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/Edit.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Edit.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class Edit { diff --git a/src/BlazorAdmin/Services/CatalogItemService/GetById.GetByIdCatalogItemResult.cs b/src/BlazorAdmin/Services/CatalogItemServices/GetById.GetByIdCatalogItemResult.cs similarity index 70% rename from src/BlazorAdmin/Services/CatalogItemService/GetById.GetByIdCatalogItemResult.cs rename to src/BlazorAdmin/Services/CatalogItemServices/GetById.GetByIdCatalogItemResult.cs index 5c9b7a8..e7e9f1d 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/GetById.GetByIdCatalogItemResult.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/GetById.GetByIdCatalogItemResult.cs @@ -1,4 +1,4 @@ -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class GetByIdCatalogItemResult { diff --git a/src/BlazorAdmin/Services/CatalogItemService/GetById.cs b/src/BlazorAdmin/Services/CatalogItemServices/GetById.cs similarity index 94% rename from src/BlazorAdmin/Services/CatalogItemService/GetById.cs rename to src/BlazorAdmin/Services/CatalogItemServices/GetById.cs index 9539fb7..aaf70c8 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/GetById.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/GetById.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Newtonsoft.Json; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class GetById { diff --git a/src/BlazorAdmin/Services/CatalogItemService/ListPaged.PagedCatalogItemResult.cs b/src/BlazorAdmin/Services/CatalogItemServices/ListPaged.PagedCatalogItemResult.cs similarity index 81% rename from src/BlazorAdmin/Services/CatalogItemService/ListPaged.PagedCatalogItemResult.cs rename to src/BlazorAdmin/Services/CatalogItemServices/ListPaged.PagedCatalogItemResult.cs index e1217c1..531e78a 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/ListPaged.PagedCatalogItemResult.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/ListPaged.PagedCatalogItemResult.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class PagedCatalogItemResult { diff --git a/src/BlazorAdmin/Services/CatalogItemService/ListPaged.cs b/src/BlazorAdmin/Services/CatalogItemServices/ListPaged.cs similarity index 94% rename from src/BlazorAdmin/Services/CatalogItemService/ListPaged.cs rename to src/BlazorAdmin/Services/CatalogItemServices/ListPaged.cs index 25e63e0..9663168 100644 --- a/src/BlazorAdmin/Services/CatalogItemService/ListPaged.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/ListPaged.cs @@ -3,7 +3,7 @@ using System.Net; using System.Threading.Tasks; using Newtonsoft.Json; -namespace BlazorAdmin.Services.CatalogItemService +namespace BlazorAdmin.Services.CatalogItemServices { public class ListPaged { diff --git a/src/BlazorAdmin/Services/CatalogTypeService/List.CatalogType.cs b/src/BlazorAdmin/Services/CatalogTypeServices/List.CatalogType.cs similarity index 69% rename from src/BlazorAdmin/Services/CatalogTypeService/List.CatalogType.cs rename to src/BlazorAdmin/Services/CatalogTypeServices/List.CatalogType.cs index 370e9c4..0a22de3 100644 --- a/src/BlazorAdmin/Services/CatalogTypeService/List.CatalogType.cs +++ b/src/BlazorAdmin/Services/CatalogTypeServices/List.CatalogType.cs @@ -1,4 +1,4 @@ -namespace BlazorAdmin.Services.CatalogTypeService +namespace BlazorAdmin.Services.CatalogTypeServices { public class CatalogType { diff --git a/src/BlazorAdmin/Services/CatalogTypeService/List.CatalogTypeResult.cs b/src/BlazorAdmin/Services/CatalogTypeServices/List.CatalogTypeResult.cs similarity index 77% rename from src/BlazorAdmin/Services/CatalogTypeService/List.CatalogTypeResult.cs rename to src/BlazorAdmin/Services/CatalogTypeServices/List.CatalogTypeResult.cs index a5c8721..a897967 100644 --- a/src/BlazorAdmin/Services/CatalogTypeService/List.CatalogTypeResult.cs +++ b/src/BlazorAdmin/Services/CatalogTypeServices/List.CatalogTypeResult.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace BlazorAdmin.Services.CatalogTypeService +namespace BlazorAdmin.Services.CatalogTypeServices { public class CatalogTypeResult { diff --git a/src/BlazorAdmin/Services/CatalogTypeService/List.cs b/src/BlazorAdmin/Services/CatalogTypeServices/List.cs similarity index 96% rename from src/BlazorAdmin/Services/CatalogTypeService/List.cs rename to src/BlazorAdmin/Services/CatalogTypeServices/List.cs index f23b101..c5ab999 100644 --- a/src/BlazorAdmin/Services/CatalogTypeService/List.cs +++ b/src/BlazorAdmin/Services/CatalogTypeServices/List.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Components.WebAssembly.Authentication; using Newtonsoft.Json; -namespace BlazorAdmin.Services.CatalogTypeService +namespace BlazorAdmin.Services.CatalogTypeServices { public class List { diff --git a/src/BlazorAdmin/Shared/MainLayout.razor b/src/BlazorAdmin/Shared/MainLayout.razor index aa39334..c9438fa 100644 --- a/src/BlazorAdmin/Shared/MainLayout.razor +++ b/src/BlazorAdmin/Shared/MainLayout.razor @@ -3,7 +3,7 @@ @inherits BlazorAdmin.Helpers.BlazorLayoutComponent - + diff --git a/src/BlazorAdmin/_Imports.razor b/src/BlazorAdmin/_Imports.razor index b45b7ad..ecad015 100644 --- a/src/BlazorAdmin/_Imports.razor +++ b/src/BlazorAdmin/_Imports.razor @@ -10,8 +10,8 @@ @using BlazorAdmin @using BlazorAdmin.Shared @using BlazorAdmin.Services -@using BlazorAdmin.Services.CatalogBrandService -@using BlazorAdmin.Services.CatalogItemService -@using BlazorAdmin.Services.CatalogTypeService +@using BlazorAdmin.Services.CatalogBrandServices +@using BlazorAdmin.Services.CatalogItemServices +@using BlazorAdmin.Services.CatalogTypeServices @using Microsoft.Extensions.Logging @using BlazorAdmin.JavaScript diff --git a/src/Shared/Authorization/ClaimValue.cs b/src/BlazorShared/Authorization/ClaimValue.cs similarity index 90% rename from src/Shared/Authorization/ClaimValue.cs rename to src/BlazorShared/Authorization/ClaimValue.cs index b1b24c5..f2749cf 100644 --- a/src/Shared/Authorization/ClaimValue.cs +++ b/src/BlazorShared/Authorization/ClaimValue.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace Shared.Authorization +namespace BlazorShared.Authorization { public class ClaimValue { diff --git a/src/BlazorShared/Authorization/Constants.cs b/src/BlazorShared/Authorization/Constants.cs new file mode 100644 index 0000000..59dceb6 --- /dev/null +++ b/src/BlazorShared/Authorization/Constants.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BlazorShared.Authorization +{ + public class Constants + { + public static class Roles + { + public const string ADMINISTRATORS = "Administrators"; + } + } +} diff --git a/src/Shared/Authorization/UserInfo.cs b/src/BlazorShared/Authorization/UserInfo.cs similarity index 91% rename from src/Shared/Authorization/UserInfo.cs rename to src/BlazorShared/Authorization/UserInfo.cs index 9c4e2cc..d5ea56a 100644 --- a/src/Shared/Authorization/UserInfo.cs +++ b/src/BlazorShared/Authorization/UserInfo.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Security.Claims; using System.Text; -namespace Shared.Authorization +namespace BlazorShared.Authorization { public class UserInfo { diff --git a/src/BlazorShared/BlazorShared.csproj b/src/BlazorShared/BlazorShared.csproj new file mode 100644 index 0000000..07b614b --- /dev/null +++ b/src/BlazorShared/BlazorShared.csproj @@ -0,0 +1,9 @@ + + + + netstandard2.0 + BlazorShared + BlazorShared + + + diff --git a/src/Infrastructure/Identity/AppIdentityDbContextSeed.cs b/src/Infrastructure/Identity/AppIdentityDbContextSeed.cs index 3664fe1..e30edcd 100644 --- a/src/Infrastructure/Identity/AppIdentityDbContextSeed.cs +++ b/src/Infrastructure/Identity/AppIdentityDbContextSeed.cs @@ -8,7 +8,7 @@ namespace Microsoft.eShopWeb.Infrastructure.Identity { public static async Task SeedAsync(UserManager userManager, RoleManager roleManager) { - await roleManager.CreateAsync(new IdentityRole(AuthorizationConstants.Roles.ADMINISTRATORS)); + await roleManager.CreateAsync(new IdentityRole(BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS)); var defaultUser = new ApplicationUser { UserName = "demouser@microsoft.com", Email = "demouser@microsoft.com" }; await userManager.CreateAsync(defaultUser, AuthorizationConstants.DEFAULT_PASSWORD); @@ -17,7 +17,7 @@ namespace Microsoft.eShopWeb.Infrastructure.Identity var adminUser = new ApplicationUser { UserName = adminUserName, Email = adminUserName }; await userManager.CreateAsync(adminUser, AuthorizationConstants.DEFAULT_PASSWORD); adminUser = await userManager.FindByNameAsync(adminUserName); - await userManager.AddToRoleAsync(adminUser, AuthorizationConstants.Roles.ADMINISTRATORS); + await userManager.AddToRoleAsync(adminUser, BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS); } } } diff --git a/src/PublicApi/CatalogItemEndpoints/Create.cs b/src/PublicApi/CatalogItemEndpoints/Create.cs index e3c31d8..c2e828b 100644 --- a/src/PublicApi/CatalogItemEndpoints/Create.cs +++ b/src/PublicApi/CatalogItemEndpoints/Create.cs @@ -11,7 +11,7 @@ using System.Threading.Tasks; namespace Microsoft.eShopWeb.PublicApi.CatalogItemEndpoints { - [Authorize(Roles = AuthorizationConstants.Roles.ADMINISTRATORS, AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + [Authorize(Roles = BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS, AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class Create : BaseAsyncEndpoint { private readonly IAsyncRepository _itemRepository; diff --git a/src/PublicApi/CatalogItemEndpoints/Delete.cs b/src/PublicApi/CatalogItemEndpoints/Delete.cs index ed3c712..010e06a 100644 --- a/src/PublicApi/CatalogItemEndpoints/Delete.cs +++ b/src/PublicApi/CatalogItemEndpoints/Delete.cs @@ -10,7 +10,7 @@ using System.Threading.Tasks; namespace Microsoft.eShopWeb.PublicApi.CatalogItemEndpoints { - [Authorize(Roles = AuthorizationConstants.Roles.ADMINISTRATORS, AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + [Authorize(Roles = BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS, AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class Delete : BaseAsyncEndpoint { private readonly IAsyncRepository _itemRepository; diff --git a/src/PublicApi/CatalogItemEndpoints/Update.cs b/src/PublicApi/CatalogItemEndpoints/Update.cs index fe8cd96..8c97e06 100644 --- a/src/PublicApi/CatalogItemEndpoints/Update.cs +++ b/src/PublicApi/CatalogItemEndpoints/Update.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace Microsoft.eShopWeb.PublicApi.CatalogItemEndpoints { - [Authorize(Roles = AuthorizationConstants.Roles.ADMINISTRATORS, AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + [Authorize(Roles = BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS, AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class Update : BaseAsyncEndpoint { private readonly IAsyncRepository _itemRepository; diff --git a/src/Shared/Shared.csproj b/src/Shared/Shared.csproj deleted file mode 100644 index 9f5c4f4..0000000 --- a/src/Shared/Shared.csproj +++ /dev/null @@ -1,7 +0,0 @@ - - - - netstandard2.0 - - - diff --git a/src/Web/Controllers/UserController.cs b/src/Web/Controllers/UserController.cs index 7c11ebc..eedce15 100644 --- a/src/Web/Controllers/UserController.cs +++ b/src/Web/Controllers/UserController.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Security.Claims; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Shared.Authorization; +using BlazorShared.Authorization; namespace Microsoft.eShopWeb.Web.Controllers { diff --git a/src/Web/Pages/Admin/EditCatalogItem.cshtml.cs b/src/Web/Pages/Admin/EditCatalogItem.cshtml.cs index 6e1a7fe..686114d 100644 --- a/src/Web/Pages/Admin/EditCatalogItem.cshtml.cs +++ b/src/Web/Pages/Admin/EditCatalogItem.cshtml.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace Microsoft.eShopWeb.Web.Pages.Admin { - [Authorize(Roles = AuthorizationConstants.Roles.ADMINISTRATORS)] + [Authorize(Roles = BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS)] public class EditCatalogItemModel : PageModel { private readonly ICatalogItemViewModelService _catalogItemViewModelService; diff --git a/src/Web/Pages/Admin/Index.cshtml.cs b/src/Web/Pages/Admin/Index.cshtml.cs index 4328bb8..52a9617 100644 --- a/src/Web/Pages/Admin/Index.cshtml.cs +++ b/src/Web/Pages/Admin/Index.cshtml.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; namespace Microsoft.eShopWeb.Web.Pages.Admin { - [Authorize(Roles = AuthorizationConstants.Roles.ADMINISTRATORS)] + [Authorize(Roles = BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS)] public class IndexModel : PageModel { public IndexModel() diff --git a/src/Web/Web.csproj b/src/Web/Web.csproj index 76547c3..74ea66b 100644 --- a/src/Web/Web.csproj +++ b/src/Web/Web.csproj @@ -51,8 +51,8 @@ + - From 688064199d5e229865379c0553a667f23820872d Mon Sep 17 00:00:00 2001 From: Shady Nagy Date: Mon, 27 Jul 2020 15:06:18 +0200 Subject: [PATCH 2/4] Docker Fix (#431) * static added to Constants * Docker support for Blazor * GetHttp, PostHttp, ... inside AuthService, Docker working with login, Cookies Configuration temporary disabled * BaseAddress get web uri from Blazor Shared. * cookie options changed to fix docker. * Fixed returnUrl when inserting admin link and navigate without login * Functions not used removed. * AddPolicy using GetWebUrl * Login link removed from NavMenu * Change ConfigureCookieSettings, ConfigureCoreServices and ConfigureWebServices to be IServiceCollection extentions. * GetOriginWebUrl added. * Auto InDocker switch added. * Removed not used using . --- docker-compose.override.yml | 2 + src/BlazorAdmin/Constants.cs | 7 - .../Pages/CatalogItemPage/Delete.razor | 2 +- .../Pages/CatalogItemPage/Details.razor | 2 +- .../Pages/CatalogItemPage/List.razor | 3 +- src/BlazorAdmin/Services/AuthService.cs | 237 +++++++----------- .../Services/CatalogBrandServices/List.cs | 2 +- .../Services/CatalogItemServices/Create.cs | 6 +- .../Services/CatalogItemServices/Delete.cs | 2 +- .../Services/CatalogItemServices/Edit.cs | 6 +- .../Services/CatalogItemServices/GetById.cs | 2 +- .../Services/CatalogItemServices/ListPaged.cs | 2 +- .../Services/CatalogTypeServices/List.cs | 2 +- src/BlazorAdmin/Shared/NavMenu.razor | 6 - src/BlazorAdmin/Shared/RedirectToLogin.razor | 2 +- src/BlazorAdmin/_Imports.razor | 3 +- src/BlazorShared/Authorization/ClaimValue.cs | 6 +- src/BlazorShared/Authorization/Constants.cs | 23 +- src/BlazorShared/Authorization/UserInfo.cs | 5 +- src/PublicApi/Startup.cs | 8 +- .../Identity/Pages/Account/Login.cshtml.cs | 5 +- .../Configuration/ConfigureCookieSettings.cs | 6 +- .../Configuration/ConfigureCoreServices.cs | 4 +- src/Web/Configuration/ConfigureWebServices.cs | 4 +- src/Web/Startup.cs | 40 +-- 25 files changed, 172 insertions(+), 215 deletions(-) delete mode 100644 src/BlazorAdmin/Constants.cs diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 182e085..32b0faa 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -4,6 +4,7 @@ services: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://+:80 + - DOTNET_RUNNING_IN_CONTAINER=true ports: - "5106:80" volumes: @@ -13,6 +14,7 @@ services: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://+:80 + - DOTNET_RUNNING_IN_CONTAINER=true ports: - "5200:80" volumes: diff --git a/src/BlazorAdmin/Constants.cs b/src/BlazorAdmin/Constants.cs deleted file mode 100644 index 0ff40f7..0000000 --- a/src/BlazorAdmin/Constants.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace BlazorAdmin -{ - public class Constants - { - public const string API_URL = "https://localhost:5099/api/"; - } -} diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor b/src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor index d643167..7104ef6 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor +++ b/src/BlazorAdmin/Pages/CatalogItemPage/Delete.razor @@ -23,7 +23,7 @@ {
- +
diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/Details.razor b/src/BlazorAdmin/Pages/CatalogItemPage/Details.razor index 1539ee6..217b0f2 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/Details.razor +++ b/src/BlazorAdmin/Pages/CatalogItemPage/Details.razor @@ -26,7 +26,7 @@ {
- +
diff --git a/src/BlazorAdmin/Pages/CatalogItemPage/List.razor b/src/BlazorAdmin/Pages/CatalogItemPage/List.razor index d0de450..f3d7c74 100644 --- a/src/BlazorAdmin/Pages/CatalogItemPage/List.razor +++ b/src/BlazorAdmin/Pages/CatalogItemPage/List.razor @@ -1,7 +1,6 @@ @page "/admin" @attribute [Authorize(Roles = BlazorShared.Authorization.Constants.Roles.ADMINISTRATORS)] @inject AuthService Auth -@using global::BlazorShared.Authorization @inherits BlazorAdmin.Helpers.BlazorComponent @namespace BlazorAdmin.Pages.CatalogItemPage @@ -38,7 +37,7 @@ else { - + @Services.CatalogTypeServices.List.GetTypeName(catalogTypes, item.CatalogTypeId) @Services.CatalogBrandServices.List.GetBrandName(catalogBrands, item.CatalogBrandId) diff --git a/src/BlazorAdmin/Services/AuthService.cs b/src/BlazorAdmin/Services/AuthService.cs index 714ef31..989a9a1 100644 --- a/src/BlazorAdmin/Services/AuthService.cs +++ b/src/BlazorAdmin/Services/AuthService.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Http; +using System.Net.Http; using System.Net.Http.Headers; using System.Net.Http.Json; -using System.Security.Claims; using System.Text; using System.Threading.Tasks; using BlazorAdmin.JavaScript; @@ -20,6 +16,12 @@ namespace BlazorAdmin.Services private readonly HttpClient _httpClient; private readonly ILocalStorageService _localStorage; private readonly IJSRuntime _jSRuntime; + + public string ApiUrl => Constants.GetApiUrl(InDocker); + public string WebUrl => Constants.GetWebUrl(InDocker); + + private static bool InDocker { get; set; } + public bool IsLoggedIn { get; set; } public string UserName { get; set; } @@ -30,51 +32,33 @@ namespace BlazorAdmin.Services _jSRuntime = jSRuntime; } - public HttpClient GetHttpClient() + public async Task HttpGet(string uri) { - return _httpClient; + return await _httpClient.GetAsync($"{ApiUrl}{uri}"); } - public async Task LoginWithoutSaveToLocalStorage(AuthRequest user) + public async Task HttpDelete(string uri, int id) { - var jsonContent = new StringContent(JsonConvert.SerializeObject(user), Encoding.UTF8, "application/json"); - var response = await _httpClient.PostAsync($"{Constants.API_URL}authenticate", jsonContent); - var authResponse = new AuthResponse(); - - if (response.IsSuccessStatusCode) - { - authResponse = await DeserializeToAuthResponse(response); - - IsLoggedIn = true; - } - - return authResponse; + return await _httpClient.DeleteAsync($"{ApiUrl}{uri}/{id}"); } - public async Task Login(AuthRequest user) + public async Task HttpPost(string uri, object dataToSend) { - var jsonContent = new StringContent(JsonConvert.SerializeObject(user), Encoding.UTF8, "application/json"); - var response = await _httpClient.PostAsync($"{Constants.API_URL}authenticate", jsonContent); - var authResponse = new AuthResponse(); + var content = ToJson(dataToSend); - if (response.IsSuccessStatusCode) - { - authResponse = await DeserializeToAuthResponse(response); - await SaveTokenInLocalStorage(authResponse); - await SaveUsernameInLocalStorage(authResponse); - await SetAuthorizationHeader(); + return await _httpClient.PostAsync($"{ApiUrl}{uri}", content); + } - UserName = await GetUsername(); - IsLoggedIn = true; - } + public async Task HttpPut(string uri, object dataToSend) + { + var content = ToJson(dataToSend); - return authResponse; + return await _httpClient.PutAsync($"{ApiUrl}{uri}", content); } public async Task Logout() { - await _localStorage.RemoveItemAsync("authToken"); - await _localStorage.RemoveItemAsync("username"); + await DeleteLocalStorage(); await DeleteCookies(); RemoveAuthorizationHeader(); UserName = null; @@ -95,67 +79,11 @@ namespace BlazorAdmin.Services var username = await new Cookies(_jSRuntime).GetCookie("username"); await SaveUsernameInLocalStorage(username); + var inDocker = await new Cookies(_jSRuntime).GetCookie("inDocker"); + await SaveInDockerInLocalStorage(inDocker); + await RefreshLoginInfo(); } - private async Task LogoutIdentityManager() - { - await _httpClient.PostAsync("Identity/Account/Logout", null); - } - - private async Task DeleteCookies() - { - await new Cookies(_jSRuntime).DeleteCookie("token"); - await new Cookies(_jSRuntime).DeleteCookie("username"); - } - - private async Task SetLoginData() - { - IsLoggedIn = !string.IsNullOrEmpty(await GetToken()); - UserName = await GetUsername(); - await SetAuthorizationHeader(); - } - - private async Task DeserializeToAuthResponse(HttpResponseMessage response) - { - var responseContent = await response.Content.ReadAsStringAsync(); - return JsonConvert.DeserializeObject(responseContent); - } - - private async Task SaveTokenInLocalStorage(AuthResponse authResponse) - { - await _localStorage.SetItemAsync("authToken", SaveTokenInLocalStorage(authResponse.Token)); - } - - private async Task SaveTokenInLocalStorage(string token) - { - if (string.IsNullOrEmpty(token)) - { - return; - } - await _localStorage.SetItemAsync("authToken", token); - } - - private void RemoveAuthorizationHeader() - { - if (_httpClient.DefaultRequestHeaders.Contains("Authorization")) - { - _httpClient.DefaultRequestHeaders.Remove("Authorization"); - } - } - - private async Task SaveUsernameInLocalStorage(AuthResponse authResponse) - { - await _localStorage.SetItemAsync("username", SaveUsernameInLocalStorage(authResponse.Username)); - } - - private async Task SaveUsernameInLocalStorage(string username) - { - if (string.IsNullOrEmpty(username)) - { - return; - } - await _localStorage.SetItemAsync("username", username); - } public async Task GetToken() { @@ -175,58 +103,83 @@ namespace BlazorAdmin.Services return username; } + public async Task GetInDocker() + { + return (await _localStorage.GetItemAsync("inDocker")).ToLower() == "true"; + } + + private StringContent ToJson(object obj) + { + return new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json"); + } + + private async Task LogoutIdentityManager() + { + await _httpClient.PostAsync("Identity/Account/Logout", null); + } + + private async Task DeleteLocalStorage() + { + await _localStorage.RemoveItemAsync("authToken"); + await _localStorage.RemoveItemAsync("username"); + await _localStorage.RemoveItemAsync("inDocker"); + } + + private async Task DeleteCookies() + { + await new Cookies(_jSRuntime).DeleteCookie("token"); + await new Cookies(_jSRuntime).DeleteCookie("username"); + await new Cookies(_jSRuntime).DeleteCookie("inDocker"); + } + + private async Task SetLoginData() + { + IsLoggedIn = !string.IsNullOrEmpty(await GetToken()); + UserName = await GetUsername(); + InDocker = await GetInDocker(); + await SetAuthorizationHeader(); + } + + private void RemoveAuthorizationHeader() + { + if (_httpClient.DefaultRequestHeaders.Contains("Authorization")) + { + _httpClient.DefaultRequestHeaders.Remove("Authorization"); + } + } + + private async Task SaveTokenInLocalStorage(string token) + { + if (string.IsNullOrEmpty(token)) + { + return; + } + await _localStorage.SetItemAsync("authToken", token); + } + + private async Task SaveUsernameInLocalStorage(string username) + { + if (string.IsNullOrEmpty(username)) + { + return; + } + await _localStorage.SetItemAsync("username", username); + } + + private async Task SaveInDockerInLocalStorage(string inDocker) + { + if (string.IsNullOrEmpty(inDocker)) + { + return; + } + await _localStorage.SetItemAsync("inDocker", inDocker); + } + private async Task SetAuthorizationHeader() { var token = await GetToken(); _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); } - public IEnumerable ParseClaimsFromJwt(string jwt) - { - var claims = new List(); - if (string.IsNullOrEmpty(jwt)) - { - return claims; - } - - var payload = jwt.Split('.')[1]; - var jsonBytes = ParseBase64WithoutPadding(payload); - var keyValuePairs = JsonConvert.DeserializeObject>(Encoding.UTF8.GetString(jsonBytes)); - - keyValuePairs.TryGetValue(ClaimTypes.Role, out object roles); - - if (roles != null) - { - if (roles.ToString().Trim().StartsWith("[")) - { - var parsedRoles = JsonConvert.DeserializeObject(roles.ToString()); - - foreach (var parsedRole in parsedRoles) - { - claims.Add(new Claim(ClaimTypes.Role, parsedRole)); - } - } - else - { - claims.Add(new Claim(ClaimTypes.Role, roles.ToString())); - } - - keyValuePairs.Remove(ClaimTypes.Role); - } - - claims.AddRange(keyValuePairs.Select(kvp => new Claim(kvp.Key, kvp.Value.ToString()))); - - return claims; - } - - private byte[] ParseBase64WithoutPadding(string base64) - { - switch (base64.Length % 4) - { - case 2: base64 += "=="; break; - case 3: base64 += "="; break; - } - return Convert.FromBase64String(base64); - } } } diff --git a/src/BlazorAdmin/Services/CatalogBrandServices/List.cs b/src/BlazorAdmin/Services/CatalogBrandServices/List.cs index fc7b7ee..2cc2dec 100644 --- a/src/BlazorAdmin/Services/CatalogBrandServices/List.cs +++ b/src/BlazorAdmin/Services/CatalogBrandServices/List.cs @@ -26,7 +26,7 @@ namespace BlazorAdmin.Services.CatalogBrandServices try { - var result = (await _authService.GetHttpClient().GetAsync($"{Constants.API_URL}catalog-brands")); + var result = await _authService.HttpGet("catalog-brands"); if (result.StatusCode != HttpStatusCode.OK) { return brands; diff --git a/src/BlazorAdmin/Services/CatalogItemServices/Create.cs b/src/BlazorAdmin/Services/CatalogItemServices/Create.cs index c9fe760..67e4abe 100644 --- a/src/BlazorAdmin/Services/CatalogItemServices/Create.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Create.cs @@ -1,6 +1,4 @@ using System.Net; -using System.Net.Http; -using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; @@ -19,9 +17,7 @@ namespace BlazorAdmin.Services.CatalogItemServices { var catalogItemResult = new CatalogItem(); - var content = new StringContent(JsonConvert.SerializeObject(catalogItem), Encoding.UTF8, "application/json"); - - var result = await _authService.GetHttpClient().PostAsync($"{Constants.API_URL}catalog-items", content); + var result = await _authService.HttpPost("catalog-items", catalogItem); if (result.StatusCode != HttpStatusCode.OK) { return catalogItemResult; diff --git a/src/BlazorAdmin/Services/CatalogItemServices/Delete.cs b/src/BlazorAdmin/Services/CatalogItemServices/Delete.cs index 4b36204..eb20182 100644 --- a/src/BlazorAdmin/Services/CatalogItemServices/Delete.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Delete.cs @@ -17,7 +17,7 @@ namespace BlazorAdmin.Services.CatalogItemServices { var catalogItemResult = string.Empty; - var result = await _authService.GetHttpClient().DeleteAsync($"{Constants.API_URL}catalog-items/{catalogItemId}"); + var result = await _authService.HttpDelete("catalog-items", catalogItemId); if (result.StatusCode != HttpStatusCode.OK) { return catalogItemResult; diff --git a/src/BlazorAdmin/Services/CatalogItemServices/Edit.cs b/src/BlazorAdmin/Services/CatalogItemServices/Edit.cs index 7bf917a..98484f2 100644 --- a/src/BlazorAdmin/Services/CatalogItemServices/Edit.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/Edit.cs @@ -1,6 +1,4 @@ using System.Net; -using System.Net.Http; -using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; @@ -19,9 +17,7 @@ namespace BlazorAdmin.Services.CatalogItemServices { var catalogItemResult = new CatalogItem(); - var content = new StringContent(JsonConvert.SerializeObject(catalogItem), Encoding.UTF8, "application/json"); - - var result = await _authService.GetHttpClient().PutAsync($"{Constants.API_URL}catalog-items", content); + var result = await _authService.HttpPut("catalog-items", catalogItem); if (result.StatusCode != HttpStatusCode.OK) { return catalogItemResult; diff --git a/src/BlazorAdmin/Services/CatalogItemServices/GetById.cs b/src/BlazorAdmin/Services/CatalogItemServices/GetById.cs index aaf70c8..ee1907a 100644 --- a/src/BlazorAdmin/Services/CatalogItemServices/GetById.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/GetById.cs @@ -17,7 +17,7 @@ namespace BlazorAdmin.Services.CatalogItemServices { var catalogItemResult = new CatalogItem(); - var result = await _authService.GetHttpClient().GetAsync($"{Constants.API_URL}catalog-items/{catalogItemId}"); + var result = await _authService.HttpGet($"catalog-items/{catalogItemId}"); if (result.StatusCode != HttpStatusCode.OK) { return catalogItemResult; diff --git a/src/BlazorAdmin/Services/CatalogItemServices/ListPaged.cs b/src/BlazorAdmin/Services/CatalogItemServices/ListPaged.cs index 9663168..3db843d 100644 --- a/src/BlazorAdmin/Services/CatalogItemServices/ListPaged.cs +++ b/src/BlazorAdmin/Services/CatalogItemServices/ListPaged.cs @@ -18,7 +18,7 @@ namespace BlazorAdmin.Services.CatalogItemServices { var catalogItems = new List(); - var result = (await _authService.GetHttpClient().GetAsync($"{Constants.API_URL}catalog-items?PageSize={pageSize}")); + var result = await _authService.HttpGet($"catalog-items?PageSize={pageSize}"); if (result.StatusCode != HttpStatusCode.OK) { return catalogItems; diff --git a/src/BlazorAdmin/Services/CatalogTypeServices/List.cs b/src/BlazorAdmin/Services/CatalogTypeServices/List.cs index c5ab999..7512a66 100644 --- a/src/BlazorAdmin/Services/CatalogTypeServices/List.cs +++ b/src/BlazorAdmin/Services/CatalogTypeServices/List.cs @@ -27,7 +27,7 @@ namespace BlazorAdmin.Services.CatalogTypeServices try { - var result = (await _authService.GetHttpClient().GetAsync($"{Constants.API_URL}catalog-types")); + var result = await _authService.HttpGet("catalog-types"); if (result.StatusCode != HttpStatusCode.OK) { return types; diff --git a/src/BlazorAdmin/Shared/NavMenu.razor b/src/BlazorAdmin/Shared/NavMenu.razor index 0688581..129eb57 100644 --- a/src/BlazorAdmin/Shared/NavMenu.razor +++ b/src/BlazorAdmin/Shared/NavMenu.razor @@ -27,12 +27,6 @@ Logout } - else - { - - Login - - } diff --git a/src/BlazorAdmin/Shared/RedirectToLogin.razor b/src/BlazorAdmin/Shared/RedirectToLogin.razor index 8a2ba84..810a66e 100644 --- a/src/BlazorAdmin/Shared/RedirectToLogin.razor +++ b/src/BlazorAdmin/Shared/RedirectToLogin.razor @@ -4,6 +4,6 @@ protected override void OnInitialized() { Navigation.NavigateTo($"Identity/Account/Login?returnUrl=" + - Uri.EscapeDataString(Navigation.Uri)); + $"/{Uri.EscapeDataString(Navigation.ToBaseRelativePath(Navigation.Uri))}"); } } \ No newline at end of file diff --git a/src/BlazorAdmin/_Imports.razor b/src/BlazorAdmin/_Imports.razor index ecad015..cd87be6 100644 --- a/src/BlazorAdmin/_Imports.razor +++ b/src/BlazorAdmin/_Imports.razor @@ -7,11 +7,12 @@ @using Microsoft.AspNetCore.Components.Web @using Microsoft.AspNetCore.Components.WebAssembly.Http @using Microsoft.JSInterop +@using Microsoft.Extensions.Logging @using BlazorAdmin @using BlazorAdmin.Shared @using BlazorAdmin.Services @using BlazorAdmin.Services.CatalogBrandServices @using BlazorAdmin.Services.CatalogItemServices @using BlazorAdmin.Services.CatalogTypeServices -@using Microsoft.Extensions.Logging @using BlazorAdmin.JavaScript +@using BlazorShared.Authorization diff --git a/src/BlazorShared/Authorization/ClaimValue.cs b/src/BlazorShared/Authorization/ClaimValue.cs index f2749cf..963da22 100644 --- a/src/BlazorShared/Authorization/ClaimValue.cs +++ b/src/BlazorShared/Authorization/ClaimValue.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace BlazorShared.Authorization +namespace BlazorShared.Authorization { public class ClaimValue { diff --git a/src/BlazorShared/Authorization/Constants.cs b/src/BlazorShared/Authorization/Constants.cs index 59dceb6..b7120fd 100644 --- a/src/BlazorShared/Authorization/Constants.cs +++ b/src/BlazorShared/Authorization/Constants.cs @@ -1,14 +1,25 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace BlazorShared.Authorization +namespace BlazorShared.Authorization { - public class Constants + public static class Constants { public static class Roles { public const string ADMINISTRATORS = "Administrators"; } + public static string GetApiUrl(bool inDocker) => + inDocker ? DOCKER_API_URL : API_URL; + + public static string GetWebUrl(bool inDocker) => + inDocker ? DOCKER_WEB_URL : WEB_URL; + + public static string GetOriginWebUrl(bool inDocker) => + GetWebUrl(inDocker).TrimEnd('/'); + + private const string API_URL = "https://localhost:5099/api/"; + private const string DOCKER_API_URL = "http://localhost:5200/api/"; + + private const string WEB_URL = "https://localhost:44315/"; + private const string DOCKER_WEB_URL = "http://localhost:5106/"; + } } diff --git a/src/BlazorShared/Authorization/UserInfo.cs b/src/BlazorShared/Authorization/UserInfo.cs index d5ea56a..19cbd11 100644 --- a/src/BlazorShared/Authorization/UserInfo.cs +++ b/src/BlazorShared/Authorization/UserInfo.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Security.Claims; -using System.Text; +using System.Collections.Generic; namespace BlazorShared.Authorization { diff --git a/src/PublicApi/Startup.cs b/src/PublicApi/Startup.cs index 7818499..fa47fb0 100644 --- a/src/PublicApi/Startup.cs +++ b/src/PublicApi/Startup.cs @@ -2,9 +2,8 @@ using System; using System.Collections.Generic; using System.Text; using AutoMapper; +using BlazorShared.Authorization; using MediatR; - -using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -28,6 +27,8 @@ namespace Microsoft.eShopWeb.PublicApi public class Startup { private const string CORS_POLICY = "CorsPolicy"; + public static bool InDocker => Environment.GetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER") == "true"; + public Startup(IConfiguration configuration) { Configuration = configuration; @@ -128,8 +129,7 @@ namespace Microsoft.eShopWeb.PublicApi { builder.WithOrigins("http://localhost:44319", "https://localhost:44319", - "http://localhost:44315", - "https://localhost:44315"); + Constants.GetOriginWebUrl(InDocker)); builder.AllowAnyMethod(); builder.AllowAnyHeader(); }); diff --git a/src/Web/Areas/Identity/Pages/Account/Login.cshtml.cs b/src/Web/Areas/Identity/Pages/Account/Login.cshtml.cs index 4a357b0..4c775f6 100644 --- a/src/Web/Areas/Identity/Pages/Account/Login.cshtml.cs +++ b/src/Web/Areas/Identity/Pages/Account/Login.cshtml.cs @@ -89,7 +89,7 @@ namespace Microsoft.eShopWeb.Web.Areas.Identity.Pages.Account if (result.Succeeded) { var token = await _tokenClaimsService.GetTokenAsync(Input.Email); - CreateAuthCookie(Input.Email, token); + CreateAuthCookie(Input.Email, token, Startup.InDocker); _logger.LogInformation("User logged in."); await TransferAnonymousBasketToUserAsync(Input.Email); return LocalRedirect(returnUrl); @@ -114,12 +114,13 @@ namespace Microsoft.eShopWeb.Web.Areas.Identity.Pages.Account return Page(); } - private void CreateAuthCookie(string username, string token) + private void CreateAuthCookie(string username, string token, bool inDocker) { var cookieOptions = new CookieOptions(); cookieOptions.Expires = DateTime.Today.AddYears(10); Response.Cookies.Append("token", token, cookieOptions); Response.Cookies.Append("username", username, cookieOptions); + Response.Cookies.Append("inDocker", inDocker.ToString(), cookieOptions); } private async Task TransferAnonymousBasketToUserAsync(string userName) diff --git a/src/Web/Configuration/ConfigureCookieSettings.cs b/src/Web/Configuration/ConfigureCookieSettings.cs index d17f2c5..69515b4 100644 --- a/src/Web/Configuration/ConfigureCookieSettings.cs +++ b/src/Web/Configuration/ConfigureCookieSettings.cs @@ -7,14 +7,14 @@ namespace Microsoft.eShopWeb.Web.Configuration { public static class ConfigureCookieSettings { - public static void Configure(IServiceCollection services) + public static IServiceCollection AddCookieSettings(this IServiceCollection services) { services.Configure(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. //TODO need to check that. //options.CheckConsentNeeded = context => true; - options.MinimumSameSitePolicy = SameSiteMode.None; + options.MinimumSameSitePolicy = SameSiteMode.Strict; }); services.ConfigureApplicationCookie(options => { @@ -27,6 +27,8 @@ namespace Microsoft.eShopWeb.Web.Configuration IsEssential = true // required for auth to work without explicit user consent; adjust to suit your privacy policy }; }); + + return services; } } } diff --git a/src/Web/Configuration/ConfigureCoreServices.cs b/src/Web/Configuration/ConfigureCoreServices.cs index 8284297..039e13a 100644 --- a/src/Web/Configuration/ConfigureCoreServices.cs +++ b/src/Web/Configuration/ConfigureCoreServices.cs @@ -10,7 +10,7 @@ namespace Microsoft.eShopWeb.Web.Configuration { public static class ConfigureCoreServices { - public static void Configure(IServiceCollection services, IConfiguration configuration) + public static IServiceCollection AddCoreServices(this IServiceCollection services, IConfiguration configuration) { services.AddScoped(typeof(IAsyncRepository<>), typeof(EfRepository<>)); services.AddScoped(); @@ -19,6 +19,8 @@ namespace Microsoft.eShopWeb.Web.Configuration services.AddSingleton(new UriComposer(configuration.Get())); services.AddScoped(typeof(IAppLogger<>), typeof(LoggerAdapter<>)); services.AddTransient(); + + return services; } } } diff --git a/src/Web/Configuration/ConfigureWebServices.cs b/src/Web/Configuration/ConfigureWebServices.cs index 92da237..87030d5 100644 --- a/src/Web/Configuration/ConfigureWebServices.cs +++ b/src/Web/Configuration/ConfigureWebServices.cs @@ -8,7 +8,7 @@ namespace Microsoft.eShopWeb.Web.Configuration { public static class ConfigureWebServices { - public static void Configure(IServiceCollection services, IConfiguration configuration) + public static IServiceCollection AddWebServices(this IServiceCollection services, IConfiguration configuration) { services.AddMediatR(typeof(BasketViewModelService).Assembly); services.AddScoped(); @@ -16,6 +16,8 @@ namespace Microsoft.eShopWeb.Web.Configuration services.AddScoped(); services.Configure(configuration); services.AddScoped(); + + return services; } } } diff --git a/src/Web/Startup.cs b/src/Web/Startup.cs index 83e9231..f543879 100644 --- a/src/Web/Startup.cs +++ b/src/Web/Startup.cs @@ -15,14 +15,14 @@ using Microsoft.Extensions.Diagnostics.HealthChecks; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Net.Http; using System.Net.Mime; using BlazorAdmin.Services; using Blazored.LocalStorage; -using Microsoft.AspNetCore.Components; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Authentication.Cookies; +using Microsoft.AspNetCore.DataProtection; using Microsoft.eShopWeb.ApplicationCore.Interfaces; namespace Microsoft.eShopWeb.Web @@ -30,6 +30,8 @@ namespace Microsoft.eShopWeb.Web public class Startup { private IServiceCollection _services; + public static bool InDocker => Environment.GetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER") == "true"; + public Startup(IConfiguration configuration) { Configuration = configuration; @@ -83,7 +85,22 @@ namespace Microsoft.eShopWeb.Web // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { - ConfigureCookieSettings.Configure(services); + services.AddCookieSettings(); + + if (InDocker) + { + services.AddDataProtection() + .SetApplicationName("eshopwebmvc") + .PersistKeysToFileSystem(new DirectoryInfo(@"./")); + } + + services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) + .AddCookie(options => + { + options.Cookie.HttpOnly = true; + options.Cookie.SecurePolicy = CookieSecurePolicy.Always; + options.Cookie.SameSite = SameSiteMode.Lax; + }); services.AddIdentity() .AddDefaultUI() @@ -92,8 +109,8 @@ namespace Microsoft.eShopWeb.Web services.AddScoped(); - ConfigureCoreServices.Configure(services, Configuration); - ConfigureWebServices.Configure(services, Configuration); + services.AddCoreServices(Configuration); + services.AddWebServices(Configuration); // Add memory cache services services.AddMemoryCache(); @@ -124,15 +141,9 @@ namespace Microsoft.eShopWeb.Web }); // Blazor Admin Required Services for Prerendering - services.AddScoped(s => + services.AddScoped(s => new HttpClient { - var navigationManager = s.GetRequiredService(); - return new HttpClient - { - //TODO need to do it well - BaseAddress = new Uri("https://localhost:44315/") - //BaseAddress = new Uri(navigationManager.BaseUri) - }; + BaseAddress = new Uri(BlazorShared.Authorization.Constants.GetWebUrl(InDocker)) }); services.AddBlazoredLocalStorage(); @@ -197,6 +208,7 @@ namespace Microsoft.eShopWeb.Web endpoints.MapFallbackToFile("index.html"); }); } + } } \ No newline at end of file From 40214cc6e013b140c0d5cd35539270ffe2952300 Mon Sep 17 00:00:00 2001 From: Shady Nagy Date: Mon, 27 Jul 2020 16:07:15 +0200 Subject: [PATCH 3/4] image style added. (#433) * image style added. * JSInteropConstants added * JSInteropConstants --- src/BlazorAdmin/JavaScript/Cookies.cs | 4 ++-- src/BlazorAdmin/JavaScript/JSInteropConstants.cs | 14 ++++++++++++++ src/BlazorAdmin/JavaScript/Route.cs | 2 +- src/BlazorAdmin/wwwroot/css/admin.css | 5 +++++ 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/BlazorAdmin/JavaScript/JSInteropConstants.cs diff --git a/src/BlazorAdmin/JavaScript/Cookies.cs b/src/BlazorAdmin/JavaScript/Cookies.cs index 6be7d08..f32ba34 100644 --- a/src/BlazorAdmin/JavaScript/Cookies.cs +++ b/src/BlazorAdmin/JavaScript/Cookies.cs @@ -14,12 +14,12 @@ namespace BlazorAdmin.JavaScript public async Task DeleteCookie(string name) { - await _jsRuntime.InvokeAsync("deleteCookie", name); + await _jsRuntime.InvokeAsync(JSInteropConstants.DeleteCookie, name); } public async Task GetCookie(string name) { - return await _jsRuntime.InvokeAsync("getCookie", name); + return await _jsRuntime.InvokeAsync(JSInteropConstants.GetCookie, name); } } } diff --git a/src/BlazorAdmin/JavaScript/JSInteropConstants.cs b/src/BlazorAdmin/JavaScript/JSInteropConstants.cs new file mode 100644 index 0000000..0211517 --- /dev/null +++ b/src/BlazorAdmin/JavaScript/JSInteropConstants.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace BlazorAdmin.JavaScript +{ + public static class JSInteropConstants + { + public static string DeleteCookie => "deleteCookie"; + public static string GetCookie => "getCookie"; + public static string RouteOutside => "routeOutside"; + } +} diff --git a/src/BlazorAdmin/JavaScript/Route.cs b/src/BlazorAdmin/JavaScript/Route.cs index c0da7a1..1a85d6a 100644 --- a/src/BlazorAdmin/JavaScript/Route.cs +++ b/src/BlazorAdmin/JavaScript/Route.cs @@ -14,7 +14,7 @@ namespace BlazorAdmin.JavaScript public async Task RouteOutside(string path) { - await _jsRuntime.InvokeAsync("routeOutside", path); + await _jsRuntime.InvokeAsync(JSInteropConstants.RouteOutside, path); } } } diff --git a/src/BlazorAdmin/wwwroot/css/admin.css b/src/BlazorAdmin/wwwroot/css/admin.css index dc8ed72..a76546c 100644 --- a/src/BlazorAdmin/wwwroot/css/admin.css +++ b/src/BlazorAdmin/wwwroot/css/admin.css @@ -145,6 +145,11 @@ admin { height: auto; } +.esh-picture { + height: 100%; + width: 100%; +} + @media (max-width: 767.98px) { .main .top-row:not(.auth) { display: none; From ec5ffefb31fb610d871348c109bdbdfae896fee2 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Mon, 27 Jul 2020 12:07:31 -0400 Subject: [PATCH 4/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6aae128..936e391 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ You can run the Web sample by running these commands from the root folder (where docker-compose up ``` -You should be able to make requests to localhost:5106 for the Web project, and localhost:5200 for the Public API project once these commands complete. +You should be able to make requests to localhost:5106 for the Web project, and localhost:5200 for the Public API project once these commands complete. If you have any problems, especially with login, try from a new guest or incognito browser instance. You can also run the applications by using the instructions located in their `Dockerfile` file in the root of each project. Again, run these commands from the root of the solution (where the .sln file is located).