Skip to content

Commit

Permalink
Alter user org and CoC from admin page: #75
Browse files Browse the repository at this point in the history
Make new user columns editable in the UserManager, and add them to the
admin page for editing and creating users.

Note that I added some logging to the User endpoint (#65) which should
have been added in 1976919.
  • Loading branch information
cecilia-donnelly committed Jul 27, 2016
1 parent fa3cd57 commit 986a680
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 15 deletions.
6 changes: 6 additions & 0 deletions src/main/java/org/openhmis/manager/UserManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ public static UserDTO updateUser(UserDTO inputDTO) {
TmpUser tmpUser = UserManager.generateTmpUser(inputDTO);
tmpUser.setUserId(Integer.parseInt(inputDTO.getUserId()));
tmpUser.setDateUpdated(new Date());
tmpUser.setOrganization(inputDTO.getOrganization());
tmpUser.setCoC(inputDTO.getCoC());

// Update the object
tmpUserDAO.update(tmpUser);
Expand All @@ -88,6 +90,8 @@ public static UserDTO generateUserDTO(TmpUser tmpUser) {
userDTO.setCanRead(tmpUser.getCanRead());
userDTO.setCanWrite(tmpUser.getCanWrite());
userDTO.setCanAdmin(tmpUser.getCanAdmin());
userDTO.setOrganization(tmpUser.getOrganization());
userDTO.setCoC(tmpUser.getCoC());

// Export Standard Fields (TBD: what are "Standard Fields"?)
userDTO.setDateCreated(tmpUser.getDateCreated());
Expand All @@ -103,6 +107,8 @@ public static TmpUser generateTmpUser(UserDTO inputDTO) {
tmpUser.setCanRead(inputDTO.getCanRead());
tmpUser.setCanWrite(inputDTO.getCanWrite());
tmpUser.setCanAdmin(inputDTO.getCanAdmin());
tmpUser.setOrganization(inputDTO.getOrganization());
tmpUser.setCoC(inputDTO.getCoC());

// Export Standard Fields (TBD: what are "Standard Fields"?)
tmpUser.setDateCreated(inputDTO.getDateCreated());
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/org/openhmis/webservice/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ public UserService() {}
public List<UserDTO> getUsers(@HeaderParam("Authorization") String authorization) throws JsonProcessingException {
if(!Authentication.googleAuthenticate(authorization, Authentication.ADMIN))
throw new AccessDeniedException();

List<UserDTO> userDTOs = UserManager.getUsers();
log.info("GET /users (" + userDTOs.size() + " results)");
return userDTOs;
}

Expand All @@ -55,6 +56,7 @@ public UserDTO createUser(@HeaderParam("Authorization") String authorization, Us
if(!Authentication.googleAuthenticate(authorization, Authentication.ADMIN))
throw new AccessDeniedException();
UserDTO outputDTO = UserManager.addUser(inputDTO);
log.info("POST /users (" + outputDTO.getId() + ")");
return outputDTO;
}

Expand All @@ -65,6 +67,7 @@ public UserDTO getUser(@HeaderParam("Authorization") String authorization, @Path
if(!Authentication.googleAuthenticate(authorization, Authentication.ADMIN))
throw new AccessDeniedException();
UserDTO outputDTO = UserManager.getUserById(userId);
log.info("GET /users/" + userId);
return outputDTO;
}

Expand All @@ -78,6 +81,7 @@ public UserDTO updateUser(@HeaderParam("Authorization") String authorization, @P
inputDTO.setUserId(userId);

UserDTO outputDTO = UserManager.updateUser(inputDTO);
log.info("PUT /users/" + userId);
return outputDTO;
}

Expand All @@ -88,6 +92,7 @@ public String deleteUser(@HeaderParam("Authorization") String authorization, @Pa
if(!Authentication.googleAuthenticate(authorization, Authentication.ADMIN))
throw new AccessDeniedException();
UserManager.deleteUser(userId);
log.info("DELETE /users/" + userId);
return "true";
}
}
10 changes: 9 additions & 1 deletion src/main/webapp/admin/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ <h1>OpenHMIS Admin</h1>
<label for="email">Email:</label>
<input type="email" class="form-control" id="externalId" placeholder="Email">
</div>
<div class="form-group">
<label for="organization">Organization:</label>
<input class="form-control" id="organization" placeholder="Organization">
</div>
<div class="form-group">
<label for="coc">Continuum of Care:</label>
<input class="form-control" id="coC" placeholder="CoC">
</div>
<div class="form-group">
<label for="email">Permissions:</label>
<div class="checkbox">
Expand Down Expand Up @@ -75,4 +83,4 @@ <h1>OpenHMIS Admin</h1>
</div>
</div>
</body>
</html>
</html>
38 changes: 25 additions & 13 deletions src/main/webapp/admin/js/admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,16 @@ $(function() {
$("#saveUser").click(function() {
var internalId = $("#internalId").val();
var externalId = $("#externalId").val();
var organization = $("#organization").val();
var coC = $("#coC").val();
var canAdmin = $("#canAdmin").prop("checked")?1:0;
var canRead = $("#canRead").prop("checked")?1:0;
var canWrite = $("#canWrite").prop("checked")?1:0;

var data = {
externalId: externalId,
externalId: externalId,
organization: organization,
coC: coC,
canRead: canRead,
canWrite: canWrite,
canAdmin: canAdmin
Expand All @@ -49,8 +53,8 @@ $(function() {
});

function saveUser(data, internalId) {
// Does the internal ID exist?
if(internalId) {
// Does the internal ID exist?
if(internalId) {
$.ajax({
"type": "PUT",
"url": "../api/v3/users/" + internalId,
Expand All @@ -61,7 +65,7 @@ function saveUser(data, internalId) {
"dataType": "json",
"contentType": "application/json"
}).success(function() {
reloadAdmin();
reloadAdmin();
})
} else {
$.ajax({
Expand All @@ -74,7 +78,7 @@ function saveUser(data, internalId) {
"dataType": "json",
"contentType": "application/json"
}).success(function() {
reloadAdmin();
reloadAdmin();
})
}

Expand Down Expand Up @@ -157,18 +161,20 @@ function renderAdmin() {

// Loads the latest user data and refreshes the view
function reloadAdmin() {
$("#loader").show();
$("#loader").show();
$.ajax({
"type": "GET",
"url": "../api/v3/users",
beforeSend: function (request) {
request.setRequestHeader("Authorization", idToken);
},
beforeSend: function (request) {
request.setRequestHeader("Authorization", idToken);
},
"dataType": "json"
}).success(function(data) {
var users = data.data.items;
var users = data.data.items;
var columns = [
{ title: "Email" },
{ title: "Organization" },
{ title: "Continuum of Care" },
{ title: "Read" },
{ title: "Write" },
{ title: "Admin" },
Expand All @@ -179,7 +185,9 @@ function reloadAdmin() {
for(var x in users) {
var user = users[x];
var row = [
user.externalId,
user.externalId,
user.organization,
user.coC,
user.canRead,
user.canWrite,
user.canAdmin,
Expand Down Expand Up @@ -222,13 +230,17 @@ function renderInput(user) {
$("#canAdmin").prop("checked", user.canAdmin);
$("#canRead").prop("checked", user.canRead);
$("#canWrite").prop("checked", user.canWrite);
$("#deleteUser").show();
$("#organization").val(user.organization);
$("#coC").val(user.coC);
$("#deleteUser").show();
} else {
$("#internalId").val("")
$("#externalId").val("");
$("#canAdmin").prop("checked", false);
$("#canRead").prop("checked", false);
$("#canWrite").prop("checked", false);
$("#deleteUser").hide();
$("#organization").val("");
$("#coC").val("");
$("#deleteUser").hide();
}
}

0 comments on commit 986a680

Please sign in to comment.