@Override public PortletResourcePermission getPortletResourcePermission() { return _modelResourcePermissionDefinition. getPortletResourcePermission(); }
public DefaultModelResourcePermission( ModelResourcePermissionDefinition<T> modelResourcePermissionDefinition, List<ModelResourcePermissionLogic<T>> modelResourcePermissionLogics) { _modelResourcePermissionDefinition = modelResourcePermissionDefinition; _modelResourcePermissionLogics = modelResourcePermissionLogics; Class<T> modelClass = modelResourcePermissionDefinition.getModelClass(); _modelName = modelClass.getName(); }
private static <T extends GroupedModel> ModelResourcePermission<T> _create( ModelResourcePermissionDefinition<T> modelResourcePermissionDefinition) { List<ModelResourcePermissionLogic<T>> modelResourcePermissionLogics = new ArrayList<>(); ModelResourcePermission<T> modelResourcePermission = new DefaultModelResourcePermission<>( modelResourcePermissionDefinition, modelResourcePermissionLogics); modelResourcePermissionDefinition.registerModelResourcePermissionLogics( modelResourcePermission, modelResourcePermissionLogics::add); return modelResourcePermission; }
@Override public ServiceRegistration<?> addingService( ServiceReference<PortletResourcePermissionDefinition> serviceReference) { Registry registry = RegistryUtil.getRegistry(); PortletResourcePermissionDefinition portletResourcePermissionDefinition = registry.getService( serviceReference); PortletResourcePermission portletResourcePermission = new DefaultPortletResourcePermission( portletResourcePermissionDefinition.getResourceName(), portletResourcePermissionDefinition. getPortletResourcePermissionLogics()); Map<String, Object> properties = new HashMap<>(); String resourceName = portletResourcePermissionDefinition.getResourceName(); properties.put("resource.name", resourceName); Object serviceRanking = serviceReference.getProperty( "service.ranking"); if (serviceRanking != null) { properties.put("service.ranking", serviceRanking); } return registry.registerService( PortletResourcePermission.class, portletResourcePermission, properties); }
private boolean _contains( PermissionChecker permissionChecker, T model, String actionId) throws PortalException { actionId = _modelResourcePermissionDefinition.mapActionId(actionId); for (ModelResourcePermissionLogic<T> modelResourcePermissionLogic : _modelResourcePermissionLogics) { Boolean contains = modelResourcePermissionLogic.contains( permissionChecker, _modelName, model, actionId); if (contains != null) { return contains; } } String primKey = String.valueOf( _modelResourcePermissionDefinition.getPrimaryKey(model)); if (permissionChecker.hasOwnerPermission( model.getCompanyId(), _modelName, primKey, model.getUserId(), actionId)) { return true; } return permissionChecker.hasPermission( model.getGroupId(), _modelName, primKey, actionId); }
@Override public void check( PermissionChecker permissionChecker, T model, String actionId) throws PortalException { if (!contains(permissionChecker, model, actionId)) { throw new PrincipalException.MustHavePermission( permissionChecker, _modelName, _modelResourcePermissionDefinition.getPrimaryKey(model), actionId); } }
@Override public boolean contains( PermissionChecker permissionChecker, long primaryKey, String actionId) throws PortalException { Map<Object, Object> permissionChecksMap = permissionChecker.getPermissionChecksMap(); PermissionCacheKey permissionCacheKey = new PermissionCacheKey( _modelName, primaryKey, actionId); Boolean contains = (Boolean)permissionChecksMap.get(permissionCacheKey); if (contains == null) { contains = _contains( permissionChecker, _modelResourcePermissionDefinition.getModel(primaryKey), actionId); permissionChecksMap.put(permissionCacheKey, contains); } return contains; }
@Override public ServiceRegistration<?> addingService( ServiceReference<ModelResourcePermissionDefinition> serviceReference) { Registry registry = RegistryUtil.getRegistry(); ModelResourcePermissionDefinition<?> modelResourcePermissionDefinition = registry.getService( serviceReference); ModelResourcePermission<?> modelResourcePermission = _create( modelResourcePermissionDefinition); Map<String, Object> properties = new HashMap<>(); Class<?> modelClass = modelResourcePermissionDefinition.getModelClass(); properties.put("model.class.name", modelClass.getName()); Object serviceRanking = serviceReference.getProperty( "service.ranking"); if (serviceRanking != null) { properties.put("service.ranking", serviceRanking); } return registry.registerService( ModelResourcePermission.class, modelResourcePermission, properties); }
@Override public boolean contains( PermissionChecker permissionChecker, T model, String actionId) throws PortalException { Map<Object, Object> permissionChecksMap = permissionChecker.getPermissionChecksMap(); PermissionCacheKey permissionCacheKey = new PermissionCacheKey( _modelName, _modelResourcePermissionDefinition.getPrimaryKey(model), actionId); Boolean contains = (Boolean)permissionChecksMap.get(permissionCacheKey); if (contains == null) { contains = _contains(permissionChecker, model, actionId); permissionChecksMap.put(permissionCacheKey, contains); } return contains; }