diff --git a/PlexRequests.Api.Models/Plex/PlexFriends.cs b/PlexRequests.Api.Models/Plex/PlexFriends.cs index 6d253d53d..1c115c97a 100644 --- a/PlexRequests.Api.Models/Plex/PlexFriends.cs +++ b/PlexRequests.Api.Models/Plex/PlexFriends.cs @@ -54,7 +54,7 @@ namespace PlexRequests.Api.Models.Plex [XmlElement(ElementName = "Server")] public Server Server { get; set; } [XmlAttribute(AttributeName = "id")] - public int Id { get; set; } + public string Id { get; set; } [XmlAttribute(AttributeName = "title")] public string Title { get; set; } [XmlAttribute(AttributeName = "username")] diff --git a/PlexRequests.UI/Content/app/controllers/userManagement/userManagementController.js b/PlexRequests.UI/Content/app/controllers/userManagement/userManagementController.js index eb07c2f7b..8e74d3c2d 100644 --- a/PlexRequests.UI/Content/app/controllers/userManagement/userManagementController.js +++ b/PlexRequests.UI/Content/app/controllers/userManagement/userManagementController.js @@ -5,8 +5,20 @@ $scope.user = {}; // The local user $scope.users = []; // list of users - $scope.error = false; - $scope.errorMessage = {}; + $scope.selectedUser = {}; + + $scope.sortType = 'username'; + $scope.sortReverse = false; + $scope.searchTerm = ''; + + $scope.error = { + error: false, + errorMessage: "" + }; + + $scope.selectUser = function(id) { + $scope.selectedUser = $scope.users.find(x => x.id === id); + } $scope.getUsers = function () { $scope.users = userManagementService.getUsers() @@ -16,10 +28,16 @@ }; $scope.addUser = function () { + if (!$scope.user.username || !$scope.user.password) { + $scope.error.error = true; + $scope.error.errorMessage = "Please provide a correct username and password"; + generateNotify($scope.error.errorMessage, 'warning'); + return; + } userManagementService.addUser($scope.user).then(function (data) { if (data.message) { - $scope.error = true; - $scope.errorMessage = data.message; + $scope.error.error = true; + $scope.error.errorMessage = data.message; } else { $scope.users.push(data); $scope.user = {}; diff --git a/PlexRequests.UI/Models/UserManagementUsersViewModel.cs b/PlexRequests.UI/Models/UserManagementUsersViewModel.cs index 5a885ef9d..57fcd1f5a 100644 --- a/PlexRequests.UI/Models/UserManagementUsersViewModel.cs +++ b/PlexRequests.UI/Models/UserManagementUsersViewModel.cs @@ -1,13 +1,40 @@ -namespace PlexRequests.UI.Models +using System.Collections.Generic; + +namespace PlexRequests.UI.Models { public class UserManagementUsersViewModel { + public UserManagementUsersViewModel() + { + PlexInfo = new UserManagementPlexInformation(); + } public string Username { get; set; } public string Claims { get; set; } - public int Id { get; set; } + public string Id { get; set; } public string Alias { get; set; } public UserType Type { get; set; } public string EmailAddress { get; set; } + public UserManagementPlexInformation PlexInfo { get; set; } + } + + public class UserManagementPlexInformation + { + public UserManagementPlexInformation() + { + Servers = new List(); + } + public string Thumb { get; set; } + public List Servers { get; set; } + } + + public class UserManagementPlexServers + { + public int Id { get; set; } + public string ServerId { get; set; } + public string MachineIdentifier { get; set; } + public string Name { get; set; } + public string LastSeenAt { get; set; } + public string NumLibraries { get; set; } } public enum UserType diff --git a/PlexRequests.UI/Modules/UserManagementModule.cs b/PlexRequests.UI/Modules/UserManagementModule.cs index f160d62bd..c29eb72b0 100644 --- a/PlexRequests.UI/Modules/UserManagementModule.cs +++ b/PlexRequests.UI/Modules/UserManagementModule.cs @@ -31,7 +31,7 @@ namespace PlexRequests.UI.Modules Get["/users", true] = async (x, ct) => await LoadUsers(); Post["/createuser"] = x => CreateUser(Request.Form["userName"].ToString(), Request.Form["password"].ToString()); Get["/local/{id}"] = x => LocalDetails((Guid)x.id); - Get["/plex/{id}", true] = async (x,ct) => await PlexDetails((int)x.id); + Get["/plex/{id}", true] = async (x,ct) => await PlexDetails(x.id); } private ICustomUserMapper UserMapper { get; } @@ -56,6 +56,7 @@ namespace PlexRequests.UI.Modules model.Add(new UserManagementUsersViewModel { + Id= user.UserGuid, Claims = claimsString, Username = user.UserName, Type = UserType.LocalUser, @@ -71,13 +72,18 @@ namespace PlexRequests.UI.Modules foreach (var u in plexUsers.User) { + model.Add(new UserManagementUsersViewModel { Username = u.Username, Type = UserType.PlexUser, Id = u.Id, Claims = "Requestor", - EmailAddress = u.Email + EmailAddress = u.Email, + PlexInfo = new UserManagementPlexInformation + { + Thumb = u.Thumb + } }); } } @@ -114,7 +120,7 @@ namespace PlexRequests.UI.Modules return Nancy.Response.NoBody; } - private async Task PlexDetails(int id) + private async Task PlexDetails(string id) { var plexSettings = await PlexSettings.GetSettingsAsync(); if (!string.IsNullOrEmpty(plexSettings.PlexAuthToken)) @@ -122,7 +128,7 @@ namespace PlexRequests.UI.Modules //Get Plex Users var plexUsers = PlexApi.GetUsers(plexSettings.PlexAuthToken); - var selectedUser = plexUsers.User?.FirstOrDefault(x => x.Id == id); + var selectedUser = plexUsers.User?.FirstOrDefault(x => x.Id.ToString() == id); if (selectedUser != null) { return Response.AsJson(selectedUser); diff --git a/PlexRequests.UI/Views/UserManagement/Index.cshtml b/PlexRequests.UI/Views/UserManagement/Index.cshtml index 300b34748..b6082054d 100644 --- a/PlexRequests.UI/Views/UserManagement/Index.cshtml +++ b/PlexRequests.UI/Views/UserManagement/Index.cshtml @@ -3,50 +3,91 @@
- -
-
-
- - - - - - - - - - - - - - - - - - -
IdUsernameEmailUser Type
- {{u.username}} - - {{u.emailAddress}} - - {{u.claims}} - - {{u.type == 0 ? 'Local User' : 'Plex User'}} - {{u.type}} -
- +
+
+
+
- +
- +
- +
-
-
+
+
+
+
+ +
+ + + +
+
+
+ + + + + + + + + + + + + + + + + +
+ + Username + + + + + + Email + + + + + + User Type + + + +
+ {{u.username}} + + {{u.emailAddress}} + + {{u.claims}} + + {{u.type === 1 ? 'Local User' : 'Plex User'}} + + Details/Edit +
+ + +
+ +
+
+
+
+
+ +
+ + + \ No newline at end of file