X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fauth%2FImpliedByPrincipal.java;h=15c47293ec06cf8423aefcb60cd5c146b7e4c113;hb=e023e9027edc0d734d11cb759259eaebb6d68bc9;hp=c753601296657c9e69d03499a7b931ad9bdf8ee4;hpb=3df0adaee4a48c10452fb2064fb8e608b9c985d1;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/ImpliedByPrincipal.java b/org.argeo.cms/src/org/argeo/cms/internal/auth/ImpliedByPrincipal.java index c75360129..15c47293e 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/ImpliedByPrincipal.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/auth/ImpliedByPrincipal.java @@ -1,17 +1,13 @@ package org.argeo.cms.internal.auth; import java.security.Principal; -import java.util.Collections; -import java.util.Dictionary; -import java.util.Enumeration; import java.util.HashSet; import java.util.Set; -import javax.naming.InvalidNameException; -import javax.naming.ldap.LdapName; +import javax.xml.namespace.QName; +import org.argeo.cms.auth.RoleNameUtils; import org.osgi.service.useradmin.Authorization; -import org.osgi.service.useradmin.Role; /** * A {@link Principal} which has been implied by an {@link Authorization}. If it @@ -21,67 +17,42 @@ import org.osgi.service.useradmin.Role; * identity is removed, the related {@link ImpliedByPrincipal}s can thus be * removed. */ -public final class ImpliedByPrincipal implements Principal, Role { - private final LdapName name; - private Set causes = new HashSet(); +public final class ImpliedByPrincipal implements Principal { + private final String name; + private final QName roleName; + private final boolean systemRole; + private final String context; - private int type = Role.ROLE; + private Set causes = new HashSet(); public ImpliedByPrincipal(String name, Principal userPrincipal) { - try { - this.name = new LdapName(name); - } catch (InvalidNameException e) { - throw new IllegalArgumentException("Badly formatted role name", e); - } - if (userPrincipal != null) - causes.add(userPrincipal); - } - - public ImpliedByPrincipal(LdapName name, Principal userPrincipal) { this.name = name; + roleName = RoleNameUtils.getLastRdnAsName(name); + systemRole = RoleNameUtils.isSystemRole(roleName); + context = RoleNameUtils.getContext(name); if (userPrincipal != null) causes.add(userPrincipal); } public String getName() { - return name.toString(); - } - - public boolean addMember(Principal user) { - throw new UnsupportedOperationException(); - } - - public boolean removeMember(Principal user) { - throw new UnsupportedOperationException(); - } - - public boolean isMember(Principal member) { - return causes.contains(member); - } - - public Enumeration members() { - return Collections.enumeration(causes); + return name; } /* - * USER ADMIN + * OBJECT */ - @Override - /** Type of {@link Role}, if known. */ - public int getType() { - return type; + public QName getRoleName() { + return roleName; } - @Override - /** Not supported for the time being. */ - public Dictionary getProperties() { - throw new UnsupportedOperationException(); + public String getContext() { + return context; } - /* - * OBJECT - */ + public boolean isSystemRole() { + return systemRole; + } @Override public int hashCode() { @@ -90,8 +61,6 @@ public final class ImpliedByPrincipal implements Principal, Role { @Override public boolean equals(Object obj) { - // if (this == obj) - // return true; if (obj instanceof ImpliedByPrincipal) { ImpliedByPrincipal that = (ImpliedByPrincipal) obj; // TODO check members too? @@ -102,7 +71,6 @@ public final class ImpliedByPrincipal implements Principal, Role { @Override public String toString() { - // return name.toString() + " implied by " + causes; return name.toString(); } }