Ombi/PlexRequests.UI/Modules/UserManagementModule.cs
tidusjar cbfe88cd6d Added the ability to get the apikey from the api if you provide a correct username and password.
Added more unit tests
Added the ability to change a users password using the api
refactored the Usermapper and made it unit testsable.

Also api documentation for the new endpoints too.

#222 #205
2016-05-20 10:44:02 +01:00

69 lines
2.1 KiB
C#

using System.Collections.Generic;
using Nancy;
using Nancy.Responses.Negotiation;
using Nancy.Security;
using PlexRequests.Core;
using PlexRequests.Core.SettingModels;
using PlexRequests.Helpers;
using PlexRequests.UI.Models;
namespace PlexRequests.UI.Modules
{
public class UserManagementModule : BaseModule
{
public UserManagementModule(ISettingsService<PlexRequestSettings> pr, ICustomUserMapper m) : base("usermanagement",pr)
{
this.RequiresClaims(UserClaims.Admin);
Get["/"] = x => Load();
Get["/users"] = x => LoadUsers();
UserMapper = m;
}
private ICustomUserMapper UserMapper { get; }
private Negotiator Load()
{
return View["Index"];
}
private Response LoadUsers()
{
var users = UserMapper.GetUsers();
var model = new List<UserManagementUsersViewModel>();
foreach (var user in users)
{
model.Add(new UserManagementUsersViewModel
{
//Claims = ByteConverterHelper.ReturnObject<string[]>(user.Claims),
Claims = "test",
Id = user.Id,
Username = user.UserName,
//Type = UserType.LocalUser
});
}
return Response.AsJson(users);
}
private Response CreateUser(string username, string password, string claims)
{
if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
{
return Response.AsJson(new JsonResponseModel
{
Result = true,
Message = "Please enter in a valid Username and Password"
});
}
var user = UserMapper.CreateUser(username, password, new string[] {claims});
if (user.HasValue)
{
return Response.AsJson(new JsonResponseModel {Result = true});
}
return Response.AsJson(new JsonResponseModel {Result = false, Message = "Could not save user"});
}
}
}