2121
2222import java .io .IOException ;
2323import java .util .Date ;
24+ import java .util .Locale ;
2425
2526import javax .servlet .http .HttpServletRequest ;
2627import javax .servlet .http .HttpServletResponse ;
2728import javax .servlet .http .HttpSession ;
2829
30+ import org .apache .commons .lang3 .RandomStringUtils ;
2931import org .springframework .beans .factory .annotation .Autowired ;
3032import org .springframework .security .authentication .AuthenticationManager ;
3133import 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 (
0 commit comments