Skip to content

Commit

Permalink
Initiate user additional info if not available
Browse files Browse the repository at this point in the history
  • Loading branch information
zhx828 committed Nov 22, 2023
1 parent c9797f0 commit f20e5e2
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .version-level
Original file line number Diff line number Diff line change
@@ -1 +1 @@
patch
minor
79 changes: 39 additions & 40 deletions src/main/java/org/mskcc/cbio/oncokb/web/rest/AccountResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public AccountResource(UserRepository userRepository, UserService userService,
AuthenticationManagerBuilder authenticationManagerBuilder,
PasswordEncoder passwordEncoder, UserDetailsService userDetailsService,
TokenService tokenService, ApplicationProperties applicationProperties
) {
) {

this.userRepository = userRepository;
this.userDetailsService = userDetailsService;
Expand All @@ -112,27 +112,27 @@ public AccountResource(UserRepository userRepository, UserService userService,
*/
@PostMapping("/register")
@ResponseStatus(HttpStatus.CREATED)
public void registerAccount(@Valid @RequestBody ManagedUserVM managedUserVM,
HttpServletRequest request) throws Exception {
public void registerAccount(@Valid @RequestBody ManagedUserVM managedUserVM,
HttpServletRequest request) throws Exception {
try {
RecaptchaEnterpriseServiceClient client = createAssess.createClient();
String recaptchaToken = createAssess.getRecaptchaToken(request);
ResponseEntity<String> rs = createAssess.createAssessment(client,recaptchaToken);
ResponseEntity<String> rs = createAssess.createAssessment(client, recaptchaToken);
} catch (ValidationException e) {
e.printStackTrace();
String errorMessage = e.getMessage();
if (errorMessage.contains("Unable to retrieve recaptcha token.")) {
log.info(errorMessage);
}
}
} catch (ConfigurationException e) {
log.warn(e.getMessage());
}
// if (rs.getStatusCode() == HttpStatus.OK) {
if (!checkPasswordLength(managedUserVM.getPassword())) {
throw new InvalidPasswordException();
}
User user = userService.registerUser(managedUserVM, managedUserVM.getPassword());
mailService.sendActivationEmail(userMapper.userToUserDTO(user));
if (!checkPasswordLength(managedUserVM.getPassword())) {
throw new InvalidPasswordException();
}
User user = userService.registerUser(managedUserVM, managedUserVM.getPassword());
mailService.sendActivationEmail(userMapper.userToUserDTO(user));
// }
}

Expand All @@ -148,17 +148,17 @@ public boolean activateAccount(@RequestParam(value = "key") String key, @Request
if (!userOptional.isPresent() || (userOptional.get().getActivationKey() != null && !userOptional.get().getActivationKey().equals(key))) {
throw new CustomMessageRuntimeException("Your user account could not be activated as no user was found associated with this activation key.");
} else {
if(userOptional.get().getActivationKey() == null) {
if (userOptional.get().getActivationKey() == null) {
return userOptional.get().getActivated();
}

boolean newUserActivation = !userOptional.get().getActivated();
userOptional = userService.activateRegistration(key);

User user;
if(userOptional.isPresent()){
if (userOptional.isPresent()) {
user = userOptional.get();
}else{
} else {
throw new CustomMessageRuntimeException("User could not be found");
}

Expand Down Expand Up @@ -290,8 +290,11 @@ public void requestApiAccess(@Valid @RequestBody ApiAccessRequest apiAccessReque
Optional<UserDetailsDTO> userDetailsDTO = userDetailsService.findOneByUser(user.get());
if (userDetailsDTO.isPresent()) {
UserDetailsDTO updatedUserDetailsDTO = userDetailsDTO.get();
if (updatedUserDetailsDTO.getAdditionalInfo() == null) {
updatedUserDetailsDTO.setAdditionalInfo(new AdditionalInfoDTO());
}
updatedUserDetailsDTO.getAdditionalInfo().setApiAccessRequest(apiAccessRequest);

userDetailsService.save(updatedUserDetailsDTO);
slackService.sendUserApiAccessRequestToChannel(userMapper.userToUserDTO(user.get()));
}
Expand Down Expand Up @@ -340,7 +343,7 @@ public Token createToken() {
if (tokens.size() > 0) {
Instant expiration = tokens.stream().max(Comparator.comparing(Token::getExpiration)).get().getExpiration();
Instant sevenDaysFromNow = Instant.now().plus(7, ChronoUnit.DAYS);
for (Token token: tokens) {
for (Token token : tokens) {
token.setExpiration(token.getExpiration().compareTo(sevenDaysFromNow) < 0 ? token.getExpiration() : sevenDaysFromNow);
tokenService.save(token);
}
Expand Down Expand Up @@ -382,29 +385,29 @@ public void requestPasswordReset(@RequestBody String mail, HttpServletRequest re
try {
RecaptchaEnterpriseServiceClient client = createAssess.createClient();
String recaptchaToken = createAssess.getRecaptchaToken(request);
ResponseEntity<String> rs = createAssess.createAssessment(client,recaptchaToken);
ResponseEntity<String> rs = createAssess.createAssessment(client, recaptchaToken);
} catch (ValidationException e) {
e.printStackTrace();
String errorMessage = e.getMessage();
if (errorMessage.contains("Unable to retrieve recaptcha token.")) {
log.info(errorMessage);
}
}
} catch (ConfigurationException e) {
log.warn(e.getMessage());
}
// if (rs.getStatusCode() == HttpStatus.OK) {
Optional<User> user = userService.getUserWithAuthoritiesByEmailIgnoreCase(mail);
if (user.isPresent()) {
Optional<User> updatedUser = userService.requestPasswordReset(user.get().getLogin());
if (updatedUser.isPresent()) {
mailService.sendPasswordResetMail(userMapper.userToUserDTO(updatedUser.get()));
}

} else {
// Pretend the request has been successful to prevent checking which emails really exist
// but log that an invalid attempt has been made
log.warn("Password reset requested for non existing mail");
Optional<User> user = userService.getUserWithAuthoritiesByEmailIgnoreCase(mail);
if (user.isPresent()) {
Optional<User> updatedUser = userService.requestPasswordReset(user.get().getLogin());
if (updatedUser.isPresent()) {
mailService.sendPasswordResetMail(userMapper.userToUserDTO(updatedUser.get()));
}

} else {
// Pretend the request has been successful to prevent checking which emails really exist
// but log that an invalid attempt has been made
log.warn("Password reset requested for non existing mail");
}
// }
}

Expand All @@ -420,8 +423,7 @@ public void finishPasswordReset(@RequestBody KeyAndPasswordVM keyAndPassword) {
if (!checkPasswordLength(keyAndPassword.getNewPassword())) {
throw new InvalidPasswordException();
}
Optional<User> user =
userService.completePasswordReset(keyAndPassword.getNewPassword(), keyAndPassword.getKey());
Optional<User> user = userService.completePasswordReset(keyAndPassword.getNewPassword(), keyAndPassword.getKey());

if (!user.isPresent()) {
throw new CustomMessageRuntimeException("No user was found for this reset key");
Expand Down Expand Up @@ -480,28 +482,25 @@ public void resendVerification(@RequestBody LoginVM loginVM, HttpServletRequest
try {
RecaptchaEnterpriseServiceClient client = createAssess.createClient();
String recaptchaToken = createAssess.getRecaptchaToken(request);
ResponseEntity<String> rs = createAssess.createAssessment(client,recaptchaToken);
ResponseEntity<String> rs = createAssess.createAssessment(client, recaptchaToken);
} catch (ValidationException e) {
e.printStackTrace();
String errorMessage = e.getMessage();
if (errorMessage.contains("Unable to retrieve recaptcha token.")) {
log.info(errorMessage);
}
}
} catch (ConfigurationException e) {
log.warn(e.getMessage());
}
// if (rs.getStatusCode() == HttpStatus.OK) {
Optional<User> userOptional = userService.getUserWithAuthoritiesByLogin(loginVM.getUsername());
if (userOptional.isPresent()
&& passwordEncoder.matches(loginVM.getPassword(), userOptional.get().getPassword())) {
mailService.sendActivationEmail(userMapper.userToUserDTO(userOptional.get()));
}
Optional<User> userOptional = userService.getUserWithAuthoritiesByLogin(loginVM.getUsername());
if (userOptional.isPresent() && passwordEncoder.matches(loginVM.getPassword(), userOptional.get().getPassword())) {
mailService.sendActivationEmail(userMapper.userToUserDTO(userOptional.get()));
}
// }
}

private static boolean checkPasswordLength(String password) {
return !StringUtils.isEmpty(password) &&
password.length() >= ManagedUserVM.PASSWORD_MIN_LENGTH &&
password.length() <= ManagedUserVM.PASSWORD_MAX_LENGTH;
return !StringUtils.isEmpty(password) && password.length() >= ManagedUserVM.PASSWORD_MIN_LENGTH && password.length() <= ManagedUserVM.PASSWORD_MAX_LENGTH;
}
}

0 comments on commit f20e5e2

Please sign in to comment.