From 6dea8b74401988711fbbe06d8bdc9cddcebd3a34 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Thu, 14 Apr 2016 17:19:55 +0100 Subject: [PATCH] Fixed exception and all areas will now use the base url #72 --- PlexRequests.UI/Bootstrapper.cs | 9 ++++----- PlexRequests.UI/Helpers/ServiceLocator.cs | 6 +++++- PlexRequests.UI/Modules/AdminModule.cs | 13 ++++++++++--- PlexRequests.UI/Modules/BaseModule.cs | 3 +++ PlexRequests.UI/Modules/IndexModule.cs | 5 +++-- PlexRequests.UI/Modules/LoginModule.cs | 8 ++++---- PlexRequests.UI/Modules/UserLoginModule.cs | 4 +++- 7 files changed, 32 insertions(+), 16 deletions(-) diff --git a/PlexRequests.UI/Bootstrapper.cs b/PlexRequests.UI/Bootstrapper.cs index 4700313c0..6e540dbaf 100644 --- a/PlexRequests.UI/Bootstrapper.cs +++ b/PlexRequests.UI/Bootstrapper.cs @@ -26,7 +26,7 @@ #endregion using System.Net; -using FluentScheduler; + using Mono.Data.Sqlite; using Nancy; @@ -40,7 +40,6 @@ using Nancy.TinyIoc; using PlexRequests.Api; using PlexRequests.Api.Interfaces; -using PlexRequests.Api.Mocks; using PlexRequests.Core; using PlexRequests.Core.SettingModels; using PlexRequests.Helpers; @@ -51,8 +50,6 @@ using PlexRequests.Store; using PlexRequests.Store.Models; using PlexRequests.Store.Repository; using PlexRequests.UI.Helpers; -using PlexRequests.UI.Jobs; -using TaskFactory = FluentScheduler.TaskFactory; namespace PlexRequests.UI { @@ -67,7 +64,7 @@ namespace PlexRequests.UI { container.Register(); container.Register(new DbConfiguration(new SqliteFactory())); - container.Register(); + container.Register().AsSingleton(); // Settings container.Register, SettingsServiceV2>(); @@ -109,6 +106,8 @@ namespace PlexRequests.UI SubscribeAllObservers(container); base.ConfigureRequestContainer(container, context); + var loc = ServiceLocator.Instance; + loc.SetContainer(container); } protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) diff --git a/PlexRequests.UI/Helpers/ServiceLocator.cs b/PlexRequests.UI/Helpers/ServiceLocator.cs index 8941b0b57..c957bacbb 100644 --- a/PlexRequests.UI/Helpers/ServiceLocator.cs +++ b/PlexRequests.UI/Helpers/ServiceLocator.cs @@ -35,9 +35,13 @@ namespace PlexRequests.UI.Helpers Singleton = new ServiceLocator(); } private static ServiceLocator Singleton { get; } - private TinyIoCContainer Container => TinyIoCContainer.Current; + private TinyIoCContainer Container { get; set; } public static ServiceLocator Instance => Singleton; + public void SetContainer(TinyIoCContainer con) + { + Container = con; + } public T Resolve() where T : class { if (Container != null) diff --git a/PlexRequests.UI/Modules/AdminModule.cs b/PlexRequests.UI/Modules/AdminModule.cs index 631cc7fe9..9dc93cb38 100644 --- a/PlexRequests.UI/Modules/AdminModule.cs +++ b/PlexRequests.UI/Modules/AdminModule.cs @@ -56,7 +56,7 @@ using Nancy.Security; namespace PlexRequests.UI.Modules { - public class AdminModule : NancyModule + public class AdminModule : BaseModule { private ISettingsService PrService { get; } private ISettingsService CpService { get; } @@ -181,8 +181,16 @@ namespace PlexRequests.UI.Modules var result = AuthService.SaveSettings(model); if (result) { + if (!string.IsNullOrEmpty(BaseUrl)) + { + return Context.GetRedirect($"~/{BaseUrl}/admin/authentication"); + } return Context.GetRedirect("~/admin/authentication"); } + if (!string.IsNullOrEmpty(BaseUrl)) + { + return Context.GetRedirect($"~/{BaseUrl}/error"); //TODO create error page + } return Context.GetRedirect("~/error"); //TODO create error page } @@ -201,8 +209,7 @@ namespace PlexRequests.UI.Modules PrService.SaveSettings(model); - - return Context.GetRedirect("~/admin"); + return Context.GetRedirect(!string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/admin" : "~/admin"); } private Response RequestAuthToken() diff --git a/PlexRequests.UI/Modules/BaseModule.cs b/PlexRequests.UI/Modules/BaseModule.cs index 7048d09dd..0fbcbd8bb 100644 --- a/PlexRequests.UI/Modules/BaseModule.cs +++ b/PlexRequests.UI/Modules/BaseModule.cs @@ -35,10 +35,12 @@ namespace PlexRequests.UI.Modules public class BaseModule : NancyModule { protected ServiceLocator Locator => ServiceLocator.Instance; + protected string BaseUrl { get; set; } public BaseModule() { var settings = Locator.Resolve>().GetSettings(); var baseUrl = settings.BaseUrl; + BaseUrl = baseUrl; var modulePath = string.IsNullOrEmpty(baseUrl) ? string.Empty : baseUrl; @@ -49,6 +51,7 @@ namespace PlexRequests.UI.Modules { var settings = Locator.Resolve>().GetSettings(); var baseUrl = settings.BaseUrl; + BaseUrl = baseUrl; var settingModulePath = string.IsNullOrEmpty(baseUrl) ? modulePath : $"{baseUrl}/{modulePath}"; diff --git a/PlexRequests.UI/Modules/IndexModule.cs b/PlexRequests.UI/Modules/IndexModule.cs index bb099889c..46b54e098 100644 --- a/PlexRequests.UI/Modules/IndexModule.cs +++ b/PlexRequests.UI/Modules/IndexModule.cs @@ -33,8 +33,9 @@ namespace PlexRequests.UI.Modules { public IndexModule() { - Get["/"] = parameters => Context.GetRedirect("~/search"); - Get["/Index"] = parameters => Context.GetRedirect("~/search"); + Get["/"] = parameters => Context.GetRedirect(!string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/search" : "~/search"); + + Get["/Index"] = parameters => Context.GetRedirect(!string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/search" : "~/search"); } } } \ No newline at end of file diff --git a/PlexRequests.UI/Modules/LoginModule.cs b/PlexRequests.UI/Modules/LoginModule.cs index 6750b2c4c..63b500b6a 100644 --- a/PlexRequests.UI/Modules/LoginModule.cs +++ b/PlexRequests.UI/Modules/LoginModule.cs @@ -38,7 +38,7 @@ using PlexRequests.UI.Models; namespace PlexRequests.UI.Modules { - public class LoginModule : NancyModule + public class LoginModule : BaseModule { public LoginModule() { @@ -54,7 +54,7 @@ namespace PlexRequests.UI.Modules }; - Get["/logout"] = x => this.LogoutAndRedirect("~/"); + Get["/logout"] = x => this.LogoutAndRedirect(!string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/" : "~/"); Post["/login"] = x => { @@ -66,7 +66,7 @@ namespace PlexRequests.UI.Modules if (userId == null) { - return Context.GetRedirect("~/login?error=true&username=" + username); + return Context.GetRedirect(!string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/login?error=true&username=" + username : "~/login?error=true&username=" + username); } DateTime? expiry = null; if (Request.Form.RememberMe.HasValue) @@ -94,7 +94,7 @@ namespace PlexRequests.UI.Modules var exists = UserMapper.DoUsersExist(); if (exists) { - return Context.GetRedirect("~/register?error=true"); + return Context.GetRedirect(!string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/register?error=true" : "~/register?error=true"); } var userId = UserMapper.CreateUser(username, Request.Form.Password, new[] { "Admin" }); Session[SessionKeys.UsernameKey] = username; diff --git a/PlexRequests.UI/Modules/UserLoginModule.cs b/PlexRequests.UI/Modules/UserLoginModule.cs index c0f629f01..903d99313 100644 --- a/PlexRequests.UI/Modules/UserLoginModule.cs +++ b/PlexRequests.UI/Modules/UserLoginModule.cs @@ -155,7 +155,9 @@ namespace PlexRequests.UI.Modules { Session.Delete(SessionKeys.UsernameKey); } - return Context.GetRedirect("~/userlogin"); + return Context.GetRedirect(!string.IsNullOrEmpty(BaseUrl) + ? $"~/{BaseUrl}/userlogin" + : "~/userlogin"); } private bool CheckIfUserIsOwner(string authToken, string userName)