in study-builder/fdahpStudyDesigner/src/main/java/com/fdahpstudydesigner/service/LoginServiceImpl.java [382:580]
public String sendPasswordResetLinkToMail(
HttpServletRequest request,
String email,
String oldEmail,
String type,
AuditLogEventRequest auditRequest) {
logger.entry("begin sendPasswordResetLinkToMail");
Map<String, String> propMap = FdahpStudyDesignerUtil.getAppProperties();
String passwordResetToken = null;
String message = propMap.get("user.forgot.error.msg");
boolean flag = false;
UserBO userdetails = null;
Map<String, String> keyValueForSubject = null;
Map<String, String> keyValueForSubject2 = null;
String dynamicContent = "";
String anotherdynamicContent = "";
String acceptLinkMail = "";
int passwordResetLinkExpirationInDay =
Integer.parseInt(propMap.get("password.resetLink.expiration.in.hour"));
String customerCareMail = "";
String contact = "";
final Integer MAX_ATTEMPTS = Integer.valueOf(propMap.get("max.login.attempts"));
final Integer USER_LOCK_DURATION =
Integer.valueOf(propMap.get("user.lock.duration.in.minutes"));
final String lockMsg = propMap.get("user.lock.msg");
try {
passwordResetToken = RandomStringUtils.randomAlphanumeric(10);
if (!StringUtils.isEmpty(passwordResetToken)) {
userdetails = loginDAO.getValidUserByEmail(email);
if ("".equals(type) && userdetails != null && userdetails.isEnabled()) {
auditRequest.setUserAccessLevel(
StringUtils.defaultIfBlank(userdetails.getAccessLevel(), ""));
auditRequest.setUserId(String.valueOf(userdetails.getUserId()));
auditLogEventHelper.logEvent(PASSWORD_HELP_REQUESTED, auditRequest);
}
if ("".equals(type) && userdetails.getEmailChanged().equals(1)) {
userdetails = null;
}
UserAttemptsBo userAttempts = loginDAO.getUserAttempts(email);
// Restricting the user to login for specified minutes if the
// user has max fails attempts
if ((type != null)
&& "".equals(type)
&& (userAttempts != null)
&& (userAttempts.getAttempts() >= MAX_ATTEMPTS)
&& new SimpleDateFormat(FdahpStudyDesignerConstants.DB_SDF_DATE_TIME)
.parse(
FdahpStudyDesignerUtil.addMinutes(
userAttempts.getLastModified(), USER_LOCK_DURATION))
.after(
new SimpleDateFormat(FdahpStudyDesignerConstants.DB_SDF_DATE_TIME)
.parse(FdahpStudyDesignerUtil.getCurrentDateTime()))) {
message = lockMsg;
flag = false;
} else {
flag = true;
}
if (flag) {
flag = false;
if (null != userdetails) {
userdetails.setSecurityToken(passwordResetToken);
userdetails.setTokenUsed(false);
userdetails.setTokenExpiryDate(
FdahpStudyDesignerUtil.addHours(
FdahpStudyDesignerUtil.getCurrentDateTime(), passwordResetLinkExpirationInDay));
if (!"USER_UPDATE".equals(type)) {
message = loginDAO.updateUser(userdetails);
} else {
message = FdahpStudyDesignerConstants.SUCCESS;
}
if (FdahpStudyDesignerConstants.SUCCESS.equals(message)) {
if ("USER_EMAIL_UPDATE".equalsIgnoreCase(type)) {
acceptLinkMail = propMap.get("emailChangeLink").trim();
} else {
acceptLinkMail = propMap.get("acceptLinkMail").trim();
}
keyValueForSubject = new HashMap<String, String>();
keyValueForSubject2 = new HashMap<String, String>();
keyValueForSubject.put("$firstName", userdetails.getFirstName());
keyValueForSubject2.put("$firstName", userdetails.getFirstName());
keyValueForSubject.put("$lastName", userdetails.getLastName());
keyValueForSubject.put(
"$passwordResetLinkExpirationInDay",
String.valueOf(passwordResetLinkExpirationInDay));
keyValueForSubject2.put(
"$passwordResetLinkExpirationInDay",
String.valueOf(passwordResetLinkExpirationInDay));
keyValueForSubject.put("$passwordResetLink", acceptLinkMail + passwordResetToken);
customerCareMail = propMap.get("email.address.customer.service");
keyValueForSubject.put("$customerCareMail", customerCareMail);
keyValueForSubject2.put("$customerCareMail", customerCareMail);
keyValueForSubject.put("$newUpdatedMail", userdetails.getUserEmail());
keyValueForSubject2.put("$newUpdatedMail", userdetails.getUserEmail());
keyValueForSubject.put("$oldMail", oldEmail);
contact = propMap.get("phone.number.to");
keyValueForSubject.put("$contact", contact);
keyValueForSubject.put("$orgName", propMap.get("orgName"));
keyValueForSubject2.put("$orgName", propMap.get("orgName"));
if ("USER".equals(type) && !userdetails.isEnabled()) {
dynamicContent =
FdahpStudyDesignerUtil.genarateEmailContent(
"userRegistrationContent", keyValueForSubject);
flag =
emailNotification.sendEmailNotification(
"userRegistrationSubject", dynamicContent, email, null, null);
Map<String, String> values = new HashMap<>();
values.put(StudyBuilderConstants.USER_ID, String.valueOf(userdetails.getUserId()));
if (!flag) {
auditLogEventHelper.logEvent(
NEW_USER_INVITATION_EMAIL_FAILED, auditRequest, values);
}
} else if ("USER_UPDATE".equals(type) && userdetails.isEnabled()) {
dynamicContent =
FdahpStudyDesignerUtil.genarateEmailContent(
"mailForUserUpdateContent", keyValueForSubject2);
flag =
emailNotification.sendEmailNotification(
"mailForUserUpdateSubject", dynamicContent, email, null, null);
} else if ("USER_EMAIL_UPDATE".equals(type)) {
// Email to old email address
dynamicContent =
FdahpStudyDesignerUtil.genarateEmailContent(
"mailToOldEmailForUserEmailUpdateContent", keyValueForSubject2);
flag =
emailNotification.sendEmailNotification(
"mailToOldEmailForUserEmailUpdateSubject",
dynamicContent,
oldEmail,
null,
null);
// Email to new email address
anotherdynamicContent =
FdahpStudyDesignerUtil.genarateEmailContent(
"mailToNewEmailForUserEmailUpdateContent", keyValueForSubject);
flag =
emailNotification.sendEmailNotification(
"mailToNewEmailForUserEmailUpdateSubject",
anotherdynamicContent,
email,
null,
null);
} else if ("enforcePasswordChange".equals(type)) {
dynamicContent =
FdahpStudyDesignerUtil.genarateEmailContent(
"mailForEnforcePasswordChangeContent", keyValueForSubject);
flag =
emailNotification.sendEmailNotification(
"mailForEnforcePasswordChangeSubject", dynamicContent, email, null, null);
} else if ("ReactivateMailAfterEnforcePassChange".equals(type)
&& userdetails.isEnabled()) {
dynamicContent =
FdahpStudyDesignerUtil.genarateEmailContent(
"mailForReactivatingUserAfterEnforcePassChangeContent", keyValueForSubject);
flag =
emailNotification.sendEmailNotification(
"mailForReactivatingUserAfterEnforcePassChangeSubject",
dynamicContent,
email,
null,
null);
} else if ("".equals(type) && userdetails.isEnabled()) {
dynamicContent =
FdahpStudyDesignerUtil.genarateEmailContent(
"passwordResetLinkContent", keyValueForSubject);
flag =
emailNotification.sendEmailNotification(
"passwordResetLinkSubject", dynamicContent, email, null, null);
StudyBuilderAuditEvent auditLogEvent =
flag ? PASSWORD_HELP_EMAIL_SENT : PASSWORD_HELP_EMAIL_FAILED;
auditLogEventHelper.logEvent(auditLogEvent, auditRequest);
} else if ("USER_UPDATE".equals(type) && !userdetails.isEnabled()) {
flag = true;
}
message =
flag ? FdahpStudyDesignerConstants.SUCCESS : FdahpStudyDesignerConstants.FAILURE;
if ("".equals(type) && (!userdetails.isEnabled())) {
message = propMap.get("user.inactive.msg");
}
if ("".equals(type) && StringUtils.isEmpty(userdetails.getUserPassword())) {
message = propMap.get("user.not.found.msg");
}
}
}
}
}
} catch (Exception e) {
logger.error("LoginServiceImpl - sendPasswordResetLinkToMail - ERROR ", e);
auditLogEventHelper.logEvent(PASSWORD_HELP_EMAIL_FAILED, auditRequest);
}
logger.exit("sendPasswordResetLinkToMail - Ends");
return message;
}