diff --git a/PlexRequests.UI/Content/app/userManagement/userManagementController.js b/PlexRequests.UI/Content/app/userManagement/userManagementController.js index 3cad457f0..a920739d4 100644 --- a/PlexRequests.UI/Content/app/userManagement/userManagementController.js +++ b/PlexRequests.UI/Content/app/userManagement/userManagementController.js @@ -25,6 +25,7 @@ errorMessage: "" }; + var ReadOnlyPermission = "Read Only User"; var open = false; // Select a user to populate on the right side @@ -63,14 +64,12 @@ // Create a user, do some validation too $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; } - if ($scope.selectedPermissions.length === 0) { $scope.error.error = true; $scope.error.errorMessage = "Please select a permission"; @@ -78,6 +77,16 @@ return; } + var hasReadOnly = $scope.selectedPermissions.indexOf(ReadOnlyPermission) !== -1; + if (hasReadOnly) { + if ($scope.selectedPermissions.length > 1) { + $scope.error.error = true; + $scope.error.errorMessage = "Cannot have the " + ReadOnlyPermission + " permission with other permissions."; + generateNotify($scope.error.errorMessage, 'danger'); + return; + } + } + userManagementService.addUser($scope.user, $scope.selectedPermissions, $scope.selectedFeatures) .then(function (data) { if (data.message) { @@ -86,17 +95,8 @@ } else { $scope.users.push(data.data); // Push the new user into the array to update the DOM $scope.user = {}; - $scope.selectedPermissions = {}; // Clear the checkboxes - $scope.selectedFeatures = {}; - $scope.features.forEach(function (entry) { - entry.selected = false; - }); - $scope.permissions.forEach(function (entry) { - entry.selected = false; - }); - - - } + clearCheckboxes(); + }; }); }; @@ -159,7 +159,7 @@ return; } - $scope.closeSidebarClick = function() { + $scope.closeSidebarClick = function () { return closeSidebar(); } @@ -178,6 +178,17 @@ $("#wrapper").toggleClass("toggled"); } } + + function clearCheckboxes() { + $scope.selectedPermissions = {}; // Clear the checkboxes + $scope.selectedFeatures = {}; + $scope.features.forEach(function (entry) { + entry.selected = false; + }); + $scope.permissions.forEach(function (entry) { + entry.selected = false; + }); + } } function successCallback(message, type) { diff --git a/PlexRequests.UI/NinjectModules/ConfigurationModule.cs b/PlexRequests.UI/NinjectModules/ConfigurationModule.cs index bbf57a660..fee5ba0d9 100644 --- a/PlexRequests.UI/NinjectModules/ConfigurationModule.cs +++ b/PlexRequests.UI/NinjectModules/ConfigurationModule.cs @@ -32,6 +32,7 @@ using Ninject.Modules; using PlexRequests.Core; using PlexRequests.Core.Migration; using PlexRequests.Core.StatusChecker; +using PlexRequests.Core.Users; using PlexRequests.Helpers; using PlexRequests.Services.Interfaces; using PlexRequests.Services.Notification; @@ -61,6 +62,7 @@ namespace PlexRequests.UI.NinjectModules Bind().To(); Bind().To(); + Bind().To(); } } } \ No newline at end of file diff --git a/PlexRequests.UI/Views/Admin/UserManagementSettings.cshtml b/PlexRequests.UI/Views/Admin/UserManagementSettings.cshtml index 4138e1f98..641de53ad 100644 --- a/PlexRequests.UI/Views/Admin/UserManagementSettings.cshtml +++ b/PlexRequests.UI/Views/Admin/UserManagementSettings.cshtml @@ -24,10 +24,7 @@

Features

@Html.Checkbox(Model.RecentlyAddedNewsletter, "RecentlyAddedNewsletter", "Recently Added Newsletter"); @Html.Checkbox(Model.RecentlyAddedNotification, "RecentlyAddedNotification", "Recently Added Notifications"); - - - - +