blob: b647e3482e6e42b0875b4f53afee9d00849d2192 [file] [log] [blame]
/*
* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2014 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
package org.openldap.enmasse;
import org.openldap.fortress.ReviewMgr;
import org.openldap.fortress.ReviewMgrFactory;
import org.openldap.fortress.SecurityException;
import org.openldap.fortress.rbac.OrgUnit;
import org.openldap.fortress.rbac.PermObj;
import org.openldap.fortress.rbac.Permission;
import org.openldap.fortress.rbac.Role;
import org.openldap.fortress.rbac.SDSet;
import org.openldap.fortress.rbac.User;
import org.openldap.fortress.rbac.UserRole;
import org.openldap.fortress.rest.FortRequest;
import org.openldap.fortress.rest.FortResponse;
import org.openldap.fortress.util.attr.VUtil;
import org.apache.log4j.Logger;
import java.util.List;
import java.util.Set;
/**
* Utility for EnMasse Server. This class is thread safe.
*
* @author Shawn McKinney
*/
class ReviewMgrImpl
{
private static final String CLS_NM = ReviewMgrImpl.class.getName();
private static final Logger log = Logger.getLogger(CLS_NM);
FortResponse readPermission(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
Permission inPerm = (Permission) request.getEntity();
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Permission retPerm = reviewMgr.readPermission(inPerm);
response.setEntity(retPerm);
response.setErrorCode(0);
}
catch (org.openldap.fortress.SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse readPermObj(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
PermObj inObj = (PermObj) request.getEntity();
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
PermObj retObj = reviewMgr.readPermObj(inObj);
response.setEntity(retObj);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse findPermissions(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Permission inPerm = (Permission) request.getEntity();
List<Permission> perms = reviewMgr.findPermissions(inPerm);
response.setEntities(perms);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse findPermObjs(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
PermObj inObj = (PermObj) request.getEntity();
List<PermObj> objs = null;
if (VUtil.isNotNullOrEmpty(inObj.getOu()))
{
objs = reviewMgr.findPermObjs(new OrgUnit(inObj.getOu(), OrgUnit.Type.PERM));
}
else
{
objs = reviewMgr.findPermObjs(inObj);
}
response.setEntities(objs);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse readRole(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Role inRole = (Role) request.getEntity();
Role outRole = reviewMgr.readRole(inRole);
response.setEntity(outRole);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse findRoles(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
String searchValue = request.getValue();
if (request.getLimit() != null)
{
List<String> retRoles = reviewMgr.findRoles(searchValue, request.getLimit());
response.setValues(retRoles);
}
else
{
List<Role> roles = reviewMgr.findRoles(searchValue);
response.setEntities(roles);
}
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse readUserM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
User inUser = (User) request.getEntity();
User outUser = reviewMgr.readUser(inUser);
response.setEntity(outUser);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse findUsersM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
User inUser = (User) request.getEntity();
if (request.getLimit() != null)
{
List<String> retUsers = reviewMgr.findUsers(inUser, request.getLimit());
response.setValues(retUsers);
}
else
{
List<User> retUsers;
if (VUtil.isNotNullOrEmpty(inUser.getOu()))
{
retUsers = reviewMgr.findUsers(new OrgUnit(inUser.getOu(), OrgUnit.Type.USER));
}
else
{
retUsers = reviewMgr.findUsers(inUser);
}
response.setEntities(retUsers);
}
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse assignedUsersM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Role inRole = (Role) request.getEntity();
if (request.getLimit() != null)
{
List<String> retUsers = reviewMgr.assignedUsers(inRole, request.getLimit());
response.setValues(retUsers);
}
else
{
List<User> users = reviewMgr.assignedUsers(inRole);
response.setEntities(users);
response.setEntities(users);
}
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse assignedRolesM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
if (VUtil.isNotNullOrEmpty(request.getValue()))
{
String userId = request.getValue();
List<String> retRoles = reviewMgr.assignedRoles(userId);
response.setValues(retRoles);
}
else
{
User inUser = (User) request.getEntity();
List<UserRole> uRoles = reviewMgr.assignedRoles(inUser);
response.setEntities(uRoles);
}
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse authorizedUsersM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Role inRole = (Role) request.getEntity();
List<User> users = reviewMgr.authorizedUsers(inRole);
response.setEntities(users);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse authorizedRoleM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
User inUser = (User) request.getEntity();
Set<String> outSet = reviewMgr.authorizedRoles(inUser);
response.setValueSet(outSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse permissionRolesM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Permission inPerm = (Permission) request.getEntity();
List<String> outList = reviewMgr.permissionRoles(inPerm);
response.setValues(outList);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse authorizedPermissionRolesM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Permission inPerm = (Permission) request.getEntity();
Set<String> outSet = reviewMgr.authorizedPermissionRoles(inPerm);
response.setValueSet(outSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse permissionUsersM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
Permission inPerm = (Permission) request.getEntity();
List<String> outList = reviewMgr.permissionUsers(inPerm);
response.setValues(outList);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse authorizedPermissionUsersM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
Permission inPerm = (Permission) request.getEntity();
Set<String> outSet = reviewMgr.authorizedPermissionUsers(inPerm);
response.setValueSet(outSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse userPermissionsM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
User inUser = (User) request.getEntity();
List<Permission> perms = reviewMgr.userPermissions(inUser);
response.setEntities(perms);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse rolePermissionsM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Role inRole = (Role) request.getEntity();
List<Permission> perms = reviewMgr.rolePermissions(inRole);
response.setEntities(perms);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse ssdRoleSetsM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Role inRole = (Role) request.getEntity();
List<SDSet> outSets = reviewMgr.ssdRoleSets(inRole);
response.setEntities(outSets);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse ssdRoleSetM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
SDSet inSet = (SDSet) request.getEntity();
SDSet outSet = reviewMgr.ssdRoleSet(inSet);
response.setEntity(outSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse ssdRoleSetRolesM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
SDSet inSet = (SDSet) request.getEntity();
Set<String> outSet = reviewMgr.ssdRoleSetRoles(inSet);
response.setValueSet(outSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse ssdRoleSetCardinalityM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
SDSet inSet = (SDSet) request.getEntity();
int cardinality = reviewMgr.ssdRoleSetCardinality(inSet);
inSet.setCardinality(cardinality);
response.setEntity(inSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
}
return response;
}
FortResponse ssdSetsM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
SDSet inSdSet = (SDSet) request.getEntity();
List<SDSet> outSets = reviewMgr.ssdSets(inSdSet);
response.setEntities(outSets);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse dsdRoleSetsM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
Role inRole = (Role) request.getEntity();
List<SDSet> outSets = reviewMgr.dsdRoleSets(inRole);
response.setEntities(outSets);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse dsdRoleSetM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
SDSet inSet = (SDSet) request.getEntity();
SDSet outSet = reviewMgr.dsdRoleSet(inSet);
response.setEntity(outSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse dsdRoleSetRolesM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
SDSet inSet = (SDSet) request.getEntity();
Set<String> outSet = reviewMgr.dsdRoleSetRoles(inSet);
response.setValueSet(outSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
FortResponse dsdRoleSetCardinalityM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
SDSet inSet = (SDSet) request.getEntity();
int cardinality = reviewMgr.dsdRoleSetCardinality(inSet);
inSet.setCardinality(cardinality);
response.setEntity(inSet);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
}
return response;
}
FortResponse dsdSetsM(FortRequest request)
{
FortResponse response = new FortResponse();
try
{
ReviewMgr reviewMgr = ReviewMgrFactory.createInstance(request.getContextId());
reviewMgr.setAdmin(request.getSession());
SDSet inSdSet = (SDSet) request.getEntity();
List<SDSet> outSets = reviewMgr.dsdSets(inSdSet);
response.setEntities(outSets);
response.setErrorCode(0);
}
catch (SecurityException se)
{
log.info(CLS_NM + " caught " + se);
response.setErrorCode(se.getErrorId());
response.setErrorMessage(se.getMessage());
}
return response;
}
}