base.jee.api.cassandra.InitialSetup 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.api.cassandra;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;
import base.Command;
import base.jee.Constants;
import base.json.Json;
import base.security.ResourceUid;
import base.security.User;
import com.datastax.driver.core.Session;
import static base.jee.api.cassandra.util.AddPerson.addPerson;
import static base.jee.api.cassandra.util.HasPersonRecord.hasPersonRecord;
import static base.jee.api.cassandra.util.Log.log;
import static base.jee.api.cassandra.util.UpdateSetting.updateSetting;
import static base.jee.api.cassandra.util.UpsertRole.upsertRole;
public class InitialSetup extends Command {
private CassandraAPI c;
private String firstName;
private String lastName;
private String emailAddress;
private String username;
private String password;
private String smtpHostname;
private int smtpPort;
private boolean selfSignup;
private String ip;
public InitialSetup(CassandraAPI c, String firstName, String lastName, String emailAddress, String username, String password, String smtpHostname, int smtpPort, boolean selfSignup, String ip) {
if(c == null) {
throw new IllegalArgumentException("Invalid parameter: c");
}
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(emailAddress == null || emailAddress.trim().length() == 0) {
throw new IllegalArgumentException("Invalid parameter: emailAddress");
}
if((username == null || username.trim().length() == 0) && (password == null || password.length() == 0)) {
throw new IllegalArgumentException("Must specify either a username or a password.");
}
if(smtpHostname == null || smtpHostname.length() == 0) {
throw new IllegalArgumentException("Invalid parameter: smtpHostname");
}
if(ip == null || ip.trim().length() == 0) {
throw new IllegalArgumentException("Invalid parameter: ip");
}
this.c = c;
this.firstName = firstName.trim();
this.lastName = lastName.trim();
this.password = password;
this.smtpHostname = smtpHostname;
this.smtpPort = smtpPort;
this.emailAddress = emailAddress.trim().toLowerCase();
this.selfSignup = selfSignup;
this.ip = ip;
if(username != null) {
this.username = username.trim().toLowerCase();
}
}
public InitialSetup() {
}
@Override
protected void execute() throws IOException {
Session s = c.getCassandraSession();
if(hasPersonRecord(s)) {
throw new IllegalStateException("InitialSetup may only be called once.");
}
updateSetting(s, "smtp.hostname", smtpHostname);
updateSetting(s, "smtp.port", "" + smtpPort);
updateSetting(s, "self.signup", "" + selfSignup);
UUID personUuid = addPerson(s, firstName, lastName, emailAddress, username, password, null);
User u = User.userWithUuidAndIp(personUuid, ip);
upsertRole(s, personUuid, Constants.PERSON_MANAGE_ROLE, u);
upsertRole(s, personUuid, Constants.SETTING_MANAGE_ROLE, u);
upsertRole(s, personUuid, Constants.TEMPLATE_MANAGE_ROLE, u);
upsertRole(s, personUuid, Constants.GROUP_MANAGE_ROLE, u);
upsertRole(s, personUuid, Constants.AUDIT_ROLE, u);
log(s, "INFO", u, "Executed initial setup.", new ResourceUid("Person", personUuid));
}
@Override
public String getJsonParameters() {
return "{" +
"\"firstname\":\"" + Json.escape(firstName)+ "\"," +
"\"lastname\":\"" + Json.escape(lastName)+ "\"," +
"\"emailaddress\":\"" + Json.escape(emailAddress)+ "\"," +
"\"username\":\"" + Json.escape(username)+ "\"," +
"\"password\":\"" + Json.escape(password)+ "\"," +
"\"smtp.hostname\":\"" + Json.escape(smtpHostname)+ "\"," +
"\"smtp.port\":" + smtpPort+ "," +
"\"self.signup\":" + selfSignup+ "" +
"}";
}
@Override
public Command newWithParameters(Map parameters) throws IOException {
throw new IllegalArgumentException("InitialSetup may not be instantiated with parameter map");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy