From d06eda6fd633dae8efae17900234bb69e057161c Mon Sep 17 00:00:00 2001 From: ChaosEngine Date: Mon, 9 Dec 2019 00:14:09 +0100 Subject: [PATCH 01/42] Refactorization of route and authorization config to be fully configurable. TitleNavBarLinkTarget: make title link to point to custom target --- .../Api/Controllers/PageController.cs | 3 +- .../Assets/EmbeddedHtmlResult.cs | 9 ++-- .../Assets/Scripts/App/ttIdmApp.js | 5 +- src/IdentityManager2/Assets/Scripts/Bundle.js | 5 +- .../Assets/Templates/navbar.html | 2 +- ...ntityManagerServiceCollectionExtensions.cs | 54 ++++++++++--------- .../Configuration/IdentityManagerOptions.cs | 2 + .../Configuration/SecurityConfiguration.cs | 4 +- 8 files changed, 48 insertions(+), 36 deletions(-) diff --git a/src/IdentityManager2/Api/Controllers/PageController.cs b/src/IdentityManager2/Api/Controllers/PageController.cs index 5bc6f97..c5b0453 100644 --- a/src/IdentityManager2/Api/Controllers/PageController.cs +++ b/src/IdentityManager2/Api/Controllers/PageController.cs @@ -32,7 +32,8 @@ public async Task Index() Model = JsonConvert.SerializeObject(new { PathBase = Request.PathBase, - ShowLoginButton = !authResult.Succeeded + ShowLoginButton = !authResult.Succeeded, + TitleNavBarLinkTarget = this.config.TitleNavBarLinkTarget }) }); } diff --git a/src/IdentityManager2/Assets/EmbeddedHtmlResult.cs b/src/IdentityManager2/Assets/EmbeddedHtmlResult.cs index cbe0395..e176c93 100644 --- a/src/IdentityManager2/Assets/EmbeddedHtmlResult.cs +++ b/src/IdentityManager2/Assets/EmbeddedHtmlResult.cs @@ -11,13 +11,13 @@ internal class EmbeddedHtmlResult : IActionResult { private readonly string path; private readonly string file; - private readonly SecurityConfiguration securityConfiguration; + private readonly IdentityManagerOptions options; - public EmbeddedHtmlResult(PathString pathBase, string file, SecurityConfiguration securityConfiguration) + public EmbeddedHtmlResult(PathString pathBase, string file, IdentityManagerOptions options) { path = pathBase.Value; this.file = file; - this.securityConfiguration = securityConfiguration; + this.options = options; } public async Task ExecuteResultAsync(ActionContext context) @@ -29,7 +29,8 @@ public async Task ExecuteResultAsync(ActionContext context) model = JsonConvert.SerializeObject(new { PathBase = path, - ShowLoginButton = securityConfiguration.ShowLoginButton + ShowLoginButton = options.SecurityConfiguration.ShowLoginButton, + TitleNavBarLinkTarget = options.TitleNavBarLinkTarget }) }); diff --git a/src/IdentityManager2/Assets/Scripts/App/ttIdmApp.js b/src/IdentityManager2/Assets/Scripts/App/ttIdmApp.js index 35ac24b..272987c 100644 --- a/src/IdentityManager2/Assets/Scripts/App/ttIdmApp.js +++ b/src/IdentityManager2/Assets/Scripts/App/ttIdmApp.js @@ -18,7 +18,7 @@ config.$inject = ["PathBase", "$routeProvider"]; app.config(config); - function LayoutCtrl($rootScope, PathBase, idmApi, $location, $window, idmErrorService, ShowLoginButton) { + function LayoutCtrl($rootScope, PathBase, idmApi, $location, $window, idmErrorService, ShowLoginButton, TitleNavBarLinkTarget) { $rootScope.PathBase = PathBase; $rootScope.layout = {}; @@ -30,6 +30,7 @@ $rootScope.layout.links = null; $rootScope.layout.showLogout = !ShowLoginButton; $rootScope.layout.showLogin = ShowLoginButton; + $rootScope.layout.titleNavBarLinkTarget = TitleNavBarLinkTarget; } function load() { @@ -59,6 +60,6 @@ $window.location = PathBase + "/api/logout"; }; } - LayoutCtrl.$inject = ["$rootScope", "PathBase", "idmApi", "$location", "$window", "idmErrorService", "ShowLoginButton"]; + LayoutCtrl.$inject = ["$rootScope", "PathBase", "idmApi", "$location", "$window", "idmErrorService", "ShowLoginButton", "TitleNavBarLinkTarget"]; app.controller("LayoutCtrl", LayoutCtrl); })(angular); diff --git a/src/IdentityManager2/Assets/Scripts/Bundle.js b/src/IdentityManager2/Assets/Scripts/Bundle.js index f5c04cd..e03bcf6 100644 --- a/src/IdentityManager2/Assets/Scripts/Bundle.js +++ b/src/IdentityManager2/Assets/Scripts/Bundle.js @@ -1169,7 +1169,7 @@ p.directive("ngView",v);p.directive("ngView",A);v.$inject=["$route","$anchorScro config.$inject = ["PathBase", "$routeProvider"]; app.config(config); - function LayoutCtrl($rootScope, PathBase, idmApi, $location, $window, idmErrorService, ShowLoginButton) { + function LayoutCtrl($rootScope, PathBase, idmApi, $location, $window, idmErrorService, ShowLoginButton, TitleNavBarLinkTarget) { $rootScope.PathBase = PathBase; $rootScope.layout = {}; @@ -1181,6 +1181,7 @@ p.directive("ngView",v);p.directive("ngView",A);v.$inject=["$route","$anchorScro $rootScope.layout.links = null; $rootScope.layout.showLogout = !ShowLoginButton; $rootScope.layout.showLogin = ShowLoginButton; + $rootScope.layout.titleNavBarLinkTarget = TitleNavBarLinkTarget; } function load() { @@ -1210,6 +1211,6 @@ p.directive("ngView",v);p.directive("ngView",A);v.$inject=["$route","$anchorScro $window.location = PathBase + "/api/logout"; }; } - LayoutCtrl.$inject = ["$rootScope", "PathBase", "idmApi", "$location", "$window", "idmErrorService", "ShowLoginButton"]; + LayoutCtrl.$inject = ["$rootScope", "PathBase", "idmApi", "$location", "$window", "idmErrorService", "ShowLoginButton", "TitleNavBarLinkTarget"]; app.controller("LayoutCtrl", LayoutCtrl); })(angular); diff --git a/src/IdentityManager2/Assets/Templates/navbar.html b/src/IdentityManager2/Assets/Templates/navbar.html index e437f0a..0b7d329 100644 --- a/src/IdentityManager2/Assets/Templates/navbar.html +++ b/src/IdentityManager2/Assets/Templates/navbar.html @@ -1,6 +1,6 @@