use of pl.x3E.adInterface.ADLoginResponseDocument in project adempiere by adempiere.
the class ADServiceImpl method login.
public ADLoginResponseDocument login(ADLoginRequestDocument req) throws XFireFault {
authenticate(webServiceName, "login");
// TODO: Implement security layer
log.log(Level.SEVERE, "Warning: Security layer not implemented yet - opening web service " + webServiceName + " implies a security risk for server");
ADLoginResponseDocument res = ADLoginResponseDocument.Factory.newInstance();
ADLoginResponse lr = res.addNewADLoginResponse();
ADLoginRequest r = req.getADLoginRequest();
if (// initial phase - return possible translations
r.getStage() == 0) {
LookupValues langs = lr.addNewLangs();
for (int i = 0; i < Language.getLanguageCount(); i++) {
Language language = Language.getLanguage(i);
LookupValue lv = langs.addNewLv();
lv.setKey(language.getAD_Language());
lv.setVal(language.getName());
}
} else if (// Verify user and pass
r.getStage() == 1) {
KeyNamePair[] roles = null;
KeyNamePair[] clients = null;
KeyNamePair[] orgs = null;
KeyNamePair[] warehouses = null;
Login login = new Login(m_cs.getM_ctx());
roles = login.getRoles(r.getUser(), r.getPass());
if (roles == null) {
lr.setStatus(-1);
return res;
} else {
if (r.getRoleID() == -1 && roles != null && roles.length > 0)
r.setRoleID(Integer.parseInt(roles[0].getID()));
if (r.getRoleID() > -1)
clients = login.getClients(new KeyNamePair(r.getRoleID(), ""));
if (r.getClientID() == -1 && clients != null && clients.length > 0)
r.setClientID(Integer.parseInt(clients[0].getID()));
if (r.getClientID() > -1)
orgs = login.getOrgs(new KeyNamePair(r.getClientID(), ""));
if (r.getOrgID() == -1 && orgs != null && orgs.length > 0)
r.setOrgID(Integer.parseInt(orgs[0].getID()));
if (r.getOrgID() > -1)
warehouses = login.getWarehouses(new KeyNamePair(r.getOrgID(), ""));
ADLookup.fillLookupValues(lr.addNewRoles(), roles);
ADLookup.fillLookupValues(lr.addNewClients(), clients);
ADLookup.fillLookupValues(lr.addNewOrgs(), orgs);
ADLookup.fillLookupValues(lr.addNewWarehouses(), warehouses);
}
} else if (// Verify user and pass
r.getStage() == 2) {
Login login = new Login(m_cs.getM_ctx());
KeyNamePair[] roles = login.getRoles(r.getUser(), r.getPass());
if (roles != null) {
KeyNamePair org = new KeyNamePair(r.getRoleID(), Integer.toString(r.getRoleID()));
String error = login.validateLogin(org);
if (error != null && error.length() > 0) {
lr.setStatus(-1);
return res;
}
int AD_User_ID = Env.getAD_User_ID(m_cs.getM_ctx());
if (!m_cs.login(AD_User_ID, r.getRoleID(), r.getClientID(), r.getOrgID(), r.getWarehouseID(), r.getLang())) {
lr.setStatus(-1);
return res;
}
} else {
lr.setStatus(-1);
return res;
}
}
return res;
}
Aggregations