Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
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.api.sql;
  
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 
 import base.KeyValue;
 
 import base.Query;
 import base.json.Json;
 
 import static base.jee.api.sql.util.Log.log;
 
 public class SignUp extends Query<KeyValue> {
 
 	private DataSource ds;
 	private Settings settings;
 	private String firstName;
 	private String lastName;
 	private String email;
 	private String username;
 	private String password;
 	private String ip;
 	private User user;
 
 	public SignUp(DataSource dsTemplateManager templateManagerSettings settingsUser userString firstNameString lastNameString emailString usernameString passwordString ipthrows PermissionException {
 
 		if(ds == null) {
 			throw new IllegalArgumentException("Invalid parameter: ds");
 		}
 		if(templateManager == null) {
 			throw new IllegalArgumentException("Invalid parameter: templateManager");
 		}
 		if(settings == null) {
 			throw new IllegalArgumentException("Invalid parameter: settings");
 		}
 		if(user == null) {
 			throw new IllegalArgumentException("Invalid parameter: user");
 		}
 		if(firstName == null || firstName.trim().length() == 0) {
 			throw new IllegalArgumentException("Invalid parameter: firstName");
 		}
 		if(lastName == null || lastName.trim().length() == 0) {
 			throw new IllegalArgumentException("Invalid parameter: lastName");
 		}
 		if(email == null || email.trim().length() == 0) {
 			throw new IllegalArgumentException("Invalid parameter: email");
 		}
 		if(password == null || password.length() == 0) {
 			throw new IllegalArgumentException("Must specify a password.");
 		}
 		if(ip == null || ip.length() == 0) {
 			throw new IllegalArgumentException("Must specify a IP.");
 		}
 
 		if(username != null && username.trim().length() > .) {
 			throw new IllegalArgumentException("Please choose a shorter username. Usernames should not have more than " + . + " characters.");
 		}
 		if(password.trim().length() > .) {
 			throw new IllegalArgumentException("Please choose a shorter password. Passwords should not have more than " + . + " characters.");
 		}
 		if(firstName.trim().length() > .) {
 			throw new IllegalArgumentException("Please choose a shorter first name. First name should not have more than " + . + " characters.");
 		}
 		if(lastName.trim().length() > .) {
 			throw new IllegalArgumentException("Please choose a shorter last name. Last name should not have more than " + . + " characters.");
 		}
 		if(email.trim().length() > .) {
 			throw new IllegalArgumentException("Please choose a shorter email address. Email should not have more than " + . + " characters.");
 		}
 
 		this. = ds;
 		this. = templateManager;
 		this. = settings;
		this. = firstName.trim();
		this. = lastName.trim();
		this. = email.trim().toLowerCase();
		this. = password;
		this. = user;
		this. = ip;
		if(username != null) {
			this. = username.trim().toLowerCase();
		}
	}
	public SignUp() {
	}
		return new SignUp(
				(DataSource)parameters.get("ds"),
				(TemplateManager)parameters.get("template_manager"),
				(Settings)parameters.get("settings"),
				(User)parameters.get("user"),
				(String)parameters.get("first_name"),
				(String)parameters.get("last_name"),
				(String)parameters.get("email"),
				(String)parameters.get("username"),
				(String)parameters.get("password"),
				((User)parameters.get("user")).getIp());
	}
	protected List<KeyValueexecute() throws IOException {
		List<KeyValueresults = new LinkedList<>();
		Connection c = null;
		PreparedStatement q = null;
		ResultSet r = null;
		try {
			c.setAutoCommit(false);
			// Self sign up must be enabled.
			boolean selfSignup = false;
			String supportTeam = null;
			String supportEmail = null;
					"select " +
					"(select value from setting where name='support_team.name'), " +
					"(select value from setting where name='support_team.email'), " +
					"(select value from setting where name='self.signup')");
			r = q.executeQuery();
			if(r.next()) {
				supportTeam = r.getString(1);
				supportEmail = r.getString(2);
				selfSignup = r.getString(3).equals("true");
			}
			r.close();
			q.close();
			if(!selfSignup) {
				log(c"WARN""Self sign up attempted while self sign up is disabled. Email: " + );
				c.commit();
				results.add(new KeyValue("error""Self sign up is not available at this time."));
				return results;
			}
			// Check email address is an allowed form of email address
			if(!parse.isValid()) {
				results.add(new KeyValue("error""Invalid email address. " + parse.getError()));
				return results;
			}
			q = c.prepareStatement("select email,username from person where email=? or username=?");
			r = q.executeQuery();
			if(r.next() && (.equals(r.getString(1)) || ( != null && .length() > 0 && .equals(r.getString(2))))) {
				if(.equals(r.getString(1))) {
					results.add(new KeyValue("error""Person already exists with this email address."));
					return results;
else {
					results.add(new KeyValue("error""Person already exists with this username."));
					return results;
				}
			}
			r.close();
			r = null;
			q.close();
			q = null;
			// Generate and store an authorisation token to verify this email accounts identity.
			String token = StringHelper.randomString(64);
			log(c"FINEST""Storing sign up confirmation token " + token + " for person " + );
			q = c.prepareStatement("insert into request_token (token, person_uuid, type, ip, expiry, data) values(?,?,'signup_confirmation',?,?,?)");
			q.setString(1, token);
			q.setLong(2, 0);
			q.setString(3, );
			q.setLong(4, (new Date()).getTime()/1000);
					"{\"first_name\":\""+Json.escape()+"\"," +
						"\"last_name\":\""+Json.escape()+"\"," +
						"\"email\":\""+Json.escape(this.)+"\"," +
						( != null && .length() > 0 ?"\"username\":\""+Json.escape()+"\",":"") +
						"\"password\":\""+Json.escape()+"\"}");
			q.close();
			q = null;
			ST html = .getCurrentTemplate().getInstanceOf("signup_confirmation_email_html");
			html.add("first_name");
			html.add("last_name");
			html.add("email"this.);
			html.add("token"token);
			html.add("formurl".get("base.url"));
			ST text = .getCurrentTemplate().getInstanceOf("signup_confirmation_email_text");
			text.add("first_name");
			text.add("last_name");
			text.add("email"this.);
			text.add("token"token);
			text.add("formurl".get("base.url"));
			Email email = new Email();
			email.setTo( + " " +  + " <" + this. + ">");
			email.setFrom(supportTeam + " <" + supportEmail + ">");
			email.setText(text.render());
			email.setHtml(html.render());
			email.setSubject("Signup confirmation");
			// Schedule the email to be delivered via the email delivery queue
			q = c.prepareStatement("insert into email (to_address,email,retries,attempt_at,in_progress) values(?,?,0,?,0)");
			q.setString(1, email.getTo());
			q.setString(2, email.toJson());
			q.setLong(3, new Date().getTime());
			q.close();
			q = null;
			c.commit();
catch(SQLException e) {
			throw new IOException(e);
finally {
			if(r != null) { try { r.close(); } catch (SQLException e) { } }
			if(q != null) { try { q.close(); } catch (SQLException e) { } }
			if(c != null) {
				try { c.rollback(); } catch (SQLException e) { }
				try { c.close(); } catch (SQLException e) { }
			}
		}
		results.add(new KeyValue("success""ok"));
		return results;
	}
		return "{" +
				"\"first_name\":\"" + Json.escape()+ "\"," +
				"\"last_name\":\"" + Json.escape()+ "\"," +
				( != null && .length() > 0 ? "\"username\":\"" + Json.escape()+ "\",":"") +
				"\"email\":\"" + Json.escape()+ "\"" +
				"}";
	}
New to GrepCode? Check out our FAQ X