use of won.owner.web.events.OnRegistrationCompleteEvent in project webofneeds by researchstudio-sat.
the class RestUserController method registerUser.
/**
* registers user
*
* @param user registration data of a user
* @param errors
* @return ResponseEntity with Http Status Code
*/
@ResponseBody
@RequestMapping(value = "/", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
// TODO: move transactionality annotation into the service layer
@Transactional(propagation = Propagation.REQUIRED)
public ResponseEntity registerUser(@RequestBody UserPojo user, Errors errors, WebRequest request) {
logger.debug("processing POST request to / (registers user)");
try {
userRegisterValidator.validate(user, errors);
if (errors.hasErrors()) {
if (errors.getFieldErrorCount() > 0) {
// someone trying to go around js validation
return generateStatusResponse(RestStatusResponse.SIGNUP_FAILED);
} else {
// username is already in database
return generateStatusResponse(RestStatusResponse.USER_ALREADY_EXISTS);
}
}
User createdUser = userService.registerUser(user.getUsername(), user.getPassword(), null, user.getPrivateId());
if (!createdUser.isAnonymous() && !createdUser.isEmailVerified()) {
eventPublisher.publishEvent(new OnRegistrationCompleteEvent(createdUser, request.getLocale(), request.getContextPath()));
String recoveryKey;
try {
recoveryKey = userService.generateRecoveryKey(user.getUsername(), user.getPassword());
eventPublisher.publishEvent(new OnRecoveryKeyGeneratedEvent(createdUser, recoveryKey));
} catch (UserNotFoundException e) {
return generateStatusResponse(RestStatusResponse.RECOVERY_KEYGEN_USER_NOT_FOUND);
} catch (IncorrectPasswordException e) {
return generateStatusResponse(RestStatusResponse.RECOVERY_KEYGEN_WRONG_PASSWORD);
}
}
} catch (UserAlreadyExistsException e) {
// username is already in database
return generateStatusResponse(RestStatusResponse.USER_ALREADY_EXISTS);
}
return generateStatusResponse(RestStatusResponse.USER_CREATED);
}
use of won.owner.web.events.OnRegistrationCompleteEvent in project webofneeds by researchstudio-sat.
the class RestUserController method transferUser.
/**
* transfers a privateId user to a registered user
*
* @param errors
* @return ResponseEntity with Http Status Code
*/
@ResponseBody
@RequestMapping(value = "/transfer", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
@Transactional(propagation = Propagation.REQUIRED)
public ResponseEntity transferUser(@RequestBody TransferUserPojo transferUserPojo, Errors errors, WebRequest request) {
logger.debug("processing request to /transfer");
String username = SecurityContextHolder.getContext().getAuthentication().getName();
// cannot use user object from context since hw doesn't know about created in
// this session atom,
// therefore, we have to retrieve the user object from the user repository
User user = userService.getByUsername(username);
if (user == null && !transferUserPojo.getPrivateUsername().equals(user.getUsername())) {
return generateStatusResponse(RestStatusResponse.USERNAME_MISMATCH);
}
try {
userRegisterValidator.validate(transferUserPojo, errors);
if (errors.hasErrors()) {
if (errors.getFieldErrorCount() > 0) {
// someone trying to go around js validation
return generateStatusResponse(RestStatusResponse.SIGNUP_FAILED);
} else {
// username is already in database
return generateStatusResponse(RestStatusResponse.USER_ALREADY_EXISTS);
}
}
User transferUser = userService.transferUser(transferUserPojo.getUsername(), transferUserPojo.getPassword(), transferUserPojo.getPrivateUsername(), transferUserPojo.getPrivatePassword());
if (!transferUser.isEmailVerified()) {
eventPublisher.publishEvent(new OnRegistrationCompleteEvent(transferUser, request.getLocale(), request.getContextPath()));
String recoveryKey;
try {
recoveryKey = userService.generateRecoveryKey(transferUserPojo.getUsername(), transferUserPojo.getPassword());
eventPublisher.publishEvent(new OnRecoveryKeyGeneratedEvent(transferUser, recoveryKey));
} catch (UserNotFoundException e) {
return generateStatusResponse(RestStatusResponse.RECOVERY_KEYGEN_USER_NOT_FOUND);
} catch (IncorrectPasswordException e) {
return generateStatusResponse(RestStatusResponse.RECOVERY_KEYGEN_WRONG_PASSWORD);
}
}
} catch (UserAlreadyExistsException e) {
// username is already in database
return generateStatusResponse(RestStatusResponse.USER_ALREADY_EXISTS);
} catch (UserNotFoundException e) {
return generateStatusResponse(RestStatusResponse.TRANSFERUSER_NOT_FOUND);
}
return generateStatusResponse(RestStatusResponse.USER_TRANSFERRED);
}
Aggregations