diff --git a/client/src/main/java/com/kritsit/casetracker/client/domain/services/Administrator.java b/client/src/main/java/com/kritsit/casetracker/client/domain/services/Administrator.java index 5970861..193417c 100644 --- a/client/src/main/java/com/kritsit/casetracker/client/domain/services/Administrator.java +++ b/client/src/main/java/com/kritsit/casetracker/client/domain/services/Administrator.java @@ -60,7 +60,13 @@ private Staff parseUser(Map inputMap){ String lastname = (String) inputMap.get("lastname"); String department = (String) inputMap.get("department"); String position = (String) inputMap.get("position"); - Permission permission = (Permission) inputMap.get("permission"); + Permission permission; + try{ + permission = Permission.valueOf((String) inputMap.get("permission")); + } + catch(IllegalArgumentException e){ + permission = null; + } Staff staff = new Staff(username, firstname, lastname, department, position, permission); return staff; } @@ -111,8 +117,9 @@ private InputToModelParseResult validate(Map inputMap){ for(Map.Entry entry : inputMap.entrySet()){ if(entry.getKey().equals("firstname")) continue; if(entry.getKey().equals("position")) continue; - if(entry.getKey().equals("permission")&& entry.getValue() instanceof Permission) continue; + IValidator validator = new StringValidator(); + if(validator.validate(entry.getValue())){ continue; } else{ diff --git a/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/AdministratorController.java b/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/AdministratorController.java index 374db57..e9f1704 100644 --- a/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/AdministratorController.java +++ b/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/AdministratorController.java @@ -140,14 +140,17 @@ private void addUser() { alert.setHeaderText("New user added succesfully"); alert.setContentText("Click OK to proceed"); alert.showAndWait(); + resetPassword(txfAddUsername.getText()); + resetAddUserTab(); + initStaffTable(); } else{ Alert alert = new Alert(AlertType.ERROR); alert.setTitle("Error"); alert.setHeaderText("Error adding new user"); alert.setContentText(result.getReason()); alert.showAndWait(); - } - resetAddUserTab(); + } + } private void editUser(){ @@ -218,6 +221,7 @@ private void deleteUser() { alert.showAndWait(); break; } + initStaffTable(); } public void setStage(Stage stage) { @@ -225,7 +229,7 @@ public void setStage(Stage stage) { } @SuppressWarnings("unchecked") - private void initStaffTable(){ + protected void initStaffTable(){ logger.info("Initiating staff list table"); staffList = FXCollections.observableArrayList(administratorService.getInspectors()); @@ -278,7 +282,7 @@ private void resetAddUserTab(){ private void initPermissionCombobox(){ ObservableList permissions = - FXCollections.observableArrayList("All", Permission.ADMIN.toString(), + FXCollections.observableArrayList(Permission.ADMIN.toString(), Permission.EDITOR.toString(), Permission.VIEWER.toString()); cbxAddPermission.setItems(permissions); } @@ -322,6 +326,31 @@ private void resetPassword(){ alert.showAndWait(); break; + case 500 : + alert = new Alert(AlertType.ERROR); + alert.setTitle("Password reset"); + alert.setHeaderText("Error during password reset"); + alert.setContentText("Error occured on the server side"); + alert.showAndWait(); + break; + } + } + + private void resetPassword(String username){ + Alert alert; + String randomPass = administratorService.randomPassword(); + int hashedRandomPass = randomPass.hashCode(); + int result = administratorService.resetPassword( + username, hashedRandomPass); + switch(result){ + case 200 : + alert = new Alert(AlertType.INFORMATION); + alert.setTitle("Password"); + alert.setHeaderText("Password for user "+username+" set succesfully"); + alert.setContentText("new password: "+randomPass); + alert.showAndWait(); + break; + case 500 : alert = new Alert(AlertType.ERROR); alert.setTitle("Password reset"); diff --git a/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/EditUserController.java b/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/EditUserController.java index 18ba151..e34736f 100644 --- a/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/EditUserController.java +++ b/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/EditUserController.java @@ -59,7 +59,7 @@ private void updateUser(){ inputMap.put("lastname", lastNameField.getText()); inputMap.put("department", departmentCombobox.getValue()); inputMap.put("position", positionField.getText()); - inputMap.put("permission", permissionCombobox.getValue()); + inputMap.put("permission", permissionCombobox.getValue().toString()); InputToModelParseResult result = administratorService.editUser(inputMap); if(result.isSuccessful()){ @@ -67,7 +67,7 @@ private void updateUser(){ alert.setTitle("Editing user"); alert.setHeaderText("User "+usernameField.getText()+" edited successfully"); alert.setContentText("Click OK to proceed"); - c.updateTable(); + c.initStaffTable(); alert.showAndWait(); } else{ diff --git a/client/src/test/java/com/kritsit/casetracker/client/domain/services/AdministratorTest.java b/client/src/test/java/com/kritsit/casetracker/client/domain/services/AdministratorTest.java index a61742b..4b84c4f 100644 --- a/client/src/test/java/com/kritsit/casetracker/client/domain/services/AdministratorTest.java +++ b/client/src/test/java/com/kritsit/casetracker/client/domain/services/AdministratorTest.java @@ -233,9 +233,9 @@ public void testAddUser_allFieldsFilled() { String lastname = "Doe"; String department = "IT"; String position = "admin"; - Permission permission = Permission.ADMIN; + String permission = "ADMIN"; - Staff staff = new Staff(username, firstname, lastname, department, position, permission); + Staff staff = new Staff(username, firstname, lastname, department, position, Permission.valueOf(permission)); inputMap.put("username", username); inputMap.put("firstname", firstname); @@ -261,9 +261,9 @@ public void testEditUser_allFieldsFilled() { String lastname = "Doe"; String department = "IT"; String position = "admin"; - Permission permission = Permission.ADMIN; + String permission = "ADMIN"; - Staff staff = new Staff(username, firstname, lastname, department, position, permission); + Staff staff = new Staff(username, firstname, lastname, department, position, Permission.valueOf(permission)); inputMap.put("username", username); inputMap.put("firstname", firstname);