diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index a09096cc6..00b346970 100755 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -71,6 +71,7 @@ screen.message.modal.access.opt.feedback=If the error persists please refer to o # Modal Add screen.message.modal.add.deptAccount=One or more departmental accounts are being added. +screen.message.modal.add.deptAccount.admin=Departmental accounts cannot be assigned as admins. screen.message.modal.add.fail=There was an error adding: screen.message.modal.add.ensureValid=Please ensure you have entered a valid UH member and try again. screen.message.modal.add.empty=You must enter a UH member to add or remove. diff --git a/src/main/resources/static/javascript/mainApp/admin.controller.js b/src/main/resources/static/javascript/mainApp/admin.controller.js index 8a25f45df..3c110a4c3 100755 --- a/src/main/resources/static/javascript/mainApp/admin.controller.js +++ b/src/main/resources/static/javascript/mainApp/admin.controller.js @@ -260,6 +260,12 @@ } groupingsService.getMemberAttributeResults([sanitizedAdmin], (res) => { + // Prevent departmental accounts from being added as admins + $scope.isDeptAccount = $scope.checkForDeptAccount(res.results); + if ($scope.isDeptAccount) { + $scope.containsDeptAcc = true; + return; + } $scope.displayAddModal({ membersAttributes: res, uhIdentifiers: sanitizedAdmin, diff --git a/src/main/resources/static/javascript/mainApp/general.controller.js b/src/main/resources/static/javascript/mainApp/general.controller.js index 031c49fb0..c24c3591c 100755 --- a/src/main/resources/static/javascript/mainApp/general.controller.js +++ b/src/main/resources/static/javascript/mainApp/general.controller.js @@ -149,6 +149,7 @@ $scope.emptySelect = false; $scope.containsInput = false; $scope.invalidInput = false; + $scope.containsDeptAcc = false; $scope.addInputError = false; $scope.removeInputError = false; }; @@ -295,6 +296,17 @@ }); }; + /** + * Checks if a member is a departmental account + * A departmental account is characterized by having the same uid as its uhUuid, or having a blank uhUuid + * @param {object[]} membersToAdd - members to add to a group or admin + * @returns {boolean} - True if a member is a departmental account + */ + $scope.checkForDeptAccount = (membersToAdd) => { + return membersToAdd.some(member => + member['uid'] === member['uhUuid'] || member['uhUuid'] === "" + ); + } } UHGroupingsApp.controller("GeneralJsController", GeneralJsController); diff --git a/src/main/resources/static/javascript/mainApp/grouping.controller.js b/src/main/resources/static/javascript/mainApp/grouping.controller.js index fc701238c..b1ab9f747 100644 --- a/src/main/resources/static/javascript/mainApp/grouping.controller.js +++ b/src/main/resources/static/javascript/mainApp/grouping.controller.js @@ -1836,19 +1836,6 @@ $scope.excludeDisable = true; } }; - - /** - * Helper - addMembers, displayAddModal - * Checks if a member is a departmental account - * A departmental account is characterized by having the same uid as its uhUuid, or having a blank uhUuid - * @param {object[]} membersToAdd - members to add to group - * @returns {boolean} - True if a member is a departmental account - */ - $scope.checkForDeptAccount = (membersToAdd) => { - return membersToAdd.some(member => - member['uid'] === member['uhUuid'] || member['uhUuid'] === "" - ); - } } function SyncDestModalController($scope, $uibModalInstance, isSynced, syncDestDescription, Message) { diff --git a/src/main/resources/templates/fragments/admin-error-messages.html b/src/main/resources/templates/fragments/admin-error-messages.html index 36e347c87..daad05e37 100644 --- a/src/main/resources/templates/fragments/admin-error-messages.html +++ b/src/main/resources/templates/fragments/admin-error-messages.html @@ -20,6 +20,12 @@ role="alert">

+ +
diff --git a/src/test/javascript/admin.controller.test.js b/src/test/javascript/admin.controller.test.js index 8381bd250..ea2897a09 100755 --- a/src/test/javascript/admin.controller.test.js +++ b/src/test/javascript/admin.controller.test.js @@ -432,12 +432,25 @@ describe("AdminController", function () { expect(scope.containsInput).toBeTrue(); }); + it("should check if the admin to add is a departmental account", () => { + scope.containsDeptAcc = false; + scope.adminToAdd = "testiwt2"; + scope.addAdmin(); + + httpBackend.expectPOST(BASE_URL + "members", ['testiwt2']).respond(200, results); + httpBackend.flush(); + + expect(scope.user).toBe(scope.adminToAdd); + expect(scope.containsDeptAcc).toBeTrue(); + }); + it("should display the add modal", () => { spyOn(scope, "displayAddModal"); - scope.adminToAdd = uhIdentifiers; + scope.adminToAdd = "testiwta"; scope.addAdmin(); - httpBackend.expectPOST(BASE_URL + "members", [uhIdentifiers]).respond(200, results); + const results = { resultCode: "SUCCESS", invalid: [], results: [{ uid: "testiwta", uhUuid: "99997010" }] }; + httpBackend.expectPOST(BASE_URL + "members", ['testiwta']).respond(200, results); httpBackend.flush(); expect(scope.user).toEqual(scope.adminToAdd);