Fixed exception and all areas will now use the base url #72

pull/158/head
tidusjar 9 years ago
parent 866b6d6d6d
commit 6dea8b7440

@ -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<IUserMapper, UserMapper>();
container.Register<ISqliteConfiguration, DbConfiguration>(new DbConfiguration(new SqliteFactory()));
container.Register<ICacheProvider, MemoryCacheProvider>();
container.Register<ICacheProvider, MemoryCacheProvider>().AsSingleton();
// Settings
container.Register<ISettingsService<PlexRequestSettings>, SettingsServiceV2<PlexRequestSettings>>();
@ -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)

@ -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<T>() where T : class
{
if (Container != null)

@ -56,7 +56,7 @@ using Nancy.Security;
namespace PlexRequests.UI.Modules
{
public class AdminModule : NancyModule
public class AdminModule : BaseModule
{
private ISettingsService<PlexRequestSettings> PrService { get; }
private ISettingsService<CouchPotatoSettings> 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()

@ -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<ISettingsService<PlexRequestSettings>>().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<ISettingsService<PlexRequestSettings>>().GetSettings();
var baseUrl = settings.BaseUrl;
BaseUrl = baseUrl;
var settingModulePath = string.IsNullOrEmpty(baseUrl) ? modulePath : $"{baseUrl}/{modulePath}";

@ -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");
}
}
}

@ -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;

@ -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)

Loading…
Cancel
Save