package org.argeo.cms.util.useradmin;
-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 org.argeo.cms.CmsException;
-import org.argeo.cms.CmsView;
-import org.argeo.cms.auth.AuthConstants;
import org.argeo.cms.auth.CurrentUser;
-import org.argeo.cms.util.CmsUtils;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.jcr.JcrUtils;
-import org.argeo.osgi.useradmin.LdifName;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.node.NodeConstants;
import org.osgi.service.useradmin.Group;
import org.osgi.service.useradmin.Role;
import org.osgi.service.useradmin.User;
public final static String getUsername(User user) {
String username = null;
if (user instanceof Group)
- username = getProperty(user, LdifName.cn.name());
+ username = getProperty(user, LdapAttrs.cn.name());
else
- username = getProperty(user, LdifName.uid.name());
+ username = getProperty(user, LdapAttrs.uid.name());
return username;
}
/** Simply retrieves the current logged-in user display name. */
public static String getCurrentUserDisplayName(UserAdmin userAdmin) {
- String username = getCurrentUsername();
+ String username = CurrentUser.getUsername();
return getUserDisplayName(userAdmin, username);
}
/** Simply retrieves the current logged-in user display name. */
public static String getCurrentUserMail(UserAdmin userAdmin) {
- String username = getCurrentUsername();
+ String username = CurrentUser.getUsername();
return getUserMail(userAdmin, username);
}
/** Simply checks if current user is the same as the passed one */
public static boolean isCurrentUser(User user) {
- String userName = getProperty(user, LdifName.dn.name());
+ String userName = getProperty(user, LdapAttrs.DN);
try {
LdapName selfUserName = getCurrentUserLdapName();
LdapName userLdapName = new LdapName(userName);
else
return false;
} catch (InvalidNameException e) {
- throw new CmsException("User " + user + " has an unvalid dn: "
- + userName, e);
+ throw new CmsException("User " + user + " has an unvalid dn: " + userName, e);
}
}
public final static LdapName getCurrentUserLdapName() {
- String name = getCurrentUsername();
+ String name = CurrentUser.getUsername();
return getLdapName(name);
}
- /** Simply retrieves username for current user, generally a LDAP dn */
- public static String getCurrentUsername() {
- Subject subject = currentSubject();
- String name = subject.getPrincipals(X500Principal.class).iterator()
- .next().toString();
- return name;
- }
-
/**
- * Fork of the {@link CurrentUser#currentSubject} method that is private.
- * TODO Enhance and factorize
+ * Simply retrieves username for current user, generally a LDAP dn
+ *
+ * @deprecated Use {@link CurrentUser#getUsername()}
*/
- private static Subject currentSubject() {
- CmsView cmsView = CmsUtils.getCmsView();
- if (cmsView != null)
- return cmsView.getSubject();
- Subject subject = Subject.getSubject(AccessController.getContext());
- if (subject != null)
- return subject;
- throw new RuntimeException("Cannot find related subject");
- }
+ @Deprecated
+ public static String getCurrentUsername() {
+ return CurrentUser.getUsername();
+ }
+
+ // /**
+ // * Fork of the {@link CurrentUser#currentSubject} method that is private.
+ // * TODO Enhance and factorize
+ // */
+ // private static Subject currentSubject() {
+ // CmsView cmsView = CmsUtils.getCmsView();
+ // if (cmsView != null)
+ // return cmsView.getSubject();
+ // Subject subject = Subject.getSubject(AccessController.getContext());
+ // if (subject != null)
+ // return subject;
+ // throw new RuntimeException("Cannot find related subject");
+ // }
// HOME MANAGEMENT
/**
* the base home node
*/
public static String getCurrentUserHomeRelPath() {
- return getHomeRelPath(getCurrentUsername());
+ return getHomeRelPath(CurrentUser.getUsername());
}
/**
public static String getUserUid(String dn) {
LdapName ldapName = getLdapName(dn);
Rdn last = ldapName.getRdn(ldapName.size() - 1);
- if (last.getType().toLowerCase().equals(LdifName.uid.name())
- || last.getType().toLowerCase().equals(LdifName.cn.name()))
+ if (last.getType().toLowerCase().equals(LdapAttrs.uid.name())
+ || last.getType().toLowerCase().equals(LdapAttrs.cn.name()))
return (String) last.getValue();
else
- throw new CmsException("Cannot retrieve user uid, "
- + "non valid dn: " + dn);
+ throw new CmsException("Cannot retrieve user uid, " + "non valid dn: " + dn);
}
/**
Role user = getRole(userAdmin, getLdapName(dn));
if (user == null)
return getUserUid(dn);
- String displayName = getProperty(user, LdifName.displayName.name());
+ String displayName = getProperty(user, LdapAttrs.displayName.name());
if (EclipseUiUtils.isEmpty(displayName))
- displayName = getProperty(user, LdifName.cn.name());
+ displayName = getProperty(user, LdapAttrs.cn.name());
if (EclipseUiUtils.isEmpty(displayName))
return getUserUid(dn);
else
if (user == null)
return null;
else
- return getProperty(user, LdifName.mail.name());
+ return getProperty(user, LdapAttrs.mail.name());
}
// VARIOUS UI HELPERS
/** Simply retrieves a display name of the relevant domain */
public final static String getDomainName(User user) {
String dn = user.getName();
- if (dn.endsWith(AuthConstants.ROLES_BASEDN))
+ if (dn.endsWith(NodeConstants.ROLES_BASEDN))
return "System roles";
try {
LdapName name = new LdapName(dn);
int i = 0;
loop: while (i < rdns.size()) {
Rdn currrRdn = rdns.get(i);
- if (!LdifName.dc.name().equals(currrRdn.getType()))
+ if (!LdapAttrs.dc.name().equals(currrRdn.getType()))
break loop;
else {
String currVal = (String) currrRdn.getValue();
throw new CmsException("Cannot parse LDAP name " + dn, e);
}
}
-}
\ No newline at end of file
+}