package org.eclipse.emf.emfstore.server.accesscontrol.util;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.emf.emfstore.server.accesscontrol.Permission;
import org.eclipse.emf.emfstore.server.model.accesscontrol.ACGroup;
import org.eclipse.emf.emfstore.server.model.accesscontrol.ACOrgUnit;
import org.eclipse.emf.emfstore.server.model.accesscontrol.ACUser;
import org.eclipse.emf.emfstore.server.model.accesscontrol.PermissionType;
import org.eclipse.emf.emfstore.server.model.accesscontrol.RoleAssignment;
public class PermissionUtil {
public static boolean hasPermissions(ACUser user, Collection<Permission> permissions) {
return getPermissions(user).containsAll(permissions);
}
private static Collection<Permission> getPermissions(ACOrgUnit orgUnit) {
Set<Permission> permissions = new HashSet<Permission>();
for (RoleAssignment assignment : orgUnit.getRoles()) {
for (PermissionType permissionType : assignment.getRole().getPermissionTypes()) {
permissions.add(new Permission(permissionType.getId(), assignment.getProjectId() == null ? null
: assignment.getProjectId().getId()));
}
}
for (ACGroup group : orgUnit.getGroups()) {
permissions.addAll(getPermissions(group));
}
return permissions;
}
}