package org.argeo.app.ui;
import static org.argeo.api.cms.CmsView.CMS_VIEW_UID_PROPERTY;
+import static org.argeo.cms.acr.ContentUtils.SLASH;
import java.util.Collections;
import java.util.HashMap;
import javax.jcr.nodetype.NodeType;
import javax.naming.InvalidNameException;
import javax.naming.ldap.LdapName;
+import javax.xml.namespace.QName;
import org.argeo.api.acr.Content;
import org.argeo.api.acr.ContentRepository;
import org.argeo.cms.CmsUserManager;
import org.argeo.cms.LocaleUtils;
import org.argeo.cms.Localized;
+import org.argeo.cms.acr.CmsContentRepository;
+import org.argeo.cms.acr.ContentUtils;
import org.argeo.cms.jcr.CmsJcrUtils;
import org.argeo.cms.jcr.acr.JcrContent;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.ux.CmsUxUtils;
import org.argeo.eclipse.ui.specific.UiContext;
import org.argeo.jcr.JcrException;
+import org.argeo.osgi.useradmin.LdapNameUtils;
+import org.argeo.osgi.useradmin.UserDirectory;
import org.argeo.util.LangUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
}
} else {
- throw new UnsupportedOperationException("Content " + content.getClass().getName() + " is not supported.");
+
+ List<QName> objectClasses = content.getTypes();
+ Set<String> types = new TreeSet<>();
+ for (QName cc : objectClasses) {
+ String type = cc.getPrefix() + ":" + cc.getLocalPart();
+ if (byType.containsKey(type))
+ types.add(type);
+ }
+ if (types.size() == 0)
+ throw new IllegalArgumentException("No type found for " + content + " (" + objectClasses + ")");
+ String type = types.iterator().next();
+ if (!byType.containsKey(type))
+ throw new IllegalArgumentException("No component found for " + content + " with type " + type);
+ return byType.get(type).get();
+ // throw new UnsupportedOperationException("Content " +
+ // content.getClass().getName() + " is not supported.");
}
}
User user = cmsUserManager.getUser(username);
if (user == null)
return null;
- LdapName userDn;
- try {
- userDn = new LdapName(user.getName());
- } catch (InvalidNameException e) {
- throw new IllegalArgumentException("Badly formatted username", e);
- }
- String userNodePath = SuiteUtils.getUserNodePath(userDn);
+ UserDirectory userDirectory = cmsUserManager.getUserDirectory(user);
+ path = CmsContentRepository.DIRECTORY_BASE + SLASH + userDirectory.getBasePath() + SLASH
+ + LdapNameUtils.toRevertPath(username, userDirectory.getBasePath());
+ node = contentSession.get(path);
+// LdapName userDn;
+// try {
+// userDn = new LdapName(user.getName());
+// } catch (InvalidNameException e) {
+// throw new IllegalArgumentException("Badly formatted username", e);
+// }
+// String userNodePath = SuiteUtils.getUserNodePath(userDn);
// FIXME deal with home path
- return null;
+// return null;
// if (Jcr.itemExists(session, userNodePath))
// node = Jcr.getNode(session, userNodePath);
// else {
import java.util.List;
import java.util.Map;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
+import org.argeo.api.acr.Content;
import org.argeo.app.ui.SuiteMsg;
import org.argeo.app.ui.SuiteUiUtils;
import org.argeo.cms.CmsUserManager;
import org.argeo.cms.swt.CmsSwtUtils;
+import org.argeo.cms.swt.widgets.SwtSection;
import org.argeo.cms.ui.CmsUiProvider;
-import org.argeo.cms.ui.viewers.Section;
import org.argeo.util.naming.LdapAttrs;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Text;
+import org.osgi.service.useradmin.Group;
import org.osgi.service.useradmin.User;
/** Edit a suite user. */
private CmsUserManager cmsUserManager;
@Override
- public Control createUi(Composite parent, Node context) throws RepositoryException {
- Section main = new Section(parent, SWT.NONE, context);
+ public Control createUiPart(Composite parent, Content context) {
+ SwtSection main = new SwtSection(parent, SWT.NONE, context);
main.setLayoutData(CmsSwtUtils.fillAll());
- String uid = context.getName();
- User user = cmsUserManager.getUserFromLocalId(uid);
+ User user = context.adapt(User.class);
+
+ if (user instanceof Group) {
+ String cn = context.getName().getLocalPart().split("=")[1];
+ Text cnT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
+ cnT.setText(cn);
+
+ } else {
+ String uid = context.getName().getLocalPart().split("=")[1];
// Text givenName = new Text(main, SWT.SINGLE);
// givenName.setText(getUserProperty(user, LdapAttrs.givenName.name()));
- Text givenName = SuiteUiUtils.addFormInput(main, SuiteMsg.firstName.lead(),
- getUserProperty(user, LdapAttrs.givenName.name()));
+ Text givenName = SuiteUiUtils.addFormInput(main, SuiteMsg.firstName.lead(),
+ getUserProperty(user, LdapAttrs.givenName.name()));
- Text sn = SuiteUiUtils.addFormInput(main, SuiteMsg.lastName.lead(), getUserProperty(user, LdapAttrs.sn.name()));
- // sn.setText(getUserProperty(user, LdapAttrs.sn.name()));
+ Text sn = SuiteUiUtils.addFormInput(main, SuiteMsg.lastName.lead(),
+ getUserProperty(user, LdapAttrs.sn.name()));
+ // sn.setText(getUserProperty(user, LdapAttrs.sn.name()));
- Text email = SuiteUiUtils.addFormInput(main, SuiteMsg.email.lead(),
- getUserProperty(user, LdapAttrs.mail.name()));
- // email.setText(getUserProperty(user, LdapAttrs.mail.name()));
+ Text email = SuiteUiUtils.addFormInput(main, SuiteMsg.email.lead(),
+ getUserProperty(user, LdapAttrs.mail.name()));
+ // email.setText(getUserProperty(user, LdapAttrs.mail.name()));
- Text uidT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
- uidT.setText(uid);
+ Text uidT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
+ uidT.setText(uid);
// Label dnL = new Label(main, SWT.NONE);
// dnL.setText(user.getName());
- // roles
- // Section rolesSection = new Section(main, SWT.NONE, context);
- Group rolesSection = new Group(main, SWT.NONE);
- rolesSection.setText("Roles");
- rolesSection.setLayoutData(CmsSwtUtils.fillWidth());
- rolesSection.setLayout(new GridLayout());
- // new Label(rolesSection, SWT.NONE).setText("Roles:");
- List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
- for (String role : availableRoles) {
- // new Label(rolesSection, SWT.NONE).setText(role);
- Button radio = new Button(rolesSection, SWT.CHECK);
- radio.setText(role);
- if (roles.contains(role))
- radio.setSelection(true);
+ // roles
+ // Section rolesSection = new Section(main, SWT.NONE, context);
+ Composite rolesSection = new Composite(main, SWT.NONE);
+ // rolesSection.setText("Roles");
+ rolesSection.setLayoutData(CmsSwtUtils.fillWidth());
+ rolesSection.setLayout(new GridLayout());
+ // new Label(rolesSection, SWT.NONE).setText("Roles:");
+ List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
+ for (String role : availableRoles) {
+ // new Label(rolesSection, SWT.NONE).setText(role);
+ Button radio = new Button(rolesSection, SWT.CHECK);
+ radio.setText(role);
+ if (roles.contains(role))
+ radio.setSelection(true);
+ }
}
return main;