package com.constellio.model.services.security;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.constellio.data.utils.ImpossibleRuntimeException;
public final class ContentPermissions {
public static final ContentPermission READ = new ContentPermission("read");
public static final ContentPermission WRITE = new ContentPermission("write", READ);
public static final ContentPermission DELETE = new ContentPermission("delete", READ);
public static final List<ContentPermission> ALL_CONTENT_PERMISSIONs;
static {
List<ContentPermission> allContentPermissions = new ArrayList<>();
allContentPermissions.add(READ);
allContentPermissions.add(WRITE);
allContentPermissions.add(DELETE);
ALL_CONTENT_PERMISSIONs = Collections.unmodifiableList(allContentPermissions);
}
public static ContentPermission get(String permissionCode) {
for (ContentPermission contentPermission : ALL_CONTENT_PERMISSIONs) {
if (contentPermission.getCode().equals(permissionCode)) {
return contentPermission;
}
}
throw new ImpossibleRuntimeException("No such permission : " + permissionCode);
}
public static boolean hasPermission(List<ContentPermission> contentPermissions, ContentPermission wantedContentPermission) {
String wantedPermissionCode = wantedContentPermission.getCode();
for (ContentPermission contentPermission : contentPermissions) {
if (contentPermission.getCode().equals(wantedPermissionCode) || contentPermission.getDependencies()
.contains(wantedPermissionCode)) {
return true;
}
}
return false;
}
}