package org.hadatac.console.models;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import java.util.Properties;
import org.jasypt.util.text.BasicTextEncryptor;
import play.libs.F.Option;
import play.mvc.QueryStringBindable;
public class LabKeyLoginForm implements QueryStringBindable<LabKeyLoginForm> {
public String user_name = "";
public String password = "";
private BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
public LabKeyLoginForm(){
Properties prop = new Properties();
try {
InputStream is = getClass().getClassLoader().getResourceAsStream("labkey.config");
prop.load(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
textEncryptor.setPassword(prop.getProperty("encryption_key"));
}
public String getUserName() {
return user_name;
}
public String getPassword() {
return password;
}
@Override
public Option<LabKeyLoginForm> bind(String key, Map<String, String[]> data) {
if (data.containsKey(key + ".user") && data.containsKey(key + ".password")) {
String user_name_temp = data.get(key + ".user")[0];
String password_temp = data.get(key + ".password")[0];
if(!user_name_temp.isEmpty()){
user_name = textEncryptor.decrypt(user_name_temp);
password = textEncryptor.decrypt(password_temp);
}
return Option.<LabKeyLoginForm>Some(this);
} else {
return Option.<LabKeyLoginForm>None();
}
}
@Override
public String javascriptUnbind() {
return null;
}
@Override
public String unbind(String key) {
String user_name_encry = "";
String password_encry = "";
if(!user_name.isEmpty()){
user_name_encry = textEncryptor.encrypt(user_name);
try {
user_name_encry = URLEncoder.encode(user_name_encry, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
password_encry = textEncryptor.encrypt(password);
try {
password_encry = URLEncoder.encode(password_encry, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return key + ".user=" + user_name_encry + "&" + key + ".password=" + password_encry;
}
}