final Principal user;
final String emailString = (String) propertySet.get(User.eMail.jsonName());
if (StringUtils.isEmpty(emailString)) {
return new RestMethodResult(HttpServletResponse.SC_BAD_REQUEST);
}
localeString = (String) propertySet.get(MailTemplate.locale.jsonName());
confKey = UUID.randomUUID().toString();
Result result = StructrApp.getInstance().nodeQuery(User.class).and(User.eMail, emailString).getResult();
if (!result.isEmpty()) {
final App app = StructrApp.getInstance(securityContext);
user = (Principal) result.get(0);
// For existing users, update confirmation key
user.setProperty(User.confirmationKey, confKey);
existingUser = true;
} else {
Authenticator auth = securityContext.getAuthenticator();
user = createUser(securityContext, User.eMail, emailString, propertySet, auth.getUserAutoCreate(), auth.getUserClass());
}
if (user != null) {
if (!sendInvitationLink(user, propertySet)) {
// return 400 Bad request
return new RestMethodResult(HttpServletResponse.SC_BAD_REQUEST);
}
// If we have just updated the confirmation key for an existing user,
// return 200 to distinguish from new users
if (existingUser) {
// return 200 OK
return new RestMethodResult(HttpServletResponse.SC_OK);
} else {
// return 201 Created
return new RestMethodResult(HttpServletResponse.SC_CREATED);
}
} else {
// return 400 Bad request
return new RestMethodResult(HttpServletResponse.SC_BAD_REQUEST);
}
} else {
// return 400 Bad request
return new RestMethodResult(HttpServletResponse.SC_BAD_REQUEST);
}
}