Skip to content

Commit fc1fe6e

Browse files
Change password from null to random string. Set firstname to be more random so we can generate unique usernames more often. Set locale, last login time and language.
1 parent 5020256 commit fc1fe6e

2 files changed

Lines changed: 16 additions & 9 deletions

File tree

src/main/java/org/wise/portal/presentation/web/controllers/survey/SurveyAPIController.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121

2222
import java.io.IOException;
2323
import java.util.Date;
24+
import java.util.Locale;
2425

2526
import javax.servlet.http.HttpServletRequest;
2627
import javax.servlet.http.HttpServletResponse;
2728
import javax.servlet.http.HttpSession;
2829

30+
import org.apache.commons.lang3.RandomStringUtils;
2931
import org.springframework.beans.factory.annotation.Autowired;
3032
import org.springframework.security.authentication.AuthenticationManager;
3133
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -91,8 +93,9 @@ && isStudentAssociatedWithRun(run, (StudentUserDetails) principal)) {
9193
SecurityContextHolder.getContext().setAuthentication(null);
9294
}
9395
if (underWorkgroupLimit(run)) {
94-
User user = this.createNewStudentAccount();
95-
loginStudent(request, user);
96+
String password = RandomStringUtils.randomAlphanumeric(10);
97+
User user = this.createNewStudentAccount(request.getLocale(), password);
98+
loginStudent(request, user, password);
9699
studentService.addStudentToRun(user, projectCode);
97100
sendRedirect(response, "/student/unit/" + run.getId());
98101
} else {
@@ -116,26 +119,28 @@ private boolean underWorkgroupLimit(Run run) {
116119
return workgroupService.getWorkgroupsForRun(run).size() <= 1000;
117120
}
118121

119-
private void loginStudent(HttpServletRequest request, User user) {
122+
private void loginStudent(HttpServletRequest request, User user, String password) {
120123
UsernamePasswordAuthenticationToken authReq = new UsernamePasswordAuthenticationToken(
121-
user.getUserDetails().getUsername(), "null");
124+
user.getUserDetails().getUsername(), password);
122125
Authentication auth = authenticationManager.authenticate(authReq);
123126
SecurityContext sc = SecurityContextHolder.getContext();
124127
sc.setAuthentication(auth);
125128
HttpSession session = request.getSession(true);
126129
session.setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, sc);
127130
}
128131

129-
private User createNewStudentAccount()
132+
private User createNewStudentAccount(Locale locale, String password)
130133
throws AuthorityNotFoundException, DuplicateUsernameException {
131134
StudentUserDetails sud = new StudentUserDetails();
132-
sud.setFirstname("survey_student");
133-
sud.setLastname(Integer.toString((int) Math.ceil(Math.random() * 10000)));
135+
sud.setFirstname("survey_student_" + RandomStringUtils.randomAlphanumeric(10));
136+
sud.setLastname(RandomStringUtils.randomAlphanumeric(10));
134137
sud.setBirthday(new Date());
135-
sud.setPassword("null");
138+
sud.setPassword(password);
136139
sud.setGender(Gender.UNSPECIFIED);
137140
sud.setEmailAddress("null@null.com");
138-
sud.setLanguage("null");
141+
sud.setLanguage(locale.getLanguage());
142+
sud.setNumberOfLogins(1);
143+
sud.setLastLoginTime(new Date());
139144

140145
User user = userService.createUser(sud);
141146
user.getUserDetails().addAuthority(

src/test/java/org/wise/portal/presentation/web/controllers/survey/SurveyAPIControllerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.ArrayList;
1010
import java.util.Date;
1111
import java.util.List;
12+
import java.util.Locale;
1213
import java.util.Set;
1314
import java.util.TreeSet;
1415

@@ -201,6 +202,7 @@ public void launchSurveyRun_NoIssues_RedirectUnit() throws Exception {
201202
replay(workgroupService);
202203
expect(userDetailsService.loadAuthorityByName("ROLE_SURVEY_STUDENT")).andReturn(null);
203204
replay(userDetailsService);
205+
expect(httpServletRequest.getLocale()).andReturn(new Locale("en"));
204206
expect(httpServletRequest.getSession(true)).andReturn(httpSession);
205207
replay(httpServletRequest);
206208
studentService.addStudentToRun(isA(User.class), isA(Projectcode.class));

0 commit comments

Comments
 (0)