/*
* Copyright (c) 2008-2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.api.service.impl.response;
import com.emc.storageos.api.service.authorization.PermissionsHelper;
import com.emc.storageos.db.client.model.DataObject;
import com.emc.storageos.db.client.model.Project;
import com.emc.storageos.db.client.model.ProjectResourceSnapshot;
import com.emc.storageos.model.RelatedResourceRep;
import com.emc.storageos.security.authentication.StorageOSUser;
import java.net.URI;
/**
* Filter for snapshot resources
*/
public class ProjOwnedSnapResRepFilter<E extends RelatedResourceRep, K extends DataObject & ProjectResourceSnapshot>
extends ResRepFilter<E> {
Class<K> _clazz = null;
public ProjOwnedSnapResRepFilter(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 snapshots
K obj = _permissionsHelper.getObjectById(id, _clazz, true);
if (obj == null || obj.getProject() == null) {
return false;
}
ret = isProjectAccessible(obj.getProject().getURI());
if (!ret) {
Project project = _permissionsHelper.getObjectById(obj.getProject(), Project.class);
ret = isTenantAccessible(project.getTenantOrg().getURI());
}
return ret;
}
}