email=Email
personWizardWindowTitle=New person
personWizardPageTitle=Create a contact
+personWizardFeedback=Contact was created
# NewOrgWizard
legalName=Legal name
vatId=VAT ID
orgWizardWindowTitle=New organisation
orgWizardPageTitle=Create an organisation
+orgWizardFeedback=Organisation was created
# Roles
userAdminRole=Can create users and modify them
email=Email
personWizardWindowTitle=Nouvelle personne
personWizardPageTitle=Créer un contact
+personWizardFeedback=Le contact a été créé
# NewOrgWizard
legalName=Nom
vatId=ID TVA
orgWizardWindowTitle=Nouvelle organisation
orgWizardPageTitle=Créer une organisation
+orgWizardFeedback=L'organisation a été crée
# Roles
userAdminRole=Peut créer des utilisateurs et les modifier
// UI parts
dashboard, people, documents, locations, recentItems,
// NewPersonWizard
- firstName, lastName, salutation, email, personWizardWindowTitle, personWizardPageTitle,
+ firstName, lastName, salutation, email, personWizardWindowTitle, personWizardPageTitle, personWizardFeedback,
// NewOrgWizard
- orgWizardWindowTitle, orgWizardPageTitle, legalName, legalForm, vatId,
+ orgWizardWindowTitle, orgWizardPageTitle, orgWizardFeedback, legalName, legalForm, vatId,
// Roles
userAdminRole, groupAdminRole, publisherRole, coworkerRole,
// Group
import org.argeo.api.acr.ldap.LdapObj;
import org.argeo.api.acr.spi.ProvidedContent;
import org.argeo.api.cms.directory.CmsGroup;
+import org.argeo.api.cms.directory.CmsUser;
import org.argeo.api.cms.directory.CmsUserManager;
import org.argeo.api.cms.directory.HierarchyUnit;
import org.argeo.app.ui.SuiteIcon;
import org.argeo.app.ui.SuiteUiUtils;
import org.argeo.cms.CurrentUser;
import org.argeo.cms.acr.ContentUtils;
+import org.argeo.cms.auth.CmsRole;
import org.argeo.cms.swt.CmsSwtTheme;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.swt.Selected;
ContentSession contentSession = ((ProvidedContent) context).getSession();
TabularPart<Content, Content> membersPart = new AbstractTabularPart<Content, Content>() {
- Role[] roles = context.adapt(CmsGroup.class).getMembers();
+ Role[] roles;
@Override
public int getItemCount() {
+ roles = context.adapt(CmsGroup.class).getMembers();
return roles.length;
}
ToolItem addItem = new ToolItem(toolBar, SWT.FLAT);
addItem.setImage(theme.getSmallIcon(SuiteIcon.add));
+ addItem.setEnabled(CurrentUser.implies(CmsRole.groupAdmin, hierarchyUnit.getBase()));
+
+ // members view
+ SwtTableView<Content, Content> membersView = new SwtTableView<>(area, SWT.BORDER, membersPart);
+ membersView.setLayoutData(CmsSwtUtils.fillAll());
+ membersView.refresh();
+
+ // CONTROLLER
+ membersPart.onSelected((model) -> {
+ deleteItem.setEnabled(CurrentUser.implies(CmsRole.groupAdmin, hierarchyUnit.getBase()));
+ deleteItem.setData(model);
+ });
+
addItem.addSelectionListener((Selected) (e) -> {
ChooseUserDialog chooseUserDialog = new ChooseUserDialog(parent.getDisplay().getActiveShell(),
SuiteMsg.chooseAMember.lead(), contentSession, cmsUserManager, hierarchyUnit);
if (chooseUserDialog.open() == CmsDialog.OK) {
Content chosen = chooseUserDialog.getSelected();
- // TODO add
+ cmsUserManager.addMember(context.adapt(CmsGroup.class), chosen.adapt(CmsUser.class));
+ membersPart.refresh();
+ }
+ });
+
+ deleteItem.addSelectionListener((Selected) (e) -> {
+ if (deleteItem.getData() != null) {
+ Content chosen = (Content) deleteItem.getData();
+ cmsUserManager.removeMember(context.adapt(CmsGroup.class), chosen.adapt(CmsUser.class));
+ membersPart.refresh();
}
});
- // members view
- SwtTableView<Content, Content> membersView = new SwtTableView<>(area, SWT.BORDER, membersPart);
- membersView.setLayoutData(CmsSwtUtils.fillAll());
- membersView.refresh();
return membersView;
}
import static org.argeo.eclipse.ui.EclipseUiUtils.isEmpty;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
import org.argeo.api.acr.Content;
+import org.argeo.api.acr.ldap.LdapAttr;
+import org.argeo.api.acr.ldap.LdapObj;
+import org.argeo.api.cms.directory.CmsGroup;
import org.argeo.api.cms.directory.CmsUserManager;
+import org.argeo.api.cms.directory.HierarchyUnit;
import org.argeo.app.ui.SuiteMsg;
import org.argeo.app.ui.SuiteUiUtils;
+import org.argeo.cms.swt.dialogs.CmsFeedback;
import org.argeo.cms.swt.widgets.SwtGuidedFormPage;
import org.argeo.cms.ux.widgets.AbstractGuidedForm;
+import org.argeo.eclipse.ui.EclipseUiUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
setFormTitle(SuiteMsg.orgWizardWindowTitle.lead());
}
- /**
- * Called when the user click on 'Finish' in the wizard. The task is then
- * created and the corresponding session saved.
- */
@Override
public boolean performFinish() {
- return false;
+ String orgName = orgNameT.getText();
+ if (EclipseUiUtils.isEmpty(orgName)) {
+ CmsFeedback.show(SuiteMsg.allFieldsMustBeSet.lead());
+ return false;
+ } else {
+ HierarchyUnit hu = hierarchyUnit.adapt(HierarchyUnit.class);
+ String dn = "cn=" + orgName + ",ou=Groups," + hu.getBase();
+
+ CmsGroup user = cmsUserManager.createGroup(dn);
+
+ Map<String, Object> additionalProperties = new HashMap<>();
+ additionalProperties.put(LdapAttr.o.name(), orgName);
+
+ Set<String> objectClasses = new HashSet<>();
+ objectClasses.add(LdapObj.organization.name());
+ cmsUserManager.addObjectClasses(user, objectClasses, additionalProperties);
+ return true;
+ }
}
@Override
import org.argeo.api.acr.Content;
import org.argeo.api.acr.ldap.LdapAttr;
import org.argeo.api.acr.ldap.LdapObj;
+import org.argeo.api.cms.directory.CmsUser;
import org.argeo.api.cms.directory.CmsUserManager;
import org.argeo.api.cms.directory.HierarchyUnit;
import org.argeo.app.core.SuiteUtils;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
-import org.osgi.service.useradmin.User;
/** Ask first & last name. Update the passed node on finish */
public class NewUserForm extends AbstractGuidedForm {
properties.put(LdapAttr.employeeNumber.name(), uuid.toString());
Map<String, Object> credentials = new HashMap<>();
- User user = cmsUserManager.createUser(username, properties, credentials);
+ CmsUser user = cmsUserManager.createUser(username, properties, credentials);
Long huGidNumber = hierarchyUnit.get(LdapAttr.gidNumber.qName(), Long.class).orElseThrow();
Long nextUserId = SuiteUtils.findNextId(hierarchyUnit, LdapObj.posixAccount.qName());
import org.argeo.app.ui.SuiteIcon;
import org.argeo.app.ui.SuiteMsg;
import org.argeo.app.ui.SuiteUxEvent;
+import org.argeo.cms.CurrentUser;
import org.argeo.cms.acr.ContentUtils;
+import org.argeo.cms.auth.CmsRole;
import org.argeo.cms.jcr.acr.JcrContent;
import org.argeo.cms.swt.CmsSwtTheme;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.swt.Selected;
import org.argeo.cms.swt.acr.SwtUiProvider;
+import org.argeo.cms.swt.dialogs.CmsFeedback;
import org.argeo.cms.swt.widgets.SwtGuidedFormDialog;
import org.argeo.cms.swt.widgets.SwtTableView;
import org.argeo.cms.swt.widgets.SwtTreeView;
ToolBar bottomToolBar = new ToolBar(bottom, SWT.NONE);
bottomToolBar.setLayoutData(new GridData(SWT.END, SWT.FILL, true, false));
- ToolItem deleteItem = new ToolItem(bottomToolBar, SWT.FLAT);
- deleteItem.setEnabled(false);
- deleteItem.setImage(theme.getSmallIcon(SuiteIcon.delete));
+// ToolItem deleteItem = new ToolItem(bottomToolBar, SWT.FLAT);
+// deleteItem.setEnabled(false);
+// deleteItem.setImage(theme.getSmallIcon(SuiteIcon.delete));
Menu menu = new Menu(Display.getCurrent().getActiveShell(), SWT.POP_UP);
// TODO display add user only if hierarchy unit is a POSIX group
GuidedForm wizard = new NewUserForm(cmsUserManager, huContent);
SwtGuidedFormDialog dialog = new SwtGuidedFormDialog(parent.getShell(), wizard);
if (dialog.open() == CmsDialog.OK) {
- // TODO create
+ CmsFeedback.show(SuiteMsg.personWizardFeedback.lead());
+ usersPart.refresh();
}
});
GuidedForm wizard = new NewOrgForm(cmsUserManager, huContent);
SwtGuidedFormDialog dialog = new SwtGuidedFormDialog(parent.getShell(), wizard);
if (dialog.open() == CmsDialog.OK) {
- // TODO create
+ CmsFeedback.show(SuiteMsg.orgWizardFeedback.lead());
+ usersPart.refresh();
}
});
HierarchyUnit hierarchyUnit = (HierarchyUnit) o;
usersPart.setInput(hierarchyUnit);
addItem.setEnabled(true);
+
+ addOrgItem.setEnabled(usersPart.getInput() != null
+ && CurrentUser.implies(CmsRole.groupAdmin, usersPart.getInput().getBase()));
// cmsView.sendEvent(SuiteUxEvent.refreshPart.topic(), SuiteUxEvent
// .eventProperties(ContentUtils.hierarchyUnitToContent(contentSession, hierarchyUnit)));
}
Content user = (Content) o;
if (user != null) {
cmsView.sendEvent(SuiteUxEvent.refreshPart.topic(), SuiteUxEvent.eventProperties(user));
- deleteItem.setEnabled(true);
+// deleteItem.setEnabled(true);
} else {
- deleteItem.setEnabled(false);
+// deleteItem.setEnabled(false);
}
});