X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=inline;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2FUiAdminUtils.java;h=cb1396c957537527c40d7b5db4f4f29082b6270e;hb=98f57ce4987d7a7bfcea4806b20520f1a01830fa;hp=4419d80a9e0b9387ba1dd37f489d831d1e4ef4e8;hpb=a1d862e4ef6221ebc91fcccea688d66504020365;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UiAdminUtils.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UiAdminUtils.java index 4419d80a9..cb1396c95 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UiAdminUtils.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UiAdminUtils.java @@ -1,15 +1,20 @@ package org.argeo.security.ui.admin.internal; import java.security.AccessController; +import java.util.List; +import java.util.Set; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; +import javax.naming.ldap.Rdn; import javax.security.auth.Subject; import javax.security.auth.x500.X500Principal; import javax.transaction.Status; import javax.transaction.UserTransaction; import org.argeo.ArgeoException; +import org.argeo.cms.auth.AuthConstants; +import org.argeo.cms.auth.CurrentUser; import org.argeo.osgi.useradmin.LdifName; import org.argeo.security.ui.admin.internal.providers.UserTransactionProvider; import org.eclipse.ui.IWorkbenchWindow; @@ -28,6 +33,12 @@ public class UiAdminUtils { return getUsername(getUser(userAdmin, dn)); } + /** Returns true if the current user is in the specified role */ + public static boolean isUserInRole(String role) { + Set roles = CurrentUser.roles(); + return roles.contains(role); + } + public final static boolean isCurrentUser(User user) { String userName = getProperty(user, LdifName.dn.name()); try { @@ -68,6 +79,33 @@ public class UiAdminUtils { return cn; } + /** Simply retrieves a display name of the relevant domain */ + public final static String getDomainName(User user) { + String dn = (String) user.getProperties().get(LdifName.dn.name()); + if (dn.endsWith(AuthConstants.ROLES_BASEDN)) + return "System roles"; + try { + LdapName name; + name = new LdapName(dn); + List rdns = name.getRdns(); + String dname = null; + int i = 0; + loop: while (i < rdns.size()) { + Rdn currrRdn = rdns.get(i); + if (!"dc".equals(currrRdn.getType())) + break loop; + else { + String currVal = (String) currrRdn.getValue(); + dname = dname == null ? currVal : currVal + "." + dname; + } + i++; + } + return dname; + } catch (InvalidNameException e) { + throw new ArgeoException("Unable to get domain name for " + dn, e); + } + } + public final static String getProperty(Role role, String key) { Object obj = role.getProperties().get(key); if (obj != null)