package org.openeai.uportal.handlers;
import org.openeai.moa.jmsobjects.JmsEnterpriseObject;
import org.openeai.jms.producer.PointToPointProducer;
import org.any_openeai_enterprise.moa.objects.resources.v1_0.LightweightPerson;
import org.any_openeai_enterprise.moa.objects.resources.v1_0.Name;
import org.any_openeai_enterprise.moa.jmsobjects.coreapplication.v1_0.EnterpriseUser;
import org.any_openeai_enterprise.moa.jmsobjects.coreapplication.v1_0.NetId;
import org.any_openeai_enterprise.moa.objects.resources.v1_0.Password;
import org.any_openeai_enterprise.moa.jmsobjects.coreapplication.v1_0.EnterpriseUserPassword;
import org.jasig.portal.services.LogService;
import org.jasig.portal.security.provider.AccountStoreFactory;
public class EnterpriseUserPasswordQueryHandler extends UportalFormHandlerBase implements UportalFormHandler {
public EnterpriseUserPasswordQueryHandler() {
}
public String process() throws UportalFormHandlerException {
String messageObjectName = getProperties().getProperty(MESSAGE_OBJECT_NAME_PROP);
String queryObjectName = getProperties().getProperty(QUERY_OBJECT_NAME_PROP);
String producerName = getProperties().getProperty(PRODUCER_NAME_PROP);
String xml = INITIAL_XML;
String firstName = (String)getChannelStaticData().getPerson().getAttribute("givenName");
String lastName = (String)getChannelStaticData().getPerson().getAttribute("sn");
String instId = Integer.toString(getChannelStaticData().getPerson().getID());
int principalHashCode = getChannelStaticData().getPerson().getSecurityContext().getPrincipal().hashCode();
String userName = getChannelStaticData().getPerson().getSecurityContext().getPrincipal().getUID();
String emailAddress = (String)getChannelStaticData().getPerson().getAttribute("mail");
// String principal = emailAddress.substring(0, emailAddress.indexOf("@"));
String principal = getChannelStaticData().getPerson().getSecurityContext().getPrincipal().getUID();
String domain = emailAddress.substring(emailAddress.indexOf("@") + 1);
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] username (UID) is " + userName);
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] principal is " + principal);
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] domain is " + domain);
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] instId is " + instId);
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] principalHashCode is " + principalHashCode);
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] emailAddress is " + emailAddress);
/*
try {
String acct[] = AccountStoreFactory.getAccountStoreImpl().getUserAccountInformation(userName);
if (acct[0] != null) {
String first_name = acct[1];
String last_name = acct[2];
String md5_passwd = acct[0];
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] user account info (first_name) " + first_name);
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] user account info (last_name) " + last_name);
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] user account info (md5_passwd) " + md5_passwd);
}
}
catch (Exception e) {
LogService.log(LogService.ERROR, e);
e.printStackTrace();
throw new UportalFormHandlerException("Exception obtaining user account information", e);
}
*/
try {
EnterpriseUser eu =
(EnterpriseUser)getAppConfig().getObject(queryObjectName);
eu.getEnterpriseFields().setIgnoreValidation(true);
LogService.log(LogService.INFO, "got EnterpriseUser...");
LightweightPerson lPerson = eu.newLightweightPerson();
lPerson.getEnterpriseFields().setIgnoreValidation(true);
NetId netId = eu.newNetId();
netId.setPrincipal(principal);
netId.setDomain(domain);
eu.addNetId(netId);
if (instId != null && instId.length() > 0) {
lPerson.setInstitutionalId(instId);
Name name = lPerson.newName();
name.setFirstName(firstName);
name.setLastName(lastName);
lPerson.setName(name);
LogService.log(LogService.INFO, "set LightweightPerson on EnterpriseUser...");
eu.setLightweightPerson(lPerson);
JmsEnterpriseObject jeo = (JmsEnterpriseObject)getAppConfig().getObject(messageObjectName);
LogService.log(LogService.INFO, "got " + messageObjectName + " from AppConfig, performing Query...");
// todo - use producer pool
java.util.List returnedJeos =
jeo.query(eu,
(PointToPointProducer)getAppConfig().getObject(producerName));
LogService.log(LogService.INFO, "got " + returnedJeos.size() + " " + messageObjectName + "'s back.");
for (int i=0; i<returnedJeos.size(); i++) {
JmsEnterpriseObject j = (JmsEnterpriseObject)returnedJeos.get(i);
j.getXmlEnterpriseObject().getEnterpriseFields().setIgnoreValidation(true);
xml += j.getXmlEnterpriseObject().toXmlString();
}
if (returnedJeos.size() == 0) {
// todo - if there's no EnterpriseUserPassword object returned, just
// populate one with values from uPortal then, when the password reset
// is done (update handler) do a create instead of an update.
LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] EnterpriseUserPassword doesn't exist, using uPortal info.");
EnterpriseUserPassword eup = (EnterpriseUserPassword)getAppConfig().getObject(messageObjectName);
eup.setEnterpriseUser(eu);
Password p = eup.newPassword();
p.setValue("eupqhunknown");
p.setType("secure credential");
p.setEncryption("cleartext");
eup.setPassword(p);
// eup.create((PointToPointProducer)getAppConfig().getObject(producerName));
// LogService.log(LogService.INFO, "[EnterpriseUserPasswordQueryHandler] EnterpriseUserPassword was created.");
xml += eup.getXmlEnterpriseObject().toXmlString();
}
}
else {
xml += "<LightweightPerson><InstitutionalId></InstitutionalId></LightweightPerson>";
}
}
catch (Exception openeaiExc) {
LogService.log(LogService.ERROR, openeaiExc);
openeaiExc.printStackTrace();
throw new UportalFormHandlerException("Exception rendering XML for display", openeaiExc);
}
return xml;
}
}