/* * Copyright (c) 2008-2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.api.service.impl.response; import java.net.URI; import com.emc.storageos.api.service.authorization.PermissionsHelper; import com.emc.storageos.db.client.model.DataObject; import com.emc.storageos.db.client.model.ProjectResource; import com.emc.storageos.db.client.model.NamedURI; import com.emc.storageos.security.authentication.StorageOSUser; import com.emc.storageos.model.RelatedResourceRep; /* * Filter for project owned resource representations * */ public class ProjOwnedResRepFilter<E extends RelatedResourceRep, K extends DataObject & ProjectResource> extends ResRepFilter<E> { Class<K> _clazz = null; public ProjOwnedResRepFilter(StorageOSUser user, PermissionsHelper permissionsHelper, Class<K> clazz) { super(user, permissionsHelper); _clazz = clazz; } @Override public boolean isAccessible(E resrep) { boolean ret = false; URI id = resrep.getId(); // bypass cache for all the project owned resources K obj = _permissionsHelper.getObjectById(id, _clazz, true); if (obj == null) { return false; } ret = isTenantAccessible(obj.getTenant().getURI()); if (!ret) { NamedURI proj = obj.getProject(); if (proj != null) { ret = isProjectAccessible(proj.getURI()); } } return ret; } }