Improve people UI
authorMathieu <mbaudier@argeo.org>
Tue, 8 Nov 2022 04:31:17 +0000 (05:31 +0100)
committerMathieu <mbaudier@argeo.org>
Tue, 8 Nov 2022 04:31:17 +0000 (05:31 +0100)
swt/org.argeo.app.ui/OSGI-INF/l10n/bundle.properties
swt/org.argeo.app.ui/OSGI-INF/l10n/bundle_fr.properties
swt/org.argeo.app.ui/config/peopleLayer.properties
swt/org.argeo.app.ui/src/org/argeo/app/ui/DefaultHeader.java
swt/org.argeo.app.ui/src/org/argeo/app/ui/DefaultLeadPane.java
swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteMsg.java
swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteUiUtils.java
swt/org.argeo.app.ui/src/org/argeo/app/ui/people/PeopleEntryArea.java
swt/org.argeo.app.ui/src/org/argeo/app/ui/people/PersonUiProvider.java

index 0dd3532e93ce23d53ea706235949a2591446425b..b99fff652816795dd4a8350ecd07f4b50bcd0da8 100644 (file)
@@ -28,6 +28,11 @@ vatId=VAT ID
 orgWizardWindowTitle=New organisation
 orgWizardPageTitle=Create an organisation
 
 orgWizardWindowTitle=New organisation
 orgWizardPageTitle=Create an organisation
 
+# Roles
+userAdminRole=Can create users and modify them
+groupAdminRole=Can create groups and organisations and modify them
+publisherRole=Can validate and publish content
+coworkerRole=Is an active user of the organisation
 
 # ContextAddressComposite
 chooseAnOrganisation=Choose an organisation
 
 # ContextAddressComposite
 chooseAnOrganisation=Choose an organisation
index 3a9ad4d2f99c2e6872e780b71f227d7340b49e7e..6744ee877f217022128f756b831ecabb4020196e 100644 (file)
@@ -32,6 +32,11 @@ vatId=ID TVA
 orgWizardWindowTitle=Nouvelle organisation
 orgWizardPageTitle=Créer une organisation
 
 orgWizardWindowTitle=Nouvelle organisation
 orgWizardPageTitle=Créer une organisation
 
+# Roles
+userAdminRole=Peut créer des utilisateurs et les modifier
+groupAdminRole=Peut créer des groupes et des organisations et les modifier
+publisherRole=Peut publier et valider du contenu
+coworkerRole=Est un membre en activité de l'organisation
 
 # ContextAddressComposite
 chooseAnOrganisation=Choisir une organisation
 
 # ContextAddressComposite
 chooseAnOrganisation=Choisir une organisation
index 89240150c3bd8c8b55e854c905cde2bba88f430f..2faf1728b3adfaecc1cbb240d8ae1654592e1ab6 100644 (file)
@@ -1,7 +1,7 @@
 service.pid=argeo.people.ui.peopleLayer
 
 icon=people
 service.pid=argeo.people.ui.peopleLayer
 
 icon=people
-weights=3000,7000
+weights=5000,5000
 title=%people
 
 entity.type=ldap:inetOrgPerson,ldap:groupOfNames,ldap:organizationalUnit,ldap:nsContainer,ldap:dcObject
\ No newline at end of file
 title=%people
 
 entity.type=ldap:inetOrgPerson,ldap:groupOfNames,ldap:organizationalUnit,ldap:nsContainer,ldap:dcObject
\ No newline at end of file
index b8d78c982eaf3689eedc1eefa1b75f1d2c7585a6..abef6471117a9729197860c188db58a7e502a4bc 100644 (file)
@@ -12,11 +12,8 @@ import org.argeo.cms.ui.CmsUiProvider;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.GridData;
 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.Label;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
index 7b7a0319991f4fff4abb00037f2e19127509a29b..74a950d90081ad07b181f4ece03702c194315c58 100644 (file)
@@ -3,7 +3,6 @@ package org.argeo.app.ui;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
index 1162144fce7a66e4dd130ae3c271592a6100ee87..6fc72c6d34c2638913b77db2ba220d53938d3004 100644 (file)
@@ -9,6 +9,8 @@ public enum SuiteMsg implements Localized {
        firstName, lastName, salutation, email, personWizardWindowTitle, personWizardPageTitle,
        // NewOrgWizard
        orgWizardWindowTitle, orgWizardPageTitle, legalName, legalForm, vatId,
        firstName, lastName, salutation, email, personWizardWindowTitle, personWizardPageTitle,
        // NewOrgWizard
        orgWizardWindowTitle, orgWizardPageTitle, legalName, legalForm, vatId,
+       // Roles
+       userAdminRole, groupAdminRole, publisherRole, coworkerRole,
        // ContextAddressComposite
        chooseAnOrganisation, street, streetComplement, zipCode, city, state, country, geopoint,
        // FilteredOrderableEntityTable
        // ContextAddressComposite
        chooseAnOrganisation, street, streetComplement, zipCode, city, state, country, geopoint,
        // FilteredOrderableEntityTable
@@ -31,7 +33,7 @@ public enum SuiteMsg implements Localized {
        label, aCustomLabel, description, value, name, primary, add, save, pickup,
        // Tag
        confirmNewTag, cannotCreateTag,
        label, aCustomLabel, description, value, name, primary, add, save, pickup,
        // Tag
        confirmNewTag, cannotCreateTag,
-       // Feddback messages
+       // Feedback messages
        allFieldsMustBeSet,
        //
        ;
        allFieldsMustBeSet,
        //
        ;
index 2ba43145cbe245d1b29f524ddea4eccc2c238584..59d11343285ed30c6e605906ffe9752cc8258e68 100644 (file)
@@ -71,6 +71,10 @@ public class SuiteUiUtils {
                }
        }
 
                }
        }
 
+       public static Label addFormLabel(Composite parent, Localized msg) {
+               return addFormLabel(parent, msg.lead());
+       }
+
        public static Label addFormLabel(Composite parent, String label) {
                Label lbl = new Label(parent, SWT.WRAP);
                lbl.setText(label);
        public static Label addFormLabel(Composite parent, String label) {
                Label lbl = new Label(parent, SWT.WRAP);
                lbl.setText(label);
index f3678147d16704c626565869c0111253fae00f89..81463a2417431cba75a03f9fbe5da95ae34ad43c 100644 (file)
@@ -66,16 +66,6 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                SashForm sashForm = new SashForm(parent, SWT.VERTICAL);
                CmsSwtUtils.fill(sashForm);
 
                SashForm sashForm = new SashForm(parent, SWT.VERTICAL);
                CmsSwtUtils.fill(sashForm);
 
-               // MODEL
-//             List<UserDirectory> directories = new ArrayList<>();
-//             // List<User> orgs = cmsUserManager.listGroups(null, true, false);
-//             for (UserDirectory directory : cmsUserManager.getUserDirectories()) {
-//                     if (CurrentUser.implies(CmsRole.userAdmin, directory.getContext())) {
-//                             directories.add(directory);
-//                     }
-//
-//             }
-
                // VIEW
                HierarchicalPart<HierarchyUnit> hierarchyPart = new AbstractHierarchicalPart<>() {
 
                // VIEW
                HierarchicalPart<HierarchyUnit> hierarchyPart = new AbstractHierarchicalPart<>() {
 
@@ -132,17 +122,16 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                                if (ud.getRealm().isPresent()) {
                                        for (Role r : ud.getHierarchyUnitRoles(ud, null, true)) {
                                                Content content = ContentUtils.roleToContent(cmsUserManager, contentSession, r);
                                if (ud.getRealm().isPresent()) {
                                        for (Role r : ud.getHierarchyUnitRoles(ud, null, true)) {
                                                Content content = ContentUtils.roleToContent(cmsUserManager, contentSession, r);
-                                               // if (r instanceof Person || r instanceof Organization)
                                                if (content.hasContentClass(LdapObjs.inetOrgPerson.qName(), LdapObjs.organization.qName()))
                                                        roles.add(content);
                                        }
 
                                } else {
                                        for (HierarchyUnit directChild : hu.getDirectHierarchyUnits(false)) {
                                                if (content.hasContentClass(LdapObjs.inetOrgPerson.qName(), LdapObjs.organization.qName()))
                                                        roles.add(content);
                                        }
 
                                } else {
                                        for (HierarchyUnit directChild : hu.getDirectHierarchyUnits(false)) {
-                                               if (!directChild.isFunctional()) {
+                                               if (!(directChild.isType(HierarchyUnit.Type.FUNCTIONAL)
+                                                               || directChild.isType(HierarchyUnit.Type.ROLES))) {
                                                        for (Role r : ud.getHierarchyUnitRoles(directChild, null, false)) {
                                                                Content content = ContentUtils.roleToContent(cmsUserManager, contentSession, r);
                                                        for (Role r : ud.getHierarchyUnitRoles(directChild, null, false)) {
                                                                Content content = ContentUtils.roleToContent(cmsUserManager, contentSession, r);
-                                                               // if (r instanceof Person || r instanceof Organization)
                                                                if (content.hasContentClass(LdapObjs.inetOrgPerson.qName(),
                                                                                LdapObjs.organization.qName(), LdapObjs.groupOfNames.qName()))
                                                                        roles.add(content);
                                                                if (content.hasContentClass(LdapObjs.inetOrgPerson.qName(),
                                                                                LdapObjs.organization.qName(), LdapObjs.groupOfNames.qName()))
                                                                        roles.add(content);
@@ -189,7 +178,7 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                });
                usersPart.addColumn((Column<Content>) (role) -> role.attr(LdapAttrs.mail.qName()));
 
                });
                usersPart.addColumn((Column<Content>) (role) -> role.attr(LdapAttrs.mail.qName()));
 
-               SwtTableView<HierarchyUnit, Content> usersView = new SwtTableView<>(sashForm, SWT.BORDER, usersPart);
+               new SwtTableView<>(sashForm, SWT.BORDER, usersPart);
 
                // toolbar
                Composite bottom = new Composite(parent, SWT.NONE);
 
                // toolbar
                Composite bottom = new Composite(parent, SWT.NONE);
@@ -211,8 +200,8 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                        if (o instanceof HierarchyUnit) {
                                HierarchyUnit hierarchyUnit = (HierarchyUnit) o;
                                usersPart.setInput(hierarchyUnit);
                        if (o instanceof HierarchyUnit) {
                                HierarchyUnit hierarchyUnit = (HierarchyUnit) o;
                                usersPart.setInput(hierarchyUnit);
-                               cmsView.sendEvent(SuiteUxEvent.refreshPart.topic(), SuiteUxEvent
-                                               .eventProperties(ContentUtils.hierarchyUnitToContent(contentSession, hierarchyUnit)));
+//                             cmsView.sendEvent(SuiteUxEvent.refreshPart.topic(), SuiteUxEvent
+//                                             .eventProperties(ContentUtils.hierarchyUnitToContent(contentSession, hierarchyUnit)));
                        }
                });
 
                        }
                });
 
@@ -250,20 +239,6 @@ public class PeopleEntryArea implements SwtUiProvider, CmsUiProvider {
                return sashForm;
        }
 
                return sashForm;
        }
 
-//     static String getProperty(Role role, LdapAttrs attr) {
-//             Object value = role.getProperties().get(attr.name());
-//             return value != null ? value.toString() : null;
-//     }
-
-//     private boolean isOrganisation(Role role) {
-//             String[] objectClasses = role.getProperties().get(LdapAttrs.objectClasses.name()).toString().split("\\n");
-//             for (String objectClass : objectClasses) {
-//                     if (LdapObjs.organization.name().equalsIgnoreCase(objectClass))
-//                             return true;
-//             }
-//             return false;
-//     }
-
        public void setCmsUserManager(CmsUserManager cmsUserManager) {
                this.cmsUserManager = cmsUserManager;
        }
        public void setCmsUserManager(CmsUserManager cmsUserManager) {
                this.cmsUserManager = cmsUserManager;
        }
index bbb9a7c147040223837fd2340cda41d30cad6188..e296315ea9abf9b51e3dd2af6a3808e1aec82879 100644 (file)
@@ -7,14 +7,22 @@ import java.util.Map;
 import org.argeo.api.acr.Content;
 import org.argeo.api.acr.ldap.LdapAttrs;
 import org.argeo.api.acr.ldap.LdapObjs;
 import org.argeo.api.acr.Content;
 import org.argeo.api.acr.ldap.LdapAttrs;
 import org.argeo.api.acr.ldap.LdapObjs;
+import org.argeo.app.api.SuiteRole;
 import org.argeo.app.ui.SuiteMsg;
 import org.argeo.app.ui.SuiteStyle;
 import org.argeo.app.ui.SuiteUiUtils;
 import org.argeo.app.ui.SuiteMsg;
 import org.argeo.app.ui.SuiteStyle;
 import org.argeo.app.ui.SuiteUiUtils;
+import org.argeo.cms.CmsMsg;
 import org.argeo.cms.CmsUserManager;
 import org.argeo.cms.Localized;
 import org.argeo.cms.CmsUserManager;
 import org.argeo.cms.Localized;
+import org.argeo.cms.auth.CmsRole;
+import org.argeo.cms.auth.CurrentUser;
+import org.argeo.cms.auth.RoleNameUtils;
+import org.argeo.cms.auth.SystemRole;
 import org.argeo.cms.swt.CmsSwtUtils;
 import org.argeo.cms.swt.CmsSwtUtils;
+import org.argeo.cms.swt.Selected;
 import org.argeo.cms.swt.acr.SwtSection;
 import org.argeo.cms.swt.acr.SwtUiProvider;
 import org.argeo.cms.swt.acr.SwtSection;
 import org.argeo.cms.swt.acr.SwtUiProvider;
+import org.argeo.cms.swt.dialogs.CmsFeedback;
 import org.argeo.cms.swt.widgets.EditableText;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseAdapter;
 import org.argeo.cms.swt.widgets.EditableText;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseAdapter;
@@ -31,7 +39,6 @@ import org.osgi.service.useradmin.User;
 
 /** Edit a suite user. */
 public class PersonUiProvider implements SwtUiProvider {
 
 /** Edit a suite user. */
 public class PersonUiProvider implements SwtUiProvider {
-       private String[] availableRoles;
        private CmsUserManager cmsUserManager;
 
        @Override
        private CmsUserManager cmsUserManager;
 
        @Override
@@ -43,22 +50,24 @@ public class PersonUiProvider implements SwtUiProvider {
 
                User user = context.adapt(User.class);
 
 
                User user = context.adapt(User.class);
 
+               String roleContext = RoleNameUtils.getContext(user.getName());
+
                if (context.hasContentClass(LdapObjs.person.qName())) {
                if (context.hasContentClass(LdapObjs.person.qName())) {
+
                        addFormLine(main, SuiteMsg.firstName, context, LdapAttrs.givenName);
                        addFormLine(main, SuiteMsg.lastName, context, LdapAttrs.sn);
                        addFormLine(main, SuiteMsg.email, context, LdapAttrs.mail);
                        addFormLine(main, SuiteMsg.firstName, context, LdapAttrs.givenName);
                        addFormLine(main, SuiteMsg.lastName, context, LdapAttrs.sn);
                        addFormLine(main, SuiteMsg.email, context, LdapAttrs.mail);
+               }
+
+               if (context.hasContentClass(LdapObjs.posixAccount.qName())) {
 
 
-                       Composite rolesSection = new Composite(main, SWT.NONE);
-                       rolesSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+                       SwtSection rolesSection = new SwtSection(main, SWT.NONE);
+                       rolesSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
                        rolesSection.setLayout(new GridLayout());
                        List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
                        rolesSection.setLayout(new GridLayout());
                        List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
-                       for (String role : roles) {
-                               // new Label(rolesSection, SWT.NONE).setText(role);
-                               Button radio = new Button(rolesSection, SWT.CHECK);
-                               radio.setText(role);
-                               if (roles.contains(role))
-                                       radio.setSelection(true);
-                       }
+                       addRoleCheckBox(rolesSection, SuiteMsg.coworkerRole, SuiteRole.coworker, roleContext, roles);
+                       addRoleCheckBox(rolesSection, SuiteMsg.publisherRole, SuiteRole.publisher, roleContext, roles);
+                       addRoleCheckBox(rolesSection, SuiteMsg.userAdminRole, CmsRole.userAdmin, roleContext, roles);
 
 //                     Composite facetsSection = new Composite(main, SWT.NONE);
 //                     facetsSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
 
 //                     Composite facetsSection = new Composite(main, SWT.NONE);
 //                     facetsSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
@@ -69,52 +78,40 @@ public class PersonUiProvider implements SwtUiProvider {
 //                                     new Label(facetsSection, SWT.NONE).setText(member);
 //                             }
 //                     }
 //                                     new Label(facetsSection, SWT.NONE).setText(member);
 //                             }
 //                     }
+                       if (CurrentUser.implies(CmsRole.userAdmin, roleContext)) {
+                               SwtSection changePasswordSection = new SwtSection(main, SWT.BORDER);
+                               changePasswordSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
+                               changePasswordSection.setLayout(new GridLayout(2, false));
+//                             SuiteUiUtils.addFormLabel(changePasswordSection, CmsMsg.changePassword)
+//                                             .setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false, 2, 1));
+                               SuiteUiUtils.addFormLabel(changePasswordSection, CmsMsg.newPassword);
+                               Text newPasswordT = SuiteUiUtils.addFormTextField(changePasswordSection, null, null,
+                                               SWT.PASSWORD | SWT.BORDER);
+                               newPasswordT.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+                               SuiteUiUtils.addFormLabel(changePasswordSection, CmsMsg.repeatNewPassword);
+                               Text repeatNewPasswordT = SuiteUiUtils.addFormTextField(changePasswordSection, null, null,
+                                               SWT.PASSWORD | SWT.BORDER);
+                               repeatNewPasswordT.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+                               Button apply = new Button(changePasswordSection, SWT.FLAT);
+                               apply.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false, 2, 1));
+                               apply.setText(CmsMsg.changePassword.lead());
+                               apply.addSelectionListener((Selected) (e) -> {
+                                       try {
+                                               char[] newPassword = newPasswordT.getTextChars();
+                                               char[] repeatNewPassword = repeatNewPasswordT.getTextChars();
+                                               if (newPassword.length > 0 && Arrays.equals(newPassword, repeatNewPassword)) {
+                                                       cmsUserManager.resetPassword(user.getName(), newPassword);
+                                                       CmsFeedback.show(CmsMsg.passwordChanged.lead());
+                                               } else {
+                                                       CmsFeedback.error(CmsMsg.invalidPassword.lead(), null);
+                                               }
+                                       } catch (Exception e1) {
+                                               CmsFeedback.error(CmsMsg.invalidPassword.lead(), e1);
+                                       }
+                               });
+                       }
                }
 
                }
 
-//             if (user instanceof Group) {
-//                     String cn = context.getName().getLocalPart();
-//                     Text cnT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
-//                     cnT.setText(cn);
-//
-//             } else {
-//                     String uid = context.getName().getLocalPart();
-//
-////           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 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 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);
-//                     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;
        }
 
                return main;
        }
 
@@ -153,17 +150,33 @@ public class PersonUiProvider implements SwtUiProvider {
                });
        }
 
                });
        }
 
+       private void addRoleCheckBox(SwtSection parent, Localized msg, SystemRole systemRole, String roleContext,
+                       List<String> roles) {
+               Button radio = new Button(parent, SWT.CHECK);
+               radio.setText(msg.lead());
+               radio.setSelection(false);
+               roles: for (String dn : roles) {
+                       if (systemRole.implied(dn, roleContext)) {
+                               radio.setSelection(true);
+                               break roles;
+                       }
+               }
+               if (CurrentUser.implies(CmsRole.userAdmin, roleContext))
+                       radio.setEnabled(true);
+               else
+                       radio.setEnabled(false);
+
+       }
+
        public void setCmsUserManager(CmsUserManager cmsUserManager) {
                this.cmsUserManager = cmsUserManager;
        }
 
        public void setCmsUserManager(CmsUserManager cmsUserManager) {
                this.cmsUserManager = cmsUserManager;
        }
 
-       private String getUserProperty(Object element, String key) {
-               Object value = ((User) element).getProperties().get(key);
-               return value != null ? value.toString() : null;
-       }
+//     private String getUserProperty(Object element, String key) {
+//             Object value = ((User) element).getProperties().get(key);
+//             return value != null ? value.toString() : null;
+//     }
 
        public void init(Map<String, Object> properties) {
 
        public void init(Map<String, Object> properties) {
-               availableRoles = (String[]) properties.get("availableRoles");
-               // cmsUserManager.getRoles(null);
        }
 }
        }
 }