Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package db.migration;

import org.flywaydb.core.api.migration.jdbc.JdbcMigration;

import java.sql.Connection;
import java.sql.PreparedStatement;

public class V226__flag_preexisting_freeform_users implements JdbcMigration {
@Override
public void migrate(Connection connection) throws Exception {
PreparedStatement psUsers = connection.prepareStatement("UPDATE Users SET Placeholder = 1 WHERE LoginId LIKE 'change%';");
psUsers.execute();
psUsers.close();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
import edu.ucdavis.dss.dw.dto.DwPerson;
import edu.ucdavis.dss.ipa.api.helpers.CurrentUser;
import edu.ucdavis.dss.ipa.api.helpers.Utilities;
import edu.ucdavis.dss.ipa.entities.Instructor;
import edu.ucdavis.dss.ipa.entities.InstructorType;
import edu.ucdavis.dss.ipa.entities.Role;
import edu.ucdavis.dss.ipa.entities.User;
import edu.ucdavis.dss.ipa.entities.UserRole;
import edu.ucdavis.dss.ipa.entities.Workgroup;
import edu.ucdavis.dss.ipa.repositories.DataWarehouseRepository;
import edu.ucdavis.dss.ipa.security.Authorizer;
import edu.ucdavis.dss.ipa.services.InstructorService;
import edu.ucdavis.dss.ipa.services.InstructorTypeService;
import edu.ucdavis.dss.ipa.services.RoleService;
import edu.ucdavis.dss.ipa.services.UserRoleService;
Expand Down Expand Up @@ -40,7 +42,6 @@ public class WorkgroupViewUserController {
@Inject RoleService roleService;
@Inject UserRoleService userRoleService;
@Inject InstructorTypeService instructorTypeService;

@Inject CurrentUser currentUser;
@Inject DataWarehouseRepository dwRepository;
@Inject Authorizer authorizer;
Expand Down Expand Up @@ -253,4 +254,34 @@ public UserRole updateUserRole(@PathVariable Long userRoleId, @PathVariable Long

return userRoleService.save(userRole);
}

@RequestMapping(value = "/api/workgroups/{workgroupId}/users/placeholder", method = RequestMethod.POST)
@ResponseBody
public User createPlaceholderUser(@PathVariable Long workgroupId, @RequestBody User user, HttpServletResponse httpResponse) {
Workgroup workgroup = workgroupService.findOneById(workgroupId);

if (workgroup == null) {
httpResponse.setStatus(HttpStatus.NOT_FOUND.value());
return null;
}

authorizer.hasWorkgroupRole(workgroup.getId(), "academicPlanner");

return userService.createPlaceholder(user);
}

@RequestMapping(value = "/api/workgroups/{workgroupId}/users/placeholder/{previousLoginId}", method = RequestMethod.PUT)
@ResponseBody
public User updatePlaceholder(@PathVariable Long workgroupId, @PathVariable String previousLoginId, @RequestBody User user, HttpServletResponse httpResponse) {
Workgroup workgroup = workgroupService.findOneById(workgroupId);

if (workgroup == null) {
httpResponse.setStatus(HttpStatus.NOT_FOUND.value());
return null;
}

authorizer.hasWorkgroupRole(workgroup.getId(), "academicPlanner");

return userService.updatePlaceholder(previousLoginId, user);
}
}
6 changes: 5 additions & 1 deletion src/main/java/edu/ucdavis/dss/ipa/services/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public interface UserService {

void contact(@Valid User user, String messageBody, String subject);

void updateLastAccessed(User user);
void updateLastAccessed(User user);

List<User> findAllByWorkgroupAndRoleToken(Workgroup workgroup, String roleToken);

Expand All @@ -56,4 +56,8 @@ public interface UserService {
List<User> findAllByTeachingAssignments(List<TeachingAssignment> teachingAssignments);

List<User> findAllByWorkgroup(Workgroup workgroup);

User createPlaceholder(User user);

User updatePlaceholder(String previousLoginId, User user);
}
55 changes: 55 additions & 0 deletions src/main/java/edu/ucdavis/dss/ipa/services/jpa/JpaUserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

import edu.ucdavis.dss.dw.dto.DwPerson;
import edu.ucdavis.dss.ipa.api.helpers.Utilities;
import edu.ucdavis.dss.ipa.entities.Instructor;
import edu.ucdavis.dss.ipa.entities.LineItem;
import edu.ucdavis.dss.ipa.entities.TeachingAssignment;
import edu.ucdavis.dss.ipa.entities.User;
import edu.ucdavis.dss.ipa.entities.UserRole;
import edu.ucdavis.dss.ipa.entities.Workgroup;
import edu.ucdavis.dss.ipa.repositories.DataWarehouseRepository;
import edu.ucdavis.dss.ipa.repositories.InstructorRepository;
import edu.ucdavis.dss.ipa.repositories.UserRepository;
import edu.ucdavis.dss.ipa.services.UserService;
import edu.ucdavis.dss.ipa.utilities.EmailService;
Expand All @@ -27,6 +29,7 @@ public class JpaUserService implements UserService {
@Inject UserRepository userRepository;
@Inject DataWarehouseRepository dwRepository;
@Inject EmailService emailService;
@Inject InstructorRepository instructorRepository;

@Override
public User save(User user)
Expand Down Expand Up @@ -192,6 +195,58 @@ public List<User> findAllByWorkgroup(Workgroup workgroup) {
return users;
}

/**
* Creates a user and instructor entity for the user
* @param user
* @return
*/
@Override
public User createPlaceholder(User user) {
String loginId = "changeme" + user.getLastName();
User previouslyCreatedUser = userRepository.findByLoginId(loginId);

// Should do nothing, placeholder is unnecessary as this user already exists
if (previouslyCreatedUser != null) {
return previouslyCreatedUser;
}

user.setLoginId(loginId);
user.setPlaceholder(true);
user = this.save(user);

// Make placeholder instructor
Instructor instructor = new Instructor();
instructor.setEmail(user.getEmail());
instructor.setFirstName(user.getFirstName());
instructor.setLastName(user.getLastName());
instructor.setLoginId(user.getLoginId());
instructorRepository.save(instructor);

return user;
}

@Override
public User updatePlaceholder(String previousLoginId, User user) {

User previouslyCreatedUser = userRepository.findByLoginId(previousLoginId);
previouslyCreatedUser.setLoginId(user.getLoginId());
previouslyCreatedUser.setFirstName(user.getFirstName());
previouslyCreatedUser.setLastName(user.getLastName());
previouslyCreatedUser.setEmail(user.getEmail());
previouslyCreatedUser.setDisplayName(user.getDisplayName());
previouslyCreatedUser.setPlaceholder(false);
previouslyCreatedUser = this.save(previouslyCreatedUser);

Instructor previouslyCreatedInstructor = instructorRepository.findByLoginIdIgnoreCase(previousLoginId);
previouslyCreatedInstructor.setLoginId(user.getLoginId());
previouslyCreatedInstructor.setLastName(user.getLastName());
previouslyCreatedInstructor.setFirstName(user.getFirstName());
previouslyCreatedInstructor.setEmail(user.getEmail());
instructorRepository.save(previouslyCreatedInstructor);

return previouslyCreatedUser;
}

@Override
public List<User> findAllByTeachingAssignments(List<TeachingAssignment> teachingAssignments) {
List<User> users = new ArrayList<>();
Expand Down