Added recaptcha
This commit is contained in:
parent
56e1b3f7d2
commit
e17be455fe
|
@ -4,9 +4,12 @@ import com.unboundid.ldap.sdk.LDAPException;
|
|||
import eu.dnetlib.openaire.user.utils.EmailSender;
|
||||
import eu.dnetlib.openaire.user.utils.LDAPActions;
|
||||
import eu.dnetlib.openaire.user.utils.VerificationActions;
|
||||
import eu.dnetlib.openaire.user.utils.VerifyRecaptcha;
|
||||
import eu.dnetlib.openaire.usermanagement.utils.UrlConstructor;
|
||||
import org.apache.commons.validator.routines.EmailValidator;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
|
@ -25,12 +28,6 @@ import java.util.UUID;
|
|||
|
||||
public class ForgotPasswordServlet extends HttpServlet {
|
||||
|
||||
public void init(ServletConfig config) throws ServletException {
|
||||
super.init(config);
|
||||
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
|
||||
config.getServletContext());
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private LDAPActions ldapActions;
|
||||
|
||||
|
@ -40,66 +37,94 @@ public class ForgotPasswordServlet extends HttpServlet {
|
|||
@Autowired
|
||||
private EmailSender emailSender;
|
||||
|
||||
@Value("${google.recaptcha.secret}")
|
||||
private String secret;
|
||||
|
||||
@Value("${google.recaptcha.key}")
|
||||
private String sitekey;
|
||||
|
||||
private Logger logger = Logger.getLogger(ForgotPasswordServlet.class);
|
||||
|
||||
public void init(ServletConfig config) throws ServletException {
|
||||
super.init(config);
|
||||
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
|
||||
config.getServletContext());
|
||||
config.getServletContext().setAttribute("sitekey", sitekey);
|
||||
|
||||
}
|
||||
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
|
||||
String formEmail = request.getParameter("email").trim();
|
||||
String gRecaptchaResponse = request.getParameter("g-recaptcha-response");
|
||||
|
||||
|
||||
if (formEmail == null) {
|
||||
request.getSession().setAttribute("message", "Error reading email.");
|
||||
response.sendRedirect("./forgotPassword.jsp");
|
||||
}
|
||||
} else if (formEmail.isEmpty()) {
|
||||
request.getSession().setAttribute("message", "Please enter your email.");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
|
||||
try {
|
||||
} else if (!EmailValidator.getInstance().isValid(formEmail)) {
|
||||
request.getSession().setAttribute("message", "Please enter a valid email.");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
|
||||
String username = ldapActions.getUsername(formEmail);
|
||||
if (username == null || username.isEmpty()) {
|
||||
request.getSession().setAttribute("message", "User does not exist.");
|
||||
response.sendRedirect("./forgotPassword.jsp");
|
||||
} else if (!VerifyRecaptcha.verify(gRecaptchaResponse, secret)) {
|
||||
request.getSession().setAttribute("message", "You missed the reCAPTCHA validation!");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
|
||||
} else {
|
||||
UUID verificationCode = UUID.randomUUID();
|
||||
Date creationDate = new Date();
|
||||
} else {
|
||||
|
||||
Timestamp timestamp = new Timestamp(creationDate.getTime());
|
||||
try {
|
||||
|
||||
if (!verificationActions.verificationEntryExists(username)) {
|
||||
verificationActions.addVerificationEntry(username, verificationCode.toString(), timestamp);
|
||||
String username = ldapActions.getUsername(formEmail);
|
||||
if (username == null || username.isEmpty()) {
|
||||
request.getSession().setAttribute("message", "User does not exist.");
|
||||
response.sendRedirect("./forgotPassword.jsp");
|
||||
|
||||
} else {
|
||||
verificationActions.updateVerificationEntry(username, verificationCode.toString(), timestamp);
|
||||
UUID verificationCode = UUID.randomUUID();
|
||||
Date creationDate = new Date();
|
||||
|
||||
Timestamp timestamp = new Timestamp(creationDate.getTime());
|
||||
|
||||
if (!verificationActions.verificationEntryExists(username)) {
|
||||
verificationActions.addVerificationEntry(username, verificationCode.toString(), timestamp);
|
||||
|
||||
} else {
|
||||
verificationActions.updateVerificationEntry(username, verificationCode.toString(), timestamp);
|
||||
}
|
||||
|
||||
String resultPath = UrlConstructor.getRedirectUrl(request, "verify.jsp");
|
||||
|
||||
String verificationCodeMsg = "<p>Hello,</p>" +
|
||||
"<p> A request has been made to reset your OpenAIRE account password. To reset your " +
|
||||
"password, you will need to submit this verification code in order to verify that the " +
|
||||
"request was legitimate.</p>" +
|
||||
"<p> The verification code is " + verificationCode.toString() + "</p>" +
|
||||
"Select the URL below and proceed with verification." +
|
||||
"<p><a href=" + resultPath + ">" + resultPath + "</a></p>" +
|
||||
"<p>Thank you</p>";
|
||||
|
||||
String verificationCodeSubject = "Your OpenAIRE password reset request";
|
||||
|
||||
emailSender.sendEmail(formEmail, verificationCodeSubject, verificationCodeMsg);
|
||||
|
||||
response.setContentType("text/html");
|
||||
response.sendRedirect("./verify.jsp");
|
||||
}
|
||||
|
||||
String resultPath = UrlConstructor.getRedirectUrl(request, "verify.jsp");
|
||||
} catch (LDAPException ldape) {
|
||||
logger.error("LDAP error", ldape);
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "error.jsp"));
|
||||
//response.sendRedirect("./error.jsp");
|
||||
|
||||
String verificationCodeMsg = "<p>Hello,</p>" +
|
||||
"<p> A request has been made to reset your OpenAIRE account password. To reset your " +
|
||||
"password, you will need to submit this verification code in order to verify that the " +
|
||||
"request was legitimate.</p>" +
|
||||
"<p> The verification code is " + verificationCode.toString() + "</p>" +
|
||||
"Select the URL below and proceed with verification." +
|
||||
"<p><a href=" + resultPath + ">" + resultPath + "</a></p>" +
|
||||
"<p>Thank you</p>";
|
||||
|
||||
String verificationCodeSubject = "Your OpenAIRE password reset request";
|
||||
|
||||
emailSender.sendEmail(formEmail, verificationCodeSubject, verificationCodeMsg);
|
||||
|
||||
response.setContentType("text/html");
|
||||
response.sendRedirect("./verify.jsp");
|
||||
} catch (MessagingException e) {
|
||||
logger.error("Error in sending email", e);
|
||||
request.getSession().setAttribute("message", "Error sending email.");
|
||||
response.sendRedirect("./forgotPassword.jsp");
|
||||
}
|
||||
|
||||
} catch (LDAPException ldape) {
|
||||
logger.error("LDAP error", ldape);
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "error.jsp"));
|
||||
//response.sendRedirect("./error.jsp");
|
||||
|
||||
} catch (MessagingException e) {
|
||||
logger.error("Error in sending email", e);
|
||||
request.getSession().setAttribute("message", "Error sending email.");
|
||||
response.sendRedirect("./forgotPassword.jsp");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,14 +1,20 @@
|
|||
package eu.dnetlib.openaire.usermanagement;
|
||||
|
||||
import com.unboundid.ldap.sdk.LDAPException;
|
||||
import eu.dnetlib.openaire.user.utils.EmailSender;
|
||||
import org.apache.commons.validator.routines.EmailValidator;
|
||||
import eu.dnetlib.openaire.user.utils.LDAPActions;
|
||||
import eu.dnetlib.openaire.user.utils.VerificationActions;
|
||||
import eu.dnetlib.openaire.user.utils.VerifyRecaptcha;
|
||||
import eu.dnetlib.openaire.usermanagement.utils.UrlConstructor;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
import javax.mail.internet.AddressException;
|
||||
import javax.mail.internet.InternetAddress;
|
||||
import javax.servlet.ServletConfig;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
|
@ -25,12 +31,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public class RegisterServlet extends HttpServlet {
|
||||
|
||||
public void init(ServletConfig config) throws ServletException {
|
||||
super.init(config);
|
||||
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
|
||||
config.getServletContext());
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private VerificationActions verificationActions;
|
||||
|
||||
|
@ -40,9 +40,23 @@ public class RegisterServlet extends HttpServlet {
|
|||
@Autowired
|
||||
private LDAPActions ldapActions;
|
||||
|
||||
private Logger logger = Logger.getLogger(RegisterServlet.class);
|
||||
@Value("${google.recaptcha.secret}")
|
||||
private String secret;
|
||||
|
||||
@Override
|
||||
@Value("${google.recaptcha.key}")
|
||||
private String sitekey;
|
||||
|
||||
|
||||
public void init(ServletConfig config) throws ServletException {
|
||||
super.init(config);
|
||||
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
|
||||
config.getServletContext());
|
||||
config.getServletContext().setAttribute("sitekey", sitekey);
|
||||
}
|
||||
|
||||
private static Logger logger = Logger.getLogger(RegisterServlet.class);
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
response.setContentType("text/html");
|
||||
PrintWriter printWriter = response.getWriter();
|
||||
|
@ -55,12 +69,17 @@ public class RegisterServlet extends HttpServlet {
|
|||
String confirmEmail = request.getParameter("email_conf").trim();
|
||||
String password = request.getParameter("password");
|
||||
String confirmPassword = request.getParameter("password_conf");
|
||||
String gRecaptchaResponse = request.getParameter("g-recaptcha-response");
|
||||
|
||||
//System.out.println("RESPONSE " + gRecaptchaResponse);
|
||||
|
||||
if (organization == null){
|
||||
logger.info("organization is null");
|
||||
}
|
||||
if (firstName != null && lastName != null && username != null &&
|
||||
email.equals(confirmEmail) && password.equals(confirmPassword) ) {
|
||||
|
||||
if (firstName != null && lastName != null && username != null && email!= null &&
|
||||
email.equals(confirmEmail) && password!= null && password.equals(confirmPassword) &&
|
||||
!EmailValidator.getInstance().isValid(email) && isValidPassword(password) && VerifyRecaptcha.verify(gRecaptchaResponse, secret)) {
|
||||
|
||||
try {
|
||||
|
||||
|
@ -105,25 +124,7 @@ public class RegisterServlet extends HttpServlet {
|
|||
|
||||
if(!username.matches("^[a-zA-Z0-9\\.\\_\\-]{4,150}")) {
|
||||
|
||||
if (username.length() < 5) {
|
||||
request.getSession().setAttribute("username_message", "Minimum username length 5 characters.");
|
||||
logger.info("Minimum username length 5 characters.");
|
||||
}
|
||||
|
||||
if (username.length() > 150) {
|
||||
request.getSession().setAttribute("username_message", "Maximum username length 150 characters.");
|
||||
logger.info("Maximum username length 150 characters.");
|
||||
}
|
||||
|
||||
if (!username.matches("^[a-zA-Z0-9\\.\\_\\-]")) {
|
||||
request.getSession().setAttribute("username_allowed_chars_message", "You can use letters, numbers, underscores, hyphens and periods.");
|
||||
logger.info("Only letters, numbers, underscores, hyphens and periods.");
|
||||
}
|
||||
|
||||
if (!username.matches("^[a-zA-Z0-9].*")) {
|
||||
request.getSession().setAttribute("username_first_char_message", "The username must start with letter or digit.");
|
||||
logger.info("The username must start with letter or digit.");
|
||||
}
|
||||
validateUsername(request, username);
|
||||
|
||||
}
|
||||
|
||||
|
@ -148,24 +149,144 @@ public class RegisterServlet extends HttpServlet {
|
|||
}
|
||||
|
||||
request.getSession().setAttribute("first_name", firstName);
|
||||
request.getSession().setAttribute("msg_first_name_error_display", "display:none");
|
||||
|
||||
request.getSession().setAttribute("last_name", lastName);
|
||||
request.getSession().setAttribute("msg_last_name_error_display", "display:none");
|
||||
|
||||
request.getSession().setAttribute("organization", organization);
|
||||
request.getSession().setAttribute("username", username);
|
||||
request.getSession().setAttribute("email", email);
|
||||
request.getSession().setAttribute("msg_email_error_display", "display:none" );
|
||||
|
||||
request.getSession().setAttribute("email_conf", confirmEmail);
|
||||
request.getSession().setAttribute("msg_email_conf_error_display", "display:none");
|
||||
request.getSession().setAttribute("msg_email_validation_error_display", "display:none");
|
||||
|
||||
request.getSession().setAttribute("msg_password_error_display", "display:none" );
|
||||
request.getSession().setAttribute("msg_pass_conf_error_display", "display:none" );
|
||||
request.getSession().setAttribute("msg_invalid_password_display", "display:none");
|
||||
|
||||
request.getSession().setAttribute("recaptcha_error_display", "display:none");
|
||||
|
||||
response.sendRedirect("./register.jsp");
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
} catch (MessagingException e) {
|
||||
logger.error("Error in sending email", e);
|
||||
request.getSession().setAttribute("message","Error sending email");
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "./remindUsername.jsp"));
|
||||
//response.sendRedirect("./error.jsp");
|
||||
|
||||
//TODO better handling of these exceprions
|
||||
}catch (Exception e) {
|
||||
logger.error("LDAP error in creating user", e);
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "error.jsp"));
|
||||
//response.sendRedirect("./error.jsp");
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
request.getSession().setAttribute("first_name", firstName);
|
||||
request.getSession().setAttribute("last_name", lastName);
|
||||
request.getSession().setAttribute("organization", organization);
|
||||
request.getSession().setAttribute("username", username);
|
||||
request.getSession().setAttribute("email", email);
|
||||
request.getSession().setAttribute("email_conf", confirmEmail);
|
||||
|
||||
if (firstName == null || firstName.isEmpty()) {
|
||||
request.getSession().setAttribute("msg_first_name_error_display", "display:block" );
|
||||
}
|
||||
|
||||
if (lastName == null || lastName.isEmpty()) {
|
||||
request.getSession().setAttribute("msg_last_name_error_display", "display:block" );
|
||||
}
|
||||
|
||||
if (username == null || username.isEmpty()) {
|
||||
request.getSession().setAttribute("username_message", "Minimum username length 5 characters.");
|
||||
logger.info("Username does not exist.");
|
||||
|
||||
} else {
|
||||
validateUsername(request, username);
|
||||
}
|
||||
|
||||
if (password == null || password.isEmpty()) {
|
||||
request.getSession().setAttribute("msg_password_error_display", "display:block" );
|
||||
}
|
||||
|
||||
if(!EmailValidator.getInstance().isValid(email)) {
|
||||
request.getSession().setAttribute("msg_email_validation_error_display", "display:block");
|
||||
}
|
||||
|
||||
if (!email.equals(confirmEmail)) {
|
||||
request.getSession().setAttribute("msg_email_conf_error_display", "display:block" );
|
||||
}
|
||||
|
||||
if (!password.equals(confirmPassword)){
|
||||
request.getSession().setAttribute("msg_pass_conf_error_display", "display:block" );
|
||||
}
|
||||
|
||||
if(!isValidPassword(password)) {
|
||||
request.getSession().setAttribute("msg_invalid_password_display", "display:block");
|
||||
}
|
||||
|
||||
if (!VerifyRecaptcha.verify(gRecaptchaResponse, secret)) {
|
||||
request.getSession().setAttribute("recaptcha_error_display", "display:block" );
|
||||
}
|
||||
|
||||
response.sendRedirect("./register.jsp");
|
||||
|
||||
}
|
||||
|
||||
printWriter.close();
|
||||
|
||||
}
|
||||
|
||||
private void validateUsername(HttpServletRequest request, String username) {
|
||||
if (username.length() < 5) {
|
||||
request.getSession().setAttribute("username_message", "Minimum username length 5 characters.");
|
||||
logger.info("Minimum username length 5 characters.");
|
||||
}
|
||||
|
||||
if (username.length() > 150) {
|
||||
request.getSession().setAttribute("username_message", "Maximum username length 150 characters.");
|
||||
logger.info("Maximum username length 150 characters.");
|
||||
}
|
||||
|
||||
if (!username.matches("^[a-zA-Z0-9\\.\\_\\-]")) {
|
||||
request.getSession().setAttribute("username_allowed_chars_message", "You can use letters, numbers, underscores, hyphens and periods.");
|
||||
logger.info("Only letters, numbers, underscores, hyphens and periods.");
|
||||
}
|
||||
|
||||
if (!username.matches("^[a-zA-Z0-9].*")) {
|
||||
request.getSession().setAttribute("username_first_char_message", "The username must start with letter or digit.");
|
||||
logger.info("The username must start with letter or digit.");
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isValidPassword(String password) {
|
||||
/*
|
||||
^ # start-of-string
|
||||
(?=.*[0-9]) # a digit must occur at least once
|
||||
(?=.*[a-z]) # a lower case letter must occur at least once
|
||||
(?=.*[A-Z]) # an upper case letter must occur at least once
|
||||
(?=.*[@#$%^&+=]) # a special character must occur at least once
|
||||
(?=\S+$) # no whitespace allowed in the entire string
|
||||
.{8,} # anything, at least eight places though
|
||||
$ # end-of-string
|
||||
*/
|
||||
|
||||
if (password.matches("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{6,}$")) {
|
||||
logger.info("Valid password!");
|
||||
return true;
|
||||
}
|
||||
|
||||
logger.info("Not valid password!");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,9 @@ package eu.dnetlib.openaire.usermanagement;
|
|||
import com.unboundid.ldap.sdk.LDAPException;
|
||||
import eu.dnetlib.openaire.user.utils.EmailSender;
|
||||
import eu.dnetlib.openaire.user.utils.LDAPActions;
|
||||
import eu.dnetlib.openaire.user.utils.VerifyRecaptcha;
|
||||
import eu.dnetlib.openaire.usermanagement.utils.UrlConstructor;
|
||||
import org.apache.commons.validator.routines.EmailValidator;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
@ -25,12 +27,6 @@ import java.io.IOException;
|
|||
@Component
|
||||
public class RemindUsernameServlet extends HttpServlet {
|
||||
|
||||
public void init(ServletConfig config) throws ServletException {
|
||||
super.init(config);
|
||||
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
|
||||
config.getServletContext());
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private LDAPActions ldapActions;
|
||||
|
||||
|
@ -40,52 +36,82 @@ public class RemindUsernameServlet extends HttpServlet {
|
|||
@Value("${oidc.home}")
|
||||
private String oidcHomeUrl;
|
||||
|
||||
private Logger logger = Logger.getLogger(RemindUsernameServlet.class);
|
||||
@Value("${google.recaptcha.secret}")
|
||||
private String secret;
|
||||
|
||||
@Value("${google.recaptcha.key}")
|
||||
private String sitekey;
|
||||
|
||||
private static final Logger logger = Logger.getLogger(RemindUsernameServlet.class);
|
||||
|
||||
public void init(ServletConfig config) throws ServletException {
|
||||
super.init(config);
|
||||
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
|
||||
config.getServletContext());
|
||||
config.getServletContext().setAttribute("sitekey", sitekey);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
String formEmail = request.getParameter("email").trim();
|
||||
|
||||
String gRecaptchaResponse = request.getParameter("g-recaptcha-response");
|
||||
|
||||
HttpSession session = request.getSession();
|
||||
session.setAttribute("homeUrl", oidcHomeUrl);
|
||||
|
||||
if (formEmail == null){
|
||||
if (formEmail == null) {
|
||||
request.getSession().setAttribute("message", "Error reading email.");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
}
|
||||
|
||||
try{
|
||||
String username = ldapActions.getUsername(formEmail);
|
||||
if (username != null && !username.isEmpty()) {
|
||||
} else if (formEmail.isEmpty()) {
|
||||
request.getSession().setAttribute("message", "Please enter your email.");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
|
||||
String verificationCodeMsg = "<p>Hello,</p>" +
|
||||
"<p> A username reminder has been requested for your OpenAIRE account.</p>" +
|
||||
"<p> Your username is "+ username + ".</p>" +
|
||||
"<p> Thank you </p>";
|
||||
} else if (!EmailValidator.getInstance().isValid(formEmail)) {
|
||||
request.getSession().setAttribute("message", "Please enter a valid email.");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
|
||||
String verificationCodeSubject = "Your OpenAIRE username";
|
||||
} else if (!VerifyRecaptcha.verify(gRecaptchaResponse, secret)) {
|
||||
request.getSession().setAttribute("message", "You missed the reCAPTCHA validation!");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
|
||||
emailSender.sendEmail(formEmail, verificationCodeSubject, verificationCodeMsg);
|
||||
} else {
|
||||
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "emailSuccess.jsp"));
|
||||
//response.sendRedirect("./emailSuccess.jsp");
|
||||
try {
|
||||
String username = ldapActions.getUsername(formEmail);
|
||||
if (username != null && !username.isEmpty()) {
|
||||
|
||||
} else {
|
||||
request.getSession().setAttribute("message", "User not found");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
String verificationCodeMsg = "<p>Hello,</p>" +
|
||||
"<p> A username reminder has been requested for your OpenAIRE account.</p>" +
|
||||
"<p> Your username is " + username + ".</p>" +
|
||||
"<p> Thank you </p>";
|
||||
|
||||
String verificationCodeSubject = "Your OpenAIRE username";
|
||||
|
||||
emailSender.sendEmail(formEmail, verificationCodeSubject, verificationCodeMsg);
|
||||
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "emailSuccess.jsp"));
|
||||
//response.sendRedirect("./emailSuccess.jsp");
|
||||
|
||||
} else {
|
||||
request.getSession().setAttribute("message", "User not found");
|
||||
response.sendRedirect("./remindUsername.jsp");
|
||||
}
|
||||
|
||||
} catch (LDAPException ldape) {
|
||||
logger.error("Could not find user with email " + formEmail, ldape);
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "error.jsp"));
|
||||
//response.sendRedirect("./error.jsp");
|
||||
|
||||
} catch (MessagingException e) {
|
||||
logger.error("Error in sending email", e);
|
||||
request.getSession().setAttribute("message", "Error sending email");
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "./remindUsername.jsp"));
|
||||
//response.sendRedirect("./error.jsp");
|
||||
}
|
||||
|
||||
} catch (LDAPException ldape) {
|
||||
logger.error("Could not find user with email " + formEmail, ldape);
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "error.jsp"));
|
||||
//response.sendRedirect("./error.jsp");
|
||||
|
||||
} catch (MessagingException e) {
|
||||
logger.error("Error in sending email", e);
|
||||
response.sendRedirect(UrlConstructor.getRedirectUrl(request, "error.jsp"));
|
||||
//response.sendRedirect("./error.jsp");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String getOidcHomeUrl() {
|
||||
|
@ -97,3 +123,5 @@ public class RemindUsernameServlet extends HttpServlet {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -46,4 +46,5 @@ public class UrlConstructor {
|
|||
|
||||
return resultPath;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
oidc.secret = U_gLOupYu2trYIOwfxGgZkkZoOHG_zGfaViOUsXcZ7qVQuF1rcJeQYKIDX1TY3z27CIoHaqq9ht2rmAiUmBRYQ
|
||||
oidc.id = 24e83176-1312-4ba3-bc0b-ffeebea1603e
|
||||
oidc.issuer = https://aai.openminted.eu/oidc/
|
||||
oidc.id=767422b9-5461-4807-a80a-f9a2072d3a7d
|
||||
oidc.secret=AMQtGlbTXNjwjhF0st28LmM6V0XypMdaVS7tJmGuYFlmH36iIv4t7tVqYuLYrNPkhnZ_GPUJvhymBhFupdgb6aU
|
||||
oidc.issuer = https://aai.openaire.eu/oidc/
|
||||
|
||||
oidc.home = https://beta.services.openaire.eu/uoa-user-management/openid_connect_login
|
||||
webbapp.front = https://beta.explore.openaire.eu/
|
||||
oidc.home = http://rudie.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/openid_connect_login
|
||||
#oidc.home = https://beta.services.openaire.eu/uoa-user-management/openid_connect_login
|
||||
#webbapp.front = https://beta.explore.openaire.eu/
|
||||
webbapp.front = http://scoobydoo.di.uoa.gr:4200
|
||||
webbapp.front.path = /
|
||||
webbapp.front.domain = .di.uoa.gr
|
||||
webbapp.front.domain = .di.uoa.gr
|
||||
|
||||
google.recaptcha.secret = 6LfYrU8UAAAAADwrbImPvDo_XcxEZvrkkgMy9yU0
|
||||
google.recaptcha.key = 6LfYrU8UAAAAAFsl3m2YhP1uavdmAdFEXBkoY_vd
|
|
@ -12,8 +12,6 @@
|
|||
<context:component-scan base-package="eu.dnetlib.openaire.usermanagement.*"/>
|
||||
<context:annotation-config />
|
||||
|
||||
|
||||
|
||||
<import resource="classpath*:/eu/dnetlib/openaire/user/springContext-userManagementService.xml" />
|
||||
|
||||
<!--<bean id="webexpressionHandler"-->
|
||||
|
|
|
@ -1150,3 +1150,43 @@ color: black;
|
|||
.list-horizontal-line > span:last-child {
|
||||
border-right:none;
|
||||
}
|
||||
|
||||
.msg_first_name_error {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.msg_last_name_error {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.msg_username_error {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.msg_email_conf_error {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.msg_email_error {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.msg_password_error{
|
||||
display:none;
|
||||
}
|
||||
|
||||
.msg_pass_conf_error {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.msg_email_validation_error {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.msg_invalid_password {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.recaptcha_error {
|
||||
display:none;
|
||||
}
|
|
@ -8,10 +8,10 @@
|
|||
<title>OpenAIRE - Forgot password</title>
|
||||
<script src="./js/jquery.js"></script>
|
||||
<script src="./js/uikit.js"></script>
|
||||
<script src="./js/validation.js"></script>
|
||||
<link rel="stylesheet" style="text/css" href="./css/theme.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/custom.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/aai-custom.css">
|
||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
||||
</head>
|
||||
<body class="" style="">
|
||||
<div class="uk-offcanvas-content uk-height-viewport">
|
||||
|
@ -59,7 +59,9 @@
|
|||
<span class="msg_email_validation_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter a valid email.</span>
|
||||
<input id="email" name="email" type="text" placeholder="Email" class="form-control"></div>
|
||||
<div class="uk-margin uk-grid-small uk-child-width-auto uk-grid uk-text-left uk-grid-stack" uk-grid="">
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">RECAPTHA I AM NOT A ROBOT THING GOES HERE</div>
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">
|
||||
<div class="g-recaptcha" data-sitekey=${applicationScope.sitekey}></div>
|
||||
</div>
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">
|
||||
<button type="submit" class="uk-button uk-button-primary" onclick="return validateForm();">Submit</button>
|
||||
</div>
|
||||
|
|
|
@ -12,7 +12,6 @@ function validateForm() {
|
|||
var isEmailFilled = false;
|
||||
var isPasswordFilled = false;
|
||||
|
||||
|
||||
// Check if first name is filled
|
||||
if($("#first_name").val() != undefined) {
|
||||
if($.trim($("#first_name").val()).length <= 0) {
|
||||
|
@ -155,6 +154,15 @@ function validateForm() {
|
|||
}
|
||||
}
|
||||
|
||||
var recaptcha = grecaptcha.getResponse();
|
||||
if (recaptcha!=null && recaptcha !== undefined && recaptcha.length > 0) {
|
||||
$(".recaptcha_error").hide();
|
||||
|
||||
} else {
|
||||
hasError = true;
|
||||
$(".recaptcha_error").show();
|
||||
}
|
||||
|
||||
return !hasError;
|
||||
}
|
||||
|
||||
|
@ -164,7 +172,7 @@ function validateEmail(email) {
|
|||
}
|
||||
|
||||
function validatePassword(password) {
|
||||
var pattern = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}$/;
|
||||
var pattern = /^(?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])\S{6,}$/;
|
||||
return pattern.test(password);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
<link rel="stylesheet" style="text/css" href="./css/theme.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/custom.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/aai-custom.css">
|
||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
||||
</head>
|
||||
<body class="" style="">
|
||||
<div class="uk-offcanvas-content uk-height-viewport">
|
||||
|
@ -61,13 +62,17 @@
|
|||
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
|
||||
<div class="alert alert-success" aria-hidden="true" style="display: none;"></div>
|
||||
<div class="alert alert-danger" aria-hidden="true" style="display: none;"></div>
|
||||
<span id="server_error" class="uk-text-danger uk-text-small uk-float-left">${message}</span>
|
||||
<c:remove var="message" scope="session" />
|
||||
<div class="form-group">
|
||||
<span class="msg_first_name_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter your first name.</span>
|
||||
<span class="msg_first_name_error uk-text-danger uk-text-small uk-float-left" style='${msg_first_name_error_display}'>Please enter your first name.</span>
|
||||
<input id="first_name" name="first_name" type="text" placeholder="First name (*)" class="form-control" value=${first_name}></div>
|
||||
<c:remove var="msg_first_name_error_display" scope="session" />
|
||||
<c:remove var="first_name" scope="session" />
|
||||
<div class="form-group">
|
||||
<span class="msg_last_name_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter your last name.</span>
|
||||
<span class="msg_last_name_error uk-text-danger uk-text-small uk-float-left" style="${msg_last_name_error_display}">Please enter your last name.</span>
|
||||
<input id="last_name" name="last_name" type="text" placeholder="Last name (*)" class="form-control" value=${last_name}></div>
|
||||
<c:remove var="msg_last_name_error_display" scope="session" />
|
||||
<c:remove var="last_name" scope="session" />
|
||||
<div class="form-group">
|
||||
<input id="organization" name="organization" type="text" placeholder="Affiliation / Organization:" class="form-control" value=${organization}></div>
|
||||
|
@ -87,30 +92,42 @@
|
|||
<input id="username" name="username" type="text" placeholder="Username (*)" class="form-control" value=${username}></div>
|
||||
<c:remove var="username" scope="session" />
|
||||
<div class="form-group">
|
||||
<span class="msg_email_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter your email.</span>
|
||||
<span class="msg_email_validation_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter a valid email.</span>
|
||||
<span class="msg_email_conf_error uk-text-danger uk-text-small uk-float-left" style="display:none">These emails don't match.</span>
|
||||
<span class="msg_email_error uk-text-danger uk-text-small uk-float-left" style="${msg_email_error_display}">Please enter your email.</span>
|
||||
<span class="msg_email_validation_error uk-text-danger uk-text-small uk-float-left" style="${msg_email_validation_error_display}">Please enter a valid email.</span>
|
||||
<span class="msg_email_conf_error uk-text-danger uk-text-small uk-float-left" style="${msg_email_conf_error_display}">These emails don't match.</span>
|
||||
<span id="email_server_error" class="uk-text-danger uk-text-small uk-float-left">${email_message}</span>
|
||||
<c:remove var="msg_email_conf_error_display" scope="session" />
|
||||
<c:remove var="msg_email_validation_error_display" scope="session" />
|
||||
<c:remove var="email_message" scope="session" />
|
||||
<input id="email" name="email" type="text" placeholder="Email (*)" class="form-control" value=${email}></div>
|
||||
<c:remove var="email" scope="session" />
|
||||
<c:remove var="msg_email_error_display" scope="session" />
|
||||
<div class="form-group">
|
||||
<input id="email_conf" name="email_conf" type="text" placeholder="Confirm email (*)" class="form-control" value=${email_conf}></div>
|
||||
<c:remove var="email_conf" scope="session" />
|
||||
<div class="form-group">
|
||||
<span class="msg_password_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter your password.</span>
|
||||
<span class="msg_pass_conf_error uk-text-danger uk-text-small uk-float-left" style="display:none">These passwords don't match.</span>
|
||||
<p><span class="msg_please_add uk-text-danger uk-text-small uk-float-left" style="display:none">Please add:  </span></p>
|
||||
<span class="msg_password_error uk-text-danger uk-text-small uk-float-left" style="${msg_password_error_display}">Please enter your password.</span>
|
||||
<span class="msg_pass_conf_error uk-text-danger uk-text-small uk-float-left" style="${msg_pass_conf_error_display}">These passwords don't match.</span>
|
||||
<p>
|
||||
<span class="msg_whitespace uk-text-danger uk-text-small uk-float-left" style="display:none">White space is not allowed</span>
|
||||
<span class="msg_please_add uk-text-danger uk-text-small uk-float-left" style="display:none">Please add:  </span></p>
|
||||
<span class="msg_lowercase_letter uk-text-danger uk-text-small uk-float-left" style="display:none">A lowercase letter.  </span>
|
||||
<span class="msg_capital_letter uk-text-danger uk-text-small uk-float-left" style="display:none">A capital (uppercase) letter.   </span>
|
||||
<span class="msg_number uk-text-danger uk-text-small uk-float-left" style="display:none">A number.  </span>
|
||||
<span class="msg_lenght uk-text-danger uk-text-small uk-float-left" style="display:none">Minimum 6 characters.  </span>
|
||||
<span class="msg_lenght uk-text-danger uk-text-small uk-float-left" style="display:none">Minimum 6 characters (no white space allowed).  </span>
|
||||
<span class="msg_invalid_password uk-text-danger uk-text-small uk-float-left" style="${msg_invalid_password_display}">The password must
|
||||
contain a lowercase letter, a capital (uppercase) letter, a number and must be at least 6 characters long. White space character is not allowed.</span>
|
||||
<input id="password" name="password" type="password" placeholder="Password" class="form-control"></div>
|
||||
<c:remove var="msg_pass_conf_error_display" scope="session" />
|
||||
<c:remove var="msg_password_error_display" scope="session" />
|
||||
<c:remove var="msg_invalid_password_display" scope="session" />
|
||||
<div class="form-group">
|
||||
<input id="password_conf" name="password_conf" type="password" placeholder="Confirm password" class="form-control"></div>
|
||||
<div class="uk-margin uk-grid-small uk-child-width-auto uk-grid uk-text-left uk-grid-stack" uk-grid="">
|
||||
<div class="uk-width-1-1 uk-text-meta uk-text-danger uk-first-column">(*) Required fields</div>
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">RECAPTHA I AM NOT A ROBOT THING GOES HERE</div>
|
||||
<span class="uk-text-danger uk-text-small recaptcha_error" style="${recaptcha_error_display}">You missed the reCAPTCHA validation!</span>
|
||||
<c:remove var="recaptcha_error_display" scope="session" />
|
||||
<div class="g-recaptcha" data-sitekey=${applicationScope.sitekey}></div>
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">
|
||||
<button type="submit" class="uk-button uk-button-primary" onclick="return validateForm();">Register</button>
|
||||
</div>
|
||||
|
@ -119,14 +136,23 @@
|
|||
</div>
|
||||
<!-- END OF REGISTER FORM -->
|
||||
<script>
|
||||
|
||||
var myInput = document.getElementById("password");
|
||||
var usernameInput = document.getElementById("username");
|
||||
//var myEmailInput = document.getElementById("email");
|
||||
|
||||
$("#password").focusin(function () {
|
||||
$(".msg_invalid_password").fadeOut();
|
||||
});
|
||||
|
||||
// When the user starts to type something inside the password field
|
||||
myInput.onkeyup = function() {
|
||||
|
||||
if (/\s/g.test(myInput.value)) {
|
||||
$("msg_whitespace").fadeIn();
|
||||
} else {
|
||||
$("msg_whitespace").fadeOut();
|
||||
}
|
||||
|
||||
// Validate lowercase letters
|
||||
var lowerCaseLetters = /[a-z]/g;
|
||||
if (myInput.value.match(lowerCaseLetters)) {
|
||||
|
@ -302,17 +328,27 @@
|
|||
</div>
|
||||
<!-- CONTENT ENDS HERE -->
|
||||
<!-- FOOTER STARTS HERE-->
|
||||
<div class="custom-footer">
|
||||
<div class="uk-section-primary uk-section uk-section-small uk-padding-remove-bottom">
|
||||
<div class="custom-footer" style="z-index: 200;">
|
||||
<div class="uk-section-primary uk-section uk-section-small">
|
||||
<div class="uk-container">
|
||||
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
|
||||
<div class="uk-width-expand@m uk-light uk-first-column">
|
||||
FOOTER???
|
||||
</div>
|
||||
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
|
||||
<div class="uk-width-1-1@m uk-first-column">
|
||||
<div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-center">
|
||||
<img alt="OpenAIRE" class="el-image" src="./images/Logo_Horizontal_white_small.png">
|
||||
</div>
|
||||
<div class="footer-license uk-margin uk-margin-remove-bottom uk-text-center uk-text-lead">
|
||||
<div><a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="license"><img alt="Creative" src="./images/80x15.png" style="height: auto; max-width: 100%; vertical-align: middle;"></a> UNLESS OTHERWISE INDICATED, ALL MATERIALS CREATED BY THE OPENAIRE CONSORTIUM ARE LICENSED UNDER A <a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE</a>.</div>
|
||||
<div>OPENAIRE IS POWERED BY <a href="http://www.d-net.research-infrastructures.eu/">D-NET</a>.</div>
|
||||
</div>
|
||||
<div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-right">
|
||||
<a class="uk-totop uk-icon" href="#" uk-scroll="" uk-totop="">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -9,10 +9,11 @@
|
|||
<title>OpenAIRE - Username Reminder</title>
|
||||
<script src="./js/jquery.js"></script>
|
||||
<script src="./js/uikit.js"></script>
|
||||
<script src="./js/validation.js"></script>
|
||||
<link rel="stylesheet" style="text/css" href="./css/theme.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/custom.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/aai-custom.css"></head>
|
||||
<link rel="stylesheet" style="text/css" href="./css/aai-custom.css">
|
||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
||||
</head>
|
||||
<body class="" style="">
|
||||
<div class="uk-offcanvas-content uk-height-viewport">
|
||||
<!-- MENU STARTS HERE -->
|
||||
|
@ -59,7 +60,9 @@
|
|||
<span class="msg_email_validation_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter a valid email.</span>
|
||||
<input id="email" name="email" type="text" placeholder="Email" class="form-control"></div>
|
||||
<div class="uk-margin uk-grid-small uk-child-width-auto uk-grid uk-text-left uk-grid-stack" uk-grid="">
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">RECAPTHA I AM NOT A ROBOT THING GOES HERE</div>
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">
|
||||
<div class="g-recaptcha" data-sitekey=${applicationScope.sitekey}></div>
|
||||
</div>
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">
|
||||
<button type="submit" class="uk-button uk-button-primary" onclick="return validateForm();">Submit</button>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue