82 lines
2.0 KiB
Java
82 lines
2.0 KiB
Java
package org.gcube.application.geoportal.common.model.useCaseDescriptor;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
import lombok.*;
|
|
import org.bson.Document;
|
|
import org.gcube.application.geoportal.common.model.document.Project;
|
|
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
|
|
|
import java.util.List;
|
|
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
@Getter
|
|
@Setter
|
|
@ToString
|
|
public class DataAccessPolicy {
|
|
|
|
public static final String POLICY = "_policy";
|
|
public static final String ROLES = "_roles";
|
|
public static final String ENFORCER = "_enforcer";
|
|
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
@Getter
|
|
@Setter
|
|
@ToString
|
|
public static class Policy {
|
|
public static final String WRITE="_write";
|
|
public static final String READ="_read";
|
|
|
|
public static enum Type{
|
|
OWN,NONE,ANY
|
|
}
|
|
|
|
@JsonProperty(WRITE)
|
|
private Type write;
|
|
@JsonProperty(READ)
|
|
private Type read;
|
|
}
|
|
|
|
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
@Getter
|
|
@Setter
|
|
@ToString
|
|
public static class PolicyEnforcer {
|
|
public static final String FILTER="_filter";
|
|
@JsonProperty(FILTER)
|
|
private Document filter;
|
|
}
|
|
|
|
|
|
@JsonProperty(POLICY)
|
|
private Policy policy;
|
|
@JsonProperty(ROLES)
|
|
private List<String> roles;
|
|
@JsonProperty(ENFORCER)
|
|
private PolicyEnforcer enforcer;
|
|
|
|
@JsonIgnore
|
|
public boolean canRead(Project p, User u){
|
|
switch(getPolicy().getRead()){
|
|
case OWN: return p.getInfo().getCreationInfo().getUser().equals(u);
|
|
case ANY: return true;
|
|
case NONE:
|
|
default : return false;
|
|
}
|
|
}
|
|
|
|
@JsonIgnore
|
|
public boolean canWrite(Project p, User u){
|
|
switch(getPolicy().getWrite()){
|
|
case OWN: return p.getInfo().getCreationInfo().getUser().equals(u);
|
|
case ANY: return true;
|
|
case NONE:
|
|
default : return false;
|
|
}
|
|
}
|
|
}
|