All Downloads are FREE. Search and download functionalities are using the official Maven repository.

base.jee.servlet.SignUpServlet Maven / Gradle / Ivy

/**
 * Creative commons Attribution-NonCommercial license.
 *
 * http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB
 *
 * NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
 */
package base.jee.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import base.KeyValue;
import base.email.EmailAddressParse;
import base.jee.Constants;
import org.stringtemplate.v4.ST;

import base.jee.Breadcrumb;
import base.jee.JeeBase;
import base.security.User;

/**
 * Display and handle creation of new people.
 */
public class SignUpServlet extends BaseServlet {

	private static final long serialVersionUID = 1L;
	private String version;
	private String build;

	public SignUpServlet(JeeBase jee, String version, String build) throws IOException {
		super(jee);
		this.version = version;
		this.build = build;
	}

	public void doGet(String token, User u, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String error = null;

		String ip = BaseServlet.getIp(request);
		String firstName = request.getParameter("register_firstname");
		String lastName = request.getParameter("register_lastname");
		String email = request.getParameter("register_email");
		String username = request.getParameter("register_username");
		String password = request.getParameter("register_password");
		String password2 = request.getParameter("register_password2");

		if(firstName != null) { firstName = firstName.trim(); }
		if(lastName != null) { lastName = lastName.trim(); }
		if(email != null) { email = email.trim(); }
		if(username != null) { username = username.trim(); }

		EmailAddressParse parse = new EmailAddressParse();

		if(password == null || password2 == null) {
			error = "Please specify a password";
		} else if(jee.getSettings().get("terms_and_conditions", "false").equals("true") && request.getParameter("i_agree") == null) {
			error = "Please indicate you agree to the terms and conditions.";
		} else if(!password.equals(password2)) {
			error = "Your passwords did not match, please check your password.";
		} else if(password.length() < Constants.MIN_PASSWORD_LENGTH) {
			error = "Your password must contain at least " + Constants.MIN_PASSWORD_LENGTH + " characters.";
		} else if(!parse.isValid(email)) {
			error = "Please specify a valid email address. " + parse.getError();
		} else if(firstName != null) {
			try {
				//if(request.getParameter("a") == null || !request.getParameter("a").equals(u.getFormAuthToken())) {
				//	throw new IllegalArgumentException("Invalid authentication token.");
				//}

				List r = jee.getAPI().signUp(jee.getTemplateManager(), u, firstName, lastName, email, username, password, request.getRemoteAddr());
				if(!r.get(0).getKey().equalsIgnoreCase("error")) {
					ST page = jee.getPage(new User(jee.getAPI().getUnauthenticatedRolesCache(), ip), "signup_details");
					page.remove("shortcuts"); // Don't need shortcuts on sign-in page
					page.add("error", error);
					page.add("version", version);
					page.add("build", build);
					page.add("ldap_enabled", jee.getSettings().get("ldap.enabled", "false").equals("true"));
					page.add("self_signup", jee.getSettings().get("self.signup", "false").equals("true"));
					page.add("breadcrumbs", new Breadcrumb("Signin", null));
					response.getWriter().write(page.render());
					return;
				} else {
					error = r.get(0).getValue();
				}

			} catch(IllegalArgumentException e) {
				error = e.getMessage();
			} catch(IllegalStateException e) {
				error = e.getMessage();
			}
		} else {
			error = "Please enter your first name";
		}

		// Sign up failed, go back to sign-in/sign-up page
		ST page = jee.getPage(new User(jee.getAPI().getUnauthenticatedRolesCache(), ip), "signin");
		page.remove("shortcuts"); // Don't need shortcuts on sign-in page
		page.add("error", error);
		page.add("register_email", email);
		page.add("register_firstname", firstName);
		page.add("register_lastname", lastName);
		page.add("version", version);
		page.add("build", build);
		page.add("ldap_enabled", jee.getSettings().get("ldap.enabled", "false").equals("true"));
		page.add("self_signup", jee.getSettings().get("self.signup", "false").equals("true"));
		page.add("terms", jee.getSettings().get("terms_and_conditions", "false").equals("true"));
		page.add("breadcrumbs", new Breadcrumb("Signin", null));
		response.getWriter().write(page.render());
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy