X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Fpeople%2FNewUserForm.java;fp=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Fpeople%2FNewUserForm.java;h=0000000000000000000000000000000000000000;hb=d917d2b10162a29cddaf8c81c362efa37abcaab9;hp=ed9c4f40712c6fd2c45498fbb72635a0e128adf0;hpb=f1b87af2e0de38f1f49ab8fe68f9988018914811;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/people/NewUserForm.java b/org.argeo.app.ui/src/org/argeo/app/ui/people/NewUserForm.java deleted file mode 100644 index ed9c4f4..0000000 --- a/org.argeo.app.ui/src/org/argeo/app/ui/people/NewUserForm.java +++ /dev/null @@ -1,162 +0,0 @@ -package org.argeo.app.ui.people; - -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 java.util.UUID; - -import org.argeo.api.acr.Content; -import org.argeo.app.core.SuiteUtils; -import org.argeo.app.ui.SuiteMsg; -import org.argeo.app.ui.SuiteUiUtils; -import org.argeo.cms.CmsUserManager; -import org.argeo.cms.acr.ContentUtils; -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.argeo.util.directory.HierarchyUnit; -import org.argeo.util.naming.LdapAttrs; -import org.argeo.util.naming.LdapObjs; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.layout.GridData; -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 { - private Content hierarchyUnit; - private CmsUserManager cmsUserManager; - - protected Text lastNameT; - protected Text firstNameT; - protected Text emailT; - - public NewUserForm(CmsUserManager cmsUserManager, Content hierarchyUnit) { - this.hierarchyUnit = hierarchyUnit; - if (!hierarchyUnit.hasContentClass(LdapObjs.posixGroup.qName())) - throw new IllegalArgumentException(hierarchyUnit + " is not a POSIX group"); - this.cmsUserManager = cmsUserManager; - } - - @Override - public void addPages() { - try { - MainInfoPage page = new MainInfoPage("Main page"); - addPage(page); - } catch (Exception e) { - throw new RuntimeException("Cannot add page to wizard", e); - } - setFormTitle(SuiteMsg.personWizardWindowTitle.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() { - String lastName = lastNameT.getText(); - String firstName = firstNameT.getText(); - String email = emailT.getText(); - if (EclipseUiUtils.isEmpty(lastName) || EclipseUiUtils.isEmpty(firstName) || EclipseUiUtils.isEmpty(email)) { - CmsFeedback.show(SuiteMsg.allFieldsMustBeSet.lead()); - return false; - } else { - UUID uuid = UUID.randomUUID(); - String shortId = uuid.toString().split("-")[0]; - String uid = "u" + shortId; - HierarchyUnit hu = hierarchyUnit.adapt(HierarchyUnit.class); - String username = "uid=" + uid + ",ou=People," + hu.getBase(); - - Map properties = new HashMap<>(); - properties.put(LdapAttrs.givenName.name(), firstName); - properties.put(LdapAttrs.sn.name(), lastName); - properties.put(LdapAttrs.mail.name(), email); - properties.put(LdapAttrs.cn.name(), firstName + " " + lastName); - properties.put(LdapAttrs.employeeNumber.name(), uuid.toString()); - - Map credentials = new HashMap<>(); - User user = cmsUserManager.createUser(username, properties, credentials); - - Long huGidNumber = hierarchyUnit.get(LdapAttrs.gidNumber.qName(), Long.class).orElseThrow(); - Long nextUserId = SuiteUtils.findNextId(hierarchyUnit, LdapObjs.posixAccount.qName()); - String homeDirectory = "/home/" + uid; - Map additionalProperties = new HashMap<>(); - additionalProperties.put(LdapAttrs.uidNumber.name(), nextUserId.toString()); - additionalProperties.put(LdapAttrs.gidNumber.name(), huGidNumber.toString()); - additionalProperties.put(LdapAttrs.homeDirectory.name(), homeDirectory); - - Set objectClasses = new HashSet<>(); - objectClasses.add(LdapObjs.posixAccount.name()); - cmsUserManager.addObjectClasses(user, objectClasses, additionalProperties); - return true; - } - } - - @Override - public boolean performCancel() { - return true; - } - - @Override - public boolean canFinish() { - String lastName = lastNameT.getText(); - String firstName = firstNameT.getText(); - String email = emailT.getText(); - if (isEmpty(lastName) || isEmpty(firstName) || isEmpty(email)) { - return false; - } else - return true; - } - - protected class MainInfoPage extends SwtGuidedFormPage { - - public MainInfoPage(String pageName) { - super(pageName); - setTitle(SuiteMsg.personWizardPageTitle.lead()); - } - - public void createControl(Composite parent) { - parent.setLayout(new GridLayout(2, false)); - - // FirstName - SuiteUiUtils.createBoldLabel(parent, SuiteMsg.firstName); - firstNameT = new Text(parent, SWT.BORDER); - // firstNameTxt.setMessage("a first name"); - firstNameT.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - // LastName - SuiteUiUtils.createBoldLabel(parent, SuiteMsg.lastName); - lastNameT = new Text(parent, SWT.BORDER); - // lastNameTxt.setMessage("a last name"); - lastNameT.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - SuiteUiUtils.createBoldLabel(parent, SuiteMsg.email); - emailT = new Text(parent, SWT.BORDER); - emailT.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - ModifyListener ml = new ModifyListener() { - private static final long serialVersionUID = 1939491923843870844L; - - @Override - public void modifyText(ModifyEvent event) { - getView().updateButtons(); - } - }; - - firstNameT.addModifyListener(ml); - lastNameT.addModifyListener(ml); - emailT.addModifyListener(ml); - - firstNameT.setFocus(); - } - } -}