package org.argeo.osgi.useradmin; import java.util.ArrayList; import java.util.List; import org.osgi.service.useradmin.Authorization; import org.osgi.service.useradmin.Role; public class LdifAuthorization implements Authorization { private final LdifUser user; public LdifAuthorization(LdifUser user) { this.user = user; } @Override public String getName() { return user.getName(); } @Override public boolean hasRole(String name) { for (Role role : getAllRoles()) { if (role.getName().equals(name)) return true; } return false; } @Override public String[] getRoles() { List allRoles = getAllRoles(); String[] res = new String[allRoles.size() + 1]; res[0] = user.getName(); for (int i = 0; i < allRoles.size(); i++) res[i + 1] = allRoles.get(i).getName(); return res; } List getAllRoles() { List allRoles = new ArrayList(); collectRoles(user, allRoles); return allRoles; } private void collectRoles(LdifUser user, List allRoles) { for (LdifGroup group : user.directMemberOf) { // TODO check for loops allRoles.add(group); collectRoles(group, allRoles); } } }