mirror of https://github.com/Ombi-app/Ombi
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.0 KiB
70 lines
2.0 KiB
using System;
|
|
using System.Dynamic;
|
|
|
|
using Nancy;
|
|
using Nancy.Authentication.Forms;
|
|
using Nancy.Extensions;
|
|
|
|
using RequestPlex.Core;
|
|
|
|
namespace RequestPlex.UI.Modules
|
|
{
|
|
public class LoginModule : NancyModule
|
|
{
|
|
public LoginModule()
|
|
{
|
|
Get["/login"] = _ =>
|
|
{
|
|
{
|
|
dynamic model = new ExpandoObject();
|
|
model.Errored = Request.Query.error.HasValue;
|
|
|
|
return View["Login/Index", model];
|
|
}
|
|
|
|
};
|
|
|
|
Get["/logout"] = x => this.LogoutAndRedirect("~/");
|
|
|
|
Post["/login"] = x =>
|
|
{
|
|
|
|
var userId = UserMapper.ValidateUser((string)this.Request.Form.Username, (string)this.Request.Form.Password);
|
|
|
|
if (userId == null)
|
|
{
|
|
return this.Context.GetRedirect("~/login?error=true&username=" + (string)this.Request.Form.Username);
|
|
}
|
|
DateTime? expiry = null;
|
|
if (Request.Form.RememberMe.HasValue)
|
|
{
|
|
expiry = DateTime.Now.AddDays(7);
|
|
}
|
|
return this.LoginAndRedirect(userId.Value, expiry);
|
|
};
|
|
|
|
Get["/register"] = x => {
|
|
{
|
|
dynamic model = new ExpandoObject();
|
|
model.Errored = Request.Query.error.HasValue;
|
|
|
|
return View["Login/Register", model];
|
|
}
|
|
|
|
};
|
|
|
|
Post["/register"] = x =>
|
|
{
|
|
var exists = UserMapper.DoUsersExist();
|
|
if (exists)
|
|
{
|
|
return Context.GetRedirect("~/register?error=true&username=" + (string)Request.Form.Username);
|
|
}
|
|
var userId = UserMapper.CreateUser(Request.Form.Username, Request.Form.Password);
|
|
return this.LoginAndRedirect((Guid)userId);
|
|
};
|
|
|
|
|
|
}
|
|
}
|
|
} |