1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
import com.ibm.portal.Identifiable;
import com.ibm.portal.ObjectID;
import com.ibm.portal.ac.AccessControlHome;
import com.ibm.portal.ac.AccessControlRuntimeModel;
import com.ibm.portal.ac.exception.AccessControlException;
import com.ibm.portal.ac.exception.MissingAccessRightsException;
import com.ibm.portal.ac.exception.SystemException;
import com.ibm.wps.portlets.admin.shared.ContextUtil;
...
public static boolean isCurrentUserHasPermissionOnObject(com.ibm.portal.ac.data.RoleType pRoleType,String pUniqNameObject){
// cf http://publib.boulder.ibm.com/infocenter/wpexpdoc/v6r1/topic/com.ibm.wp.exp.doc_v615/dev/wpspacspi.html
// cf http://publib.boulder.ibm.com/infocenter/wpexpdoc/v6r1/topic/com.ibm.wp.exp.doc_v615/dev/wpsobjid.html
javax.naming.Context ctx;
boolean isAllowed=false;
try {
ctx = new javax.naming.InitialContext();
AccessControlHome home = (AccessControlHome) ctx.lookup(AccessControlHome.JNDI_NAME);
Name uniqueName = new CompositeName("portal:uniquename");
uniqueName.add(pUniqNameObject);
ObjectID aUniqNameObject= (ObjectID) ctx.lookup(uniqueName);
AccessControlRuntimeModel runtimeModel = home.getAccessControlRuntimeModel((Identifiable) aUniqNameObject);
ActionRequest aActionRequest = (ActionRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
com.ibm.portal.um.User user = ContextUtil.getUser((ServletRequest) aActionRequest);
isAllowed = runtimeModel.hasPermission( user, pRoleType); // ex RoleType.EDITOR
System.out.println("Is Object ["+pUniqNameObject+"] allowed for ["+pRoleType.getName()+"] role : "+isAllowed);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MissingAccessRightsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AccessControlException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return isAllowed;
} |
Partager