use of com.tremolosecurity.provisioning.objects.Users in project OpenUnison by TremoloSecurity.
the class LoadAuditDBAttributes method doTask.
@Override
public boolean doTask(User user, Map<String, Object> request) throws ProvisioningException {
Session session = null;
try {
session = this.cfg.getProvisioningEngine().getHibernateSessionFactory().openSession();
Query query = session.createQuery("FROM Users WHERE userKey = :user_key");
query.setParameter("user_key", user.getAttribs().get(this.nameAttr).getValues().get(0));
List<com.tremolosecurity.provisioning.objects.Users> users = query.list();
Users userObj = users.get(0);
for (UserAttributes attr : userObj.getUserAttributeses()) {
if (this.attrs.contains(attr.getName())) {
user.getAttribs().put(attr.getName(), new Attribute(attr.getName(), attr.getValue()));
}
}
} catch (Exception e) {
throw new ProvisioningException("Could not load attributes", e);
} finally {
if (session != null) {
session.close();
}
}
return true;
}
use of com.tremolosecurity.provisioning.objects.Users in project OpenUnison by TremoloSecurity.
the class WorkflowImpl method getRequester.
public static User getRequester(String requestorID, Session session, ConfigManager cfgMgr) throws LDAPException, SQLException {
StringBuffer filter = new StringBuffer();
LDAPSearchResults res = cfgMgr.getMyVD().search(cfgMgr.getCfg().getLdapRoot(), 2, equal(cfgMgr.getProvisioningEngine().getUserIDAttribute(), requestorID).toString(), new ArrayList<String>());
LDAPEntry fromLDAP = null;
if (res.hasMore()) {
fromLDAP = res.next();
}
while (res.hasMore()) res.next();
Query query = session.createQuery("FROM Users WHERE userKey = :user_key");
query.setParameter("user_key", requestorID);
List<Users> users = query.list();
Users userObj = null;
session.beginTransaction();
int id = 0;
User requestor = new User(requestorID);
if (users.size() > 0) {
userObj = users.get(0);
id = userObj.getId();
requestor.setJitAddToAuditDB(false);
} else {
userObj = new Users();
userObj.setUserKey(requestor.getUserID());
session.save(userObj);
id = userObj.getId();
if (fromLDAP != null) {
for (String attr : cfgMgr.getProvisioningEngine().getUserAttrbiutes()) {
UserAttributes nattr = new UserAttributes();
nattr.setName(attr);
LDAPAttribute userAttrFromLDAP = fromLDAP.getAttribute(attr);
if (userAttrFromLDAP != null) {
nattr.setValue(userAttrFromLDAP.getStringValue());
nattr.setUsers(userObj);
userObj.getUserAttributeses().add(nattr);
session.save(nattr);
}
}
}
}
for (UserAttributes attr : userObj.getUserAttributeses()) {
Attribute nattr = requestor.getAttribs().get(attr.getName());
if (nattr == null) {
nattr = new Attribute(attr.getName());
requestor.getAttribs().put(nattr.getName(), nattr);
}
nattr.getValues().add(attr.getValue());
}
if (!requestor.getAttribs().containsKey(cfgMgr.getProvisioningEngine().getUserIDAttribute())) {
requestor.getAttribs().put(cfgMgr.getProvisioningEngine().getUserIDAttribute(), new Attribute(cfgMgr.getProvisioningEngine().getUserIDAttribute(), requestor.getUserID()));
}
requestor.setJitAddToAuditDB(true);
session.getTransaction().commit();
return requestor;
}
use of com.tremolosecurity.provisioning.objects.Users in project OpenUnison by TremoloSecurity.
the class WorkflowImpl method getUserNum.
public static int getUserNum(User user, Session session, ConfigManager cfgMgr) throws LDAPException, SQLException {
StringBuffer filter = new StringBuffer();
LDAPEntry fromLDAP = null;
if (user.getAttribs().get(cfgMgr.getProvisioningEngine().getUserIDAttribute()) != null) {
LDAPSearchResults res = cfgMgr.getMyVD().search(cfgMgr.getCfg().getLdapRoot(), 2, and(equal(cfgMgr.getProvisioningEngine().getUserIDAttribute(), user.getAttribs().get(cfgMgr.getProvisioningEngine().getUserIDAttribute()).getValues().get(0)), equal("objectClass", cfgMgr.getCfg().getUserObjectClass())).toString(), new ArrayList<String>());
if (res.hasMore()) {
fromLDAP = res.next();
}
while (res.hasMore()) res.next();
}
Query query = session.createQuery("FROM Users WHERE userKey = :user_key");
query.setParameter("user_key", user.getUserID());
List<Users> users = query.list();
Users userObj = null;
session.beginTransaction();
int id = 0;
if (users.size() > 0) {
userObj = users.get(0);
id = userObj.getId();
user.setJitAddToAuditDB(false);
} else {
userObj = new Users();
userObj.setUserKey(user.getUserID());
session.save(userObj);
id = userObj.getId();
if (fromLDAP != null) {
for (String attr : cfgMgr.getProvisioningEngine().getUserAttrbiutes()) {
UserAttributes nattr = new UserAttributes();
nattr.setName(attr);
LDAPAttribute userAttrFromLDAP = fromLDAP.getAttribute(attr);
if (userAttrFromLDAP != null) {
nattr.setValue(userAttrFromLDAP.getStringValue());
nattr.setUsers(userObj);
session.save(nattr);
} else {
logger.warn("No value for attribute '" + attr + "'");
}
}
} else {
for (String attr : cfgMgr.getProvisioningEngine().getUserAttrbiutes()) {
UserAttributes nattr = new UserAttributes();
nattr.setName(attr);
Attribute fromObj = user.getAttribs().get(attr);
if (fromObj != null) {
nattr.setValue(fromObj.getValues().get(0));
} else {
nattr.setValue("");
}
nattr.setUsers(userObj);
session.save(nattr);
}
}
user.setJitAddToAuditDB(true);
}
StringBuffer sb = new StringBuffer();
if (!user.isJitAddToAuditDB()) {
boolean changed = false;
boolean found = false;
for (String attr : cfgMgr.getProvisioningEngine().getUserAttrbiutes()) {
for (UserAttributes userAttr : userObj.getUserAttributeses()) {
if (attr.equalsIgnoreCase(userAttr.getName())) {
found = true;
if (fromLDAP != null) {
LDAPAttribute userAttrFromLDAP = fromLDAP.getAttribute(attr);
if (userAttrFromLDAP != null) {
if (!userAttrFromLDAP.getStringValue().equals(userAttr.getValue())) {
changed = true;
userAttr.setValue(userAttrFromLDAP.getStringValue());
session.save(userAttr);
}
}
}
}
}
if (!found) {
UserAttributes nattr = new UserAttributes();
nattr.setName(attr);
if (fromLDAP != null) {
LDAPAttribute userAttrFromLDAP = fromLDAP.getAttribute(attr);
if (userAttrFromLDAP != null) {
nattr.setValue(userAttrFromLDAP.getStringValue());
}
} else {
Attribute userAttr = user.getAttribs().get(attr);
if (userAttr != null) {
nattr.setValue(userAttr.getValues().get(0));
}
}
if (nattr.getValue() == null) {
nattr.setValue("");
}
nattr.setUsers(userObj);
userObj.getUserAttributeses().add(nattr);
session.save(nattr);
changed = true;
}
}
if (!changed) {
user.setJitAddToAuditDB(false);
} else {
user.setJitAddToAuditDB(true);
}
}
session.getTransaction().commit();
return id;
}
Aggregations