From 6e643897f2a96fe580aff366935963fbe59100f6 Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Mon, 21 Sep 2015 20:36:15 +0000 Subject: [PATCH] Remove draft implementation of a user management UI in the CMS that wae based on the legacy UserAdminService git-svn-id: https://svn.argeo.org/commons/trunk@8428 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../cms/users/MainUserInfoWizardPage.java | 134 --------- .../org/argeo/cms/users/NewUserWizard.java | 106 ------- .../argeo/cms/users/UserCreationWizard.java | 220 -------------- .../src/org/argeo/cms/users/UserPage.java | 67 ----- .../src/org/argeo/cms/users/UserPart.java | 267 ----------------- .../org/argeo/cms/users/UserRolesPart.java | 283 ------------------ .../src/org/argeo/cms/users/UserStyles.java | 11 - .../src/org/argeo/cms/users/UserViewer.java | 94 ------ .../src/org/argeo/cms/users/UsersPage.java | 279 ----------------- 9 files changed, 1461 deletions(-) delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/MainUserInfoWizardPage.java delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/NewUserWizard.java delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/UserCreationWizard.java delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/UserPage.java delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/UserPart.java delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/UserStyles.java delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/UserViewer.java delete mode 100644 org.argeo.cms/src/org/argeo/cms/users/UsersPage.java diff --git a/org.argeo.cms/src/org/argeo/cms/users/MainUserInfoWizardPage.java b/org.argeo.cms/src/org/argeo/cms/users/MainUserInfoWizardPage.java deleted file mode 100644 index fc127adcf..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/MainUserInfoWizardPage.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.cms.users; - -import javax.jcr.Node; -import javax.jcr.Property; -import javax.jcr.RepositoryException; - -import org.argeo.ArgeoException; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.jcr.ArgeoNames; -import org.argeo.security.UserAdminService; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Text; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UsernameNotFoundException; - -public class MainUserInfoWizardPage extends WizardPage implements - ModifyListener, ArgeoNames { - private static final long serialVersionUID = -3367329974808698649L; - private Text username, firstName, lastName, primaryEmail, password1, - password2; - private UserAdminService userAdminService; - - public MainUserInfoWizardPage(UserAdminService userAdminService) { - super("Main"); - this.userAdminService = userAdminService; - setTitle("Required Information"); - } - - @Override - public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - composite.setLayout(new GridLayout(2, false)); - username = EclipseUiUtils.createGridLT(composite, "Username", this); - primaryEmail = EclipseUiUtils.createGridLT(composite, "Email", this); - firstName = EclipseUiUtils.createGridLT(composite, "First name", this); - lastName = EclipseUiUtils.createGridLT(composite, "Last name", this); - password1 = EclipseUiUtils.createGridLP(composite, "Password", this); - password2 = EclipseUiUtils.createGridLP(composite, "Repeat password", - this); - setControl(composite); - - // Initialize buttons - setPageComplete(false); - getContainer().updateButtons(); - } - - @Override - public void modifyText(ModifyEvent event) { - String message = checkComplete(); - if (message != null) { - setMessage(message, WizardPage.ERROR); - setPageComplete(false); - } else { - setMessage("Complete", WizardPage.INFORMATION); - setPageComplete(true); - } - getContainer().updateButtons(); - } - - /** @return error message or null if complete */ - protected String checkComplete() { - // if (!username.getText().matches(UserAdminService.USERNAME_PATTERN)) - // return - // "Wrong user name format, should be lower case, between 3 and 64 characters with only '_' an '@' as acceptable special character."; - - if (username.getText().trim().equals("")) - return "User name must not be empty"; - - try { - UserDetails userDetails = userAdminService - .loadUserByUsername(username.getText()); - return "User " + userDetails.getUsername() + " already exists"; - } catch (UsernameNotFoundException e) { - // silent - } - if (!primaryEmail.getText().matches(UserAdminService.EMAIL_PATTERN)) - return "Not a valid email address"; - if (firstName.getText().trim().equals("")) - return "Specify a first name"; - if (lastName.getText().trim().equals("")) - return "Specify a last name"; - if (password1.getText().trim().equals("")) - return "Specify a password"; - if (password2.getText().trim().equals("")) - return "Repeat the password"; - if (!password2.getText().equals(password1.getText())) - return "Passwords are different"; - return null; - } - - public String getUsername() { - return username.getText(); - } - - public char[] getPassword() { - return password1.getTextChars(); - } - - public void mapToProfileNode(Node up) { - try { - up.setProperty(ARGEO_PRIMARY_EMAIL, primaryEmail.getText()); - up.setProperty(ARGEO_FIRST_NAME, firstName.getText()); - up.setProperty(ARGEO_LAST_NAME, lastName.getText()); - - // derived values - // TODO add wizard pages to do it - up.setProperty(Property.JCR_TITLE, firstName.getText() + " " - + lastName.getText()); - up.setProperty(Property.JCR_DESCRIPTION, ""); - } catch (RepositoryException e) { - throw new ArgeoException("Cannot map to " + up, e); - } - } -} diff --git a/org.argeo.cms/src/org/argeo/cms/users/NewUserWizard.java b/org.argeo.cms/src/org/argeo/cms/users/NewUserWizard.java deleted file mode 100644 index ca817492b..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/NewUserWizard.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.cms.users; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; -import javax.jcr.Session; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.eclipse.ui.dialogs.ErrorFeedback; -import org.argeo.jcr.JcrUtils; -import org.argeo.jcr.UserJcrUtils; -import org.argeo.security.UserAdminService; -import org.argeo.security.jcr.NewUserDetails; -import org.eclipse.jface.wizard.Wizard; - -/** Wizard to create a new user */ -public class NewUserWizard extends Wizard { - private final static Log log = LogFactory.getLog(NewUserWizard.class); - private Session session; - private UserAdminService userAdminService; - // private JcrSecurityModel jcrSecurityModel; - - // pages - private MainUserInfoWizardPage mainUserInfo; - - public NewUserWizard(Session session, UserAdminService userAdminService) { - this.session = session; - this.userAdminService = userAdminService; - // this.jcrSecurityModel = jcrSecurityModel; - } - - @Override - public void addPages() { - mainUserInfo = new MainUserInfoWizardPage(userAdminService); - addPage(mainUserInfo); - } - - @Override - public boolean performFinish() { - if (!canFinish()) - return false; - - String username = mainUserInfo.getUsername(); - try { - // Node userProfile = SecurityJcrUtils.createUserProfile(session, - // username); - // Node userProfile = jcrSecurityModel.sync(session, username, - // null); - // session.getWorkspace().getVersionManager() - // .checkout(userProfile.getPath()); - // mainUserInfo.mapToProfileNode(userProfile); - char[] password = mainUserInfo.getPassword(); - // TODO add roles - NewUserDetails jcrUserDetails = new NewUserDetails(username, - password) { - private static final long serialVersionUID = 7480071525603380742L; - - @Override - public void mapToProfileNode(Node userProfile) - throws RepositoryException { - mainUserInfo.mapToProfileNode(userProfile); - } - }; - // session.save(); - // session.getWorkspace().getVersionManager() - // .checkin(userProfile.getPath()); - userAdminService.createUser(jcrUserDetails); - return true; - } catch (Exception e) { - JcrUtils.discardQuietly(session); - Node userHome = UserJcrUtils.getUserHome(session, username); - if (userHome != null) { - try { - userHome.remove(); - session.save(); - } catch (RepositoryException e1) { - JcrUtils.discardQuietly(session); - log.warn("Error when trying to clean up failed new user " - + username, e1); - } - } - ErrorFeedback.show("Cannot create new user " + username, e); - return false; - } - } - - public void setSession(Session session) { - this.session = session; - } - -} diff --git a/org.argeo.cms/src/org/argeo/cms/users/UserCreationWizard.java b/org.argeo.cms/src/org/argeo/cms/users/UserCreationWizard.java deleted file mode 100644 index 6ffd22462..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/UserCreationWizard.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.cms.users; - -import java.util.ArrayList; - -import javax.jcr.Node; -import javax.jcr.Property; -import javax.jcr.RepositoryException; -import javax.jcr.Session; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.ArgeoException; -import org.argeo.cms.internal.auth.JcrSecurityModel; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.jcr.ArgeoNames; -import org.argeo.jcr.JcrUtils; -import org.argeo.jcr.UserJcrUtils; -import org.argeo.security.UserAdminService; -import org.argeo.security.jcr.JcrUserDetails; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Text; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UsernameNotFoundException; - -/** Wizard to create a new user */ -@Deprecated -class UserCreationWizard extends Wizard { - private final static Log log = LogFactory.getLog(UserCreationWizard.class); - private Session session; - private UserAdminService userAdminService; - private JcrSecurityModel jcrSecurityModel; - - // pages - private MainUserInfoWizardPage mainUserInfo; - - public UserCreationWizard(Session session, - UserAdminService userAdminService, JcrSecurityModel jcrSecurityModel) { - this.session = session; - this.userAdminService = userAdminService; - this.jcrSecurityModel = jcrSecurityModel; - } - - @Override - public void addPages() { - mainUserInfo = new MainUserInfoWizardPage(userAdminService); - addPage(mainUserInfo); - } - - @Override - public boolean performFinish() { - if (!canFinish()) - return false; - - String username = mainUserInfo.getUsername(); - try { - Node userProfile = jcrSecurityModel.sync(session, username, null); - session.getWorkspace().getVersionManager() - .checkout(userProfile.getPath()); - mainUserInfo.mapToProfileNode(userProfile); - String password = mainUserInfo.getPassword(); - // TODO add roles - JcrUserDetails jcrUserDetails = new JcrUserDetails(userProfile, - password, new ArrayList()); - session.save(); - session.getWorkspace().getVersionManager() - .checkin(userProfile.getPath()); - userAdminService.createUser(jcrUserDetails); - return true; - } catch (Exception e) { - JcrUtils.discardQuietly(session); - Node userHome = UserJcrUtils.getUserHome(session, username); - if (userHome != null) { - try { - userHome.remove(); - session.save(); - } catch (RepositoryException e1) { - JcrUtils.discardQuietly(session); - log.warn("Error when trying to clean up failed new user " - + username, e1); - } - } - // FIXME re-get ErrorFeedback dialog after single sourcing - // refactoring - MessageDialog.openError(getShell(), "Error", - "Cannot create new user " + username); - log.error("Cannot create new user " + username); - e.printStackTrace(); - return false; - } - } - - /** First page, collect all main info and check their validity */ - protected class MainUserInfoWizardPage extends WizardPage implements - ModifyListener, ArgeoNames { - private static final long serialVersionUID = -3367329974808698649L; - private Text username, firstName, lastName, primaryEmail, password1, - password2; - private UserAdminService userAdminService; - - public MainUserInfoWizardPage(UserAdminService userAdminService) { - super("Main"); - this.userAdminService = userAdminService; - setTitle("Required Information"); - } - - @Override - public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - composite.setLayout(new GridLayout(2, false)); - username = EclipseUiUtils.createGridLT(composite, "Username", this); - primaryEmail = EclipseUiUtils - .createGridLT(composite, "Email", this); - firstName = EclipseUiUtils.createGridLT(composite, "First name", - this); - lastName = EclipseUiUtils - .createGridLT(composite, "Last name", this); - password1 = EclipseUiUtils - .createGridLP(composite, "Password", this); - password2 = EclipseUiUtils.createGridLP(composite, - "Repeat password", this); - setControl(composite); - - // Initialize buttons - setPageComplete(false); - getContainer().updateButtons(); - } - - @Override - public void modifyText(ModifyEvent event) { - String message = checkComplete(); - if (message != null) { - setMessage(message, WizardPage.ERROR); - setPageComplete(false); - } else { - setMessage("Complete", WizardPage.INFORMATION); - setPageComplete(true); - } - getContainer().updateButtons(); - } - - /** @return error message or null if complete */ - protected String checkComplete() { - // if - // (!username.getText().matches(UserAdminService.USERNAME_PATTERN)) - // return - // "Wrong user name format, should be lower case, between 3 and 64 characters with only '_' an '@' as acceptable special character."; - - if (username.getText().trim().equals("")) - return "User name must not be empty"; - - try { - UserDetails userDetails = userAdminService - .loadUserByUsername(username.getText()); - return "User " + userDetails.getUsername() + " already exists"; - } catch (UsernameNotFoundException e) { - // silent - } - if (!primaryEmail.getText().matches(UserAdminService.EMAIL_PATTERN)) - return "Not a valid email address"; - if (firstName.getText().trim().equals("")) - return "Specify a first name"; - if (lastName.getText().trim().equals("")) - return "Specify a last name"; - if (password1.getText().trim().equals("")) - return "Specify a password"; - if (password2.getText().trim().equals("")) - return "Repeat the password"; - if (!password2.getText().equals(password1.getText())) - return "Passwords are different"; - return null; - } - - public String getUsername() { - return username.getText(); - } - - public String getPassword() { - return password1.getText(); - } - - public void mapToProfileNode(Node up) { - try { - up.setProperty(ARGEO_PRIMARY_EMAIL, primaryEmail.getText()); - up.setProperty(ARGEO_FIRST_NAME, firstName.getText()); - up.setProperty(ARGEO_LAST_NAME, lastName.getText()); - - // derived values - // TODO add wizard pages to do it - up.setProperty(Property.JCR_TITLE, firstName.getText() + " " - + lastName.getText()); - up.setProperty(Property.JCR_DESCRIPTION, ""); - } catch (RepositoryException e) { - throw new ArgeoException("Cannot map to " + up, e); - } - } - } -} \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/users/UserPage.java b/org.argeo.cms/src/org/argeo/cms/users/UserPage.java deleted file mode 100644 index 0b9844344..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/UserPage.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.argeo.cms.users; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.argeo.cms.CmsEditable; -import org.argeo.cms.CmsUiProvider; -import org.argeo.cms.util.CmsUtils; -import org.argeo.cms.viewers.JcrVersionCmsEditable; -import org.argeo.cms.widgets.ScrolledPage; -import org.argeo.security.UserAdminService; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; - -/** Enable management of a given user */ -public class UserPage implements CmsUiProvider { - - /* DEPENDENCY INJECTION */ - private UserAdminService userAdminService; - - @Override - public Control createUi(Composite parent, Node context) - throws RepositoryException { - CmsEditable cmsEditable = new JcrVersionCmsEditable(context); - Composite page = createPage(parent); - UserViewer userViewer = new UserViewer(page, SWT.NONE, context, - cmsEditable); - - Control control = userViewer.getControl(); - - // FIXME not satisfying. - if (control instanceof UserPart) - ((UserPart) control).setUserAdminService(userAdminService); - - Composite par = control.getParent(); - - UserRolesPart rolesPart = new UserRolesPart(par, SWT.NO_FOCUS, context, - true); - rolesPart.setUserAdminService(userAdminService); - rolesPart.setUserAdminService(userAdminService); - rolesPart.createControl(rolesPart, UserStyles.USER_FORM_TEXT); - rolesPart.refresh(); - rolesPart.setLayoutData(CmsUtils.fillWidth()); - - return page; - } - - protected Composite createPage(Composite parent) { - parent.setLayout(CmsUtils.noSpaceGridLayout()); - ScrolledPage scrolled = new ScrolledPage(parent, SWT.NONE); - scrolled.setLayoutData(CmsUtils.fillAll()); - scrolled.setLayout(CmsUtils.noSpaceGridLayout()); - // TODO manage style - // CmsUtils.style(scrolled, "maintenance_user_form"); - - Composite page = new Composite(scrolled, SWT.NONE); - page.setLayout(CmsUtils.noSpaceGridLayout()); - page.setBackgroundMode(SWT.INHERIT_NONE); - page.setLayoutData(CmsUtils.fillAll()); - return page; - } - - public void setUserAdminService(UserAdminService userAdminService) { - this.userAdminService = userAdminService; - } -} \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/users/UserPart.java b/org.argeo.cms/src/org/argeo/cms/users/UserPart.java deleted file mode 100644 index b3e7c9cf2..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/UserPart.java +++ /dev/null @@ -1,267 +0,0 @@ -package org.argeo.cms.users; - -import java.util.ArrayList; -import java.util.List; - -import javax.jcr.Item; -import javax.jcr.Node; -import javax.jcr.Property; -import javax.jcr.RepositoryException; - -import org.argeo.ArgeoException; -import org.argeo.cms.util.CmsUtils; -import org.argeo.cms.viewers.EditablePart; -import org.argeo.cms.viewers.NodePart; -import org.argeo.cms.widgets.StyledControl; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.jcr.ArgeoNames; -import org.argeo.security.UserAdminService; -import org.argeo.security.jcr.JcrUserDetails; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.FocusListener; -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.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Text; - -/** Display a single user main info once it has been created. */ -public class UserPart extends StyledControl implements EditablePart, NodePart, - FocusListener { - private static final long serialVersionUID = -2883661960366940505L; - // private final static Log log = LogFactory.getLog(UserPart.class); - - // A static list of supported properties. - private List texts; - private final static String KEY_PROP_NAME = "jcr:propertyName"; - - // the 2 password fields - private Text pwd1, pwd2; - - private UserAdminService userAdminService; - - // TODO implement to provide user creation ability for anonymous user? - // public UserPart(Composite parent, int swtStyle) { - // super(parent, swtStyle); - // } - - public UserPart(Composite parent, int style, Item item) - throws RepositoryException { - this(parent, style, item, true); - } - - public UserPart(Composite parent, int style, Item item, - boolean cacheImmediately) throws RepositoryException { - super(parent, style, item, cacheImmediately); - } - - @Override - public Item getItem() throws RepositoryException { - return getNode(); - } - - @Override - protected Control createControl(Composite box, String style) { - Composite body = new Composite(box, SWT.NO_FOCUS); - body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); - CmsUtils.style(body, UserStyles.USER_FORM_TEXT); - - body.setLayout(new GridLayout(2, false)); - - // Header - Label headerLbl = new Label(body, SWT.NONE); - headerLbl.setText(" Main user information"); - headerLbl.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, - 2, 1)); - CmsUtils.style(headerLbl, UserStyles.USER_FORM_TITLE); - - // Form field - createTexts(body, UserStyles.USER_FORM_TEXT); - - if (isEditing()) - for (Text txt : texts) - txt.addFocusListener(this); - - // Change password link - headerLbl = new Label(body, SWT.NONE); - headerLbl.setText(" Reset password"); - headerLbl.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, - 2, 1)); - CmsUtils.style(headerLbl, UserStyles.USER_FORM_TITLE); - - pwd1 = createLP(body, UserStyles.USER_FORM_TEXT, "Enter password"); - pwd2 = createLP(body, UserStyles.USER_FORM_TEXT, "Re-Enter"); - - final Link link = new Link(body, SWT.NONE); - link.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 2, - 1)); - link.setText("Change password"); - link.addSelectionListener(new SelectionAdapter() { - private static final long serialVersionUID = 8348668888548451776L; - - @Override - public void widgetSelected(SelectionEvent e) { - String msg = null; - if ("".equals(pwd1.getText().trim())) - msg = "Passwords cannot be blank"; - else if (!pwd1.getText().equals(pwd2.getText())) - msg = "Passwords do not match, please try again."; - - if (msg != null) { - MessageDialog.openError(link.getShell(), "Error", msg); - } else { - try { - String username = getNode().getProperty( - ArgeoNames.ARGEO_USER_ID).getString(); - if (userAdminService.userExists(username)) { - JcrUserDetails userDetails = (JcrUserDetails) userAdminService - .loadUserByUsername(username); - userDetails = userDetails.cloneWithNewPassword(pwd1 - .getText()); - userAdminService.updateUser(userDetails); - MessageDialog.openInformation(link.getShell(), - "Password changed", "Password changed."); - } - } catch (Exception re) { - throw new ArgeoException( - "unable to reset password for user " - + getNode(), re); - } - } - - pwd1.setText(""); - pwd2.setText(""); - - } - }); - return body; - } - - private void createTexts(Composite parent, String style) { - texts = new ArrayList(); - texts.add(createLT(parent, style, "Displayed Name", Property.JCR_TITLE)); - texts.add(createLT(parent, style, "First name", - ArgeoNames.ARGEO_FIRST_NAME)); - texts.add(createLT(parent, style, "Last name", - ArgeoNames.ARGEO_LAST_NAME)); - texts.add(createLT(parent, style, "Email", - ArgeoNames.ARGEO_PRIMARY_EMAIL)); - texts.add(createLMT(parent, style, "Description", - Property.JCR_DESCRIPTION)); - } - - void refresh() { - for (Text txt : texts) { - txt.setText(get(getNode(), (String) txt.getData(KEY_PROP_NAME))); - txt.setEditable(isEditing()); - } - } - - // his.listener methods - @Override - public void focusGained(FocusEvent e) { - // Do nothing - } - - @Override - public void focusLost(FocusEvent e) { - // Save change if needed - Text text = (Text) e.getSource(); - set(getNode(), (String) text.getData(KEY_PROP_NAME), text.getText()); - } - - // HELPERS - /** Creates label and text. */ - protected Text createLT(Composite body, String style, String label, - String propName) { - Label lbl = new Label(body, SWT.NONE); - lbl.setText(label); - lbl.setFont(EclipseUiUtils.getBoldFont(body)); - lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false)); - Text text = new Text(body, SWT.BORDER); - text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - CmsUtils.style(text, style); - text.setData(KEY_PROP_NAME, propName); - return text; - } - - // HELPERS - /** Creates label and password text. */ - protected Text createLP(Composite body, String style, String label) { - Label lbl = new Label(body, SWT.NONE); - lbl.setText(label); - lbl.setFont(EclipseUiUtils.getBoldFont(body)); - lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false)); - Text text = new Text(body, SWT.BORDER | SWT.PASSWORD); - text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - CmsUtils.style(text, style); - return text; - } - - /** Creates label and multiline text. */ - protected Text createLMT(Composite body, String style, String label, - String propName) { - Label lbl = new Label(body, SWT.NONE); - lbl.setText(label); - lbl.setFont(EclipseUiUtils.getBoldFont(body)); - GridData gd = new GridData(SWT.RIGHT, SWT.TOP, false, false); - gd.verticalIndent = 0; - lbl.setLayoutData(gd); - Text text = new Text(body, SWT.BORDER | SWT.MULTI | SWT.WRAP); - gd = new GridData(SWT.FILL, SWT.CENTER, true, true); - gd.heightHint = 100; - text.setLayoutData(gd); - CmsUtils.style(text, style); - text.setData(KEY_PROP_NAME, propName); - return text; - } - - /** - * Concisely get the string value of a property. Returns an empty String - * rather than null if this node doesn't have this property or if the - * corresponding property is an empty string. - */ - private String get(Node node, String propertyName) { - try { - if (!node.hasProperty(propertyName)) - return ""; - else - return node.getProperty(propertyName).getString(); - } catch (RepositoryException e) { - throw new ArgeoException("Cannot get property " + propertyName - + " of " + node, e); - } - } - - private boolean set(Node node, String propName, String value) { - try { - if ("".equals(value) - && (!node.hasProperty(propName) || node - .hasProperty(propName) - && "".equals(node.getProperty(propName).getString()))) - return false; - else if (node.hasProperty(propName) - && node.getProperty(propName).getString() - .equals((String) value)) - return false; - else { - node.setProperty(propName, (String) value); - node.getSession().save(); - return true; - } - } catch (RepositoryException e) { - throw new ArgeoException("Cannot property " + propName + " on " - + node + " with value " + value, e); - } - } - - public void setUserAdminService(UserAdminService userAdminService) { - this.userAdminService = userAdminService; - } -} \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java b/org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java deleted file mode 100644 index 610c49c7f..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/UserRolesPart.java +++ /dev/null @@ -1,283 +0,0 @@ -package org.argeo.cms.users; - -import java.util.ArrayList; -import java.util.List; - -import javax.jcr.Item; -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.argeo.ArgeoException; -import org.argeo.cms.internal.auth.JcrSecurityModel; -import org.argeo.cms.util.CmsUtils; -import org.argeo.cms.viewers.EditablePart; -import org.argeo.cms.viewers.NodePart; -import org.argeo.cms.widgets.StyledControl; -import org.argeo.jcr.ArgeoNames; -import org.argeo.security.UserAdminService; -import org.argeo.security.jcr.JcrUserDetails; -import org.eclipse.jface.viewers.CheckStateChangedEvent; -import org.eclipse.jface.viewers.CheckboxTableViewer; -import org.eclipse.jface.viewers.ColumnLabelProvider; -import org.eclipse.jface.viewers.ICheckStateListener; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.FocusListener; -import org.eclipse.swt.events.MouseListener; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.springframework.security.core.GrantedAuthority; - -/** Display a single user main info once it has been created. */ -public class UserRolesPart extends StyledControl implements EditablePart, - NodePart, FocusListener { - private static final long serialVersionUID = -6013980335975055846L; - - private CheckboxTableViewer rolesViewer; - private Table table; - - private JcrUserDetails userDetails; - private UserAdminService userAdminService; - private List roles; - - // FIXME - // private final Image checked; - - // TODO implement to provide user creation ability for anonymous user? - // public UserPart(Composite parent, int swtStyle) { - // super(parent, swtStyle); - // } - - public UserRolesPart(Composite parent, int style, Item item, - UserAdminService userAdminService, JcrSecurityModel jcrSecurityModel) - throws RepositoryException { - this(parent, style, item, true); - } - - public UserRolesPart(Composite parent, int style, Item item, - boolean cacheImmediately) throws RepositoryException { - super(parent, style, item, cacheImmediately); - // checked = new Image(parent, imageData); - } - - @Override - public Item getItem() throws RepositoryException { - return getNode(); - } - - public void setMouseListener(MouseListener mouseListener) { - super.setMouseListener(mouseListener); - table.addMouseListener(mouseListener); - } - - @Override - public Control createControl(Composite box, String style) { - // box.setLayout(CmsUtils.noSpaceGridLayout()); - box.setLayout(new GridLayout()); - - Label header = new Label(box, SWT.NONE); - header.setText(" Groups"); - CmsUtils.style(header, UserStyles.USER_FORM_TITLE); - header.setLayoutData(CmsUtils.fillWidth()); - - int swtStyle = SWT.CHECK | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL; - if (!isEditing()) - swtStyle |= SWT.READ_ONLY; - - table = new Table(box, swtStyle); - table.setLinesVisible(true); - table.setHeaderVisible(false); - CmsUtils.style(table, style); - - rolesViewer = new CheckboxTableViewer(table); - - TableViewerColumn column; - - // check column - // TableViewerColumn column = createTableViewerColumn(rolesViewer, - // "checked", 20); - // column.setLabelProvider(new ColumnLabelProvider() { - // public String getText(Object element) { - // return null; - // } - - // public Image getImage(Object element) { - // String role = element.toString(); - // if (roles.contains(role)) { - // - // return ROLE_CHECKED; - // } else { - // return null; - // } - // - // } - // ); - // column.setEditingSupport(new RoleEditingSupport(rolesViewer, part)); - - // role column - column = createTableViewerColumn(rolesViewer, "Role", 400); - column.setLabelProvider(new ColumnLabelProvider() { - private static final long serialVersionUID = -7334412925967366255L; - - public String getText(Object element) { - return element.toString(); - } - }); - rolesViewer.setContentProvider(new RolesContentProvider()); - rolesViewer.setInput(userAdminService.listEditableRoles().toArray()); - - // try to prevent edition on read only nodes. Does not work. - // rolesViewer.setAllGrayed(!isEditing()); - - rolesViewer.addCheckStateListener(new ICheckStateListener() { - - @Override - public void checkStateChanged(CheckStateChangedEvent event) { - String name = (String) event.getElement(); - boolean contained = roles.contains(name); - boolean checked = event.getChecked(); - if (checked != contained) { - if (!contained) - roles.add(name); - else - roles.remove(name); - userDetails = userDetails.cloneWithNewRoles(roles); - userAdminService.updateUser(userDetails); - } - } - }); - return table; - } - - // THE LISTENER - @Override - public void focusGained(FocusEvent e) { - // Do nothing - } - - @Override - public void focusLost(FocusEvent e) { - // Save change if needed - // Text text = (Text) e.getSource(); - } - - // private final static Image ROLE_CHECKED = SecurityAdminPlugin - // .getImageDescriptor("icons/security.gif").createImage(); - - public void setUserAdminService(UserAdminService userAdminService) { - this.userAdminService = userAdminService; - try { - Node currNode = getNode(); - String username = currNode.getProperty(ArgeoNames.ARGEO_USER_ID) - .getString(); - if (userAdminService.userExists(username)) { - JcrUserDetails userDetails = (JcrUserDetails) userAdminService - .loadUserByUsername(username); - setUserDetails(userDetails); - } - } catch (Exception e) { - throw new ArgeoException("Cannot retrieve userDetails for " - + getNode(), e); - } - - } - - public void setUserDetails(JcrUserDetails userDetails) { - this.userDetails = userDetails; - this.roles = new ArrayList(); - for (GrantedAuthority ga : userDetails.getAuthorities()) - roles.add(ga.getAuthority()); - if (rolesViewer != null) - rolesViewer.refresh(); - } - - protected TableViewerColumn createTableViewerColumn(TableViewer viewer, - String title, int bound) { - final TableViewerColumn viewerColumn = new TableViewerColumn(viewer, - SWT.NONE); - final TableColumn column = viewerColumn.getColumn(); - column.setText(title); - column.setWidth(bound); - column.setResizable(true); - column.setMoveable(true); - return viewerColumn; - - } - - public List getRoles() { - return roles; - } - - public void refresh() { - - // return roles.toArray(); - rolesViewer.setCheckedElements(roles.toArray()); // setSelection(1); - // rolesViewer.setInput(roles); - rolesViewer.refresh(); - } - - private class RolesContentProvider implements IStructuredContentProvider { - private static final long serialVersionUID = 4119915828862214310L; - - public Object[] getElements(Object inputElement) { - return userAdminService.listEditableRoles().toArray(); - } - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - viewer.refresh(); - } - } - - // /** Select the columns by editing the checkbox in the first column */ - // class RoleEditingSupport extends EditingSupport { - // - // private final TableViewer viewer; - // - // public RoleEditingSupport(TableViewer viewer) { - // super(viewer); - // this.viewer = viewer; - // } - // - // @Override - // protected CellEditor getCellEditor(Object element) { - // return new CheckboxCellEditor(null, SWT.CHECK | SWT.READ_ONLY); - // - // } - // - // @Override - // protected boolean canEdit(Object element) { - // return true; - // } - // - // @Override - // protected Object getValue(Object element) { - // String role = element.toString(); - // return roles.contains(role); - // - // } - // - // @Override - // protected void setValue(Object element, Object value) { - // Boolean inRole = (Boolean) value; - // String role = element.toString(); - // if (inRole && !roles.contains(role)) { - // roles.add(role); - // } else if (!inRole && roles.contains(role)) { - // roles.remove(role); - // } - // viewer.refresh(); - // } - // } - -} \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/users/UserStyles.java b/org.argeo.cms/src/org/argeo/cms/users/UserStyles.java deleted file mode 100644 index 533f5bbaf..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/UserStyles.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.argeo.cms.users; - -/** Some tries with the style */ -public interface UserStyles { - - /** A text in a form */ - public final static String USER_FORM_TEXT = "user_form_text"; - public final static String USER_FORM_TITLE = "user_form_title"; - - public final static String USER_FORM_TEXT_ALT = "user_form_text_alt"; -} \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/users/UserViewer.java b/org.argeo.cms/src/org/argeo/cms/users/UserViewer.java deleted file mode 100644 index 8badedb12..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/UserViewer.java +++ /dev/null @@ -1,94 +0,0 @@ -package org.argeo.cms.users; - -import static org.eclipse.swt.SWT.NONE; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.argeo.cms.CmsEditable; -import org.argeo.cms.util.CmsUtils; -import org.argeo.cms.viewers.AbstractPageViewer; -import org.argeo.cms.viewers.EditablePart; -import org.argeo.cms.viewers.Section; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseListener; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; - -public class UserViewer extends AbstractPageViewer { - private static final long serialVersionUID = -717973369525981931L; - private UserPart userPart; - - public UserViewer(Composite parent, int style, Node userNode, - CmsEditable cmsEditable) throws RepositoryException { - this(new UserPart(parent, SWT.NO_BACKGROUND, userNode), style, - userNode, cmsEditable); - } - - private UserViewer(UserPart userPart, int style, Node userNode, - CmsEditable cmsEditable) throws RepositoryException { - super(new Section(userPart, NONE, userNode), style, cmsEditable); - this.userPart = userPart; - userPart.createControl(userPart, "cms_test"); - userPart.setStyle("cms_test"); - refresh(); - userPart.setLayoutData(CmsUtils.fillWidth()); - userPart.setMouseListener(getMouseListener()); - - // Add other parts - // userRolesPart.createControl(userPart,"cms_test"); - // userPart.setStyle("cms_test"); - // refresh(); - // userPart.setLayoutData(CmsUtils.fillWidth()); - // userPart.setMouseListener(getMouseListener()); - - } - - // private JcrComposite createParents(Composite parent, Node userNode) - // throws RepositoryException { - // this.parent = ; - // return this.parent; - // } - - @Override - public Control getControl() { - return userPart; - } - - // MOUSE LISTENER - @Override - protected MouseListener createMouseListener() { - return new ML(); - } - - private class ML extends MouseAdapter { - private static final long serialVersionUID = 8526890859876770905L; - - @Override - public void mouseDoubleClick(MouseEvent e) { - if (e.button == 1) { - Control source = (Control) e.getSource(); - if (getCmsEditable().canEdit()) { - getCmsEditable().startEditing(); - EditablePart composite = findDataParent(source); - Point point = new Point(e.x, e.y); - edit(composite, source.toDisplay(point)); - } - } - } - } - - protected void updateContent(EditablePart part) throws RepositoryException { - if (part instanceof UserPart) - ((UserPart) part).refresh(); - } - - protected void refresh(Control control) throws RepositoryException { - if (control instanceof UserPart) - ((UserPart) control).refresh(); - } - -} diff --git a/org.argeo.cms/src/org/argeo/cms/users/UsersPage.java b/org.argeo.cms/src/org/argeo/cms/users/UsersPage.java deleted file mode 100644 index 600b3daff..000000000 --- a/org.argeo.cms/src/org/argeo/cms/users/UsersPage.java +++ /dev/null @@ -1,279 +0,0 @@ -package org.argeo.cms.users; - -import java.util.Iterator; -import java.util.Map; -import java.util.TreeMap; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; -import javax.jcr.Session; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.ArgeoException; -import org.argeo.cms.CmsUiProvider; -import org.argeo.cms.maintenance.NonAdminPage; -import org.argeo.cms.util.CmsUtils; -import org.argeo.eclipse.ui.parts.UsersTable; -import org.argeo.jcr.ArgeoNames; -import org.argeo.jcr.JcrUtils; -import org.argeo.security.UserAdminService; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -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.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.context.SecurityContextHolder; - -/** - * Simple page to manage users of a given repository. It relies on Argeo user - * model: user profile nodes are stored in the main workspace - */ -public class UsersPage implements CmsUiProvider { - private final static Log log = LogFactory.getLog(UsersPage.class); - - /* DEPENDENCY INJECTION */ - private UserAdminService userAdminService; - private String userWkspName; - - // TODO use a constant - private final static String ROLE_USER_ADMIN = "ROLE_USER_ADMIN"; - - // Local UI Providers - private NonAdminPage nap = new NonAdminPage(); - private UserPage userPage = new UserPage(); - - @Override - public Control createUi(Composite parent, Node context) - throws RepositoryException { - // This page is only visible to user with role USER_ADMIN - if (isAdmin(context)) { - Session session = context.getSession().getRepository() - .login(userWkspName); - return createMainLayout(parent, session); - } else - nap.createUi(parent, context); - return null; - } - - // Main layout - // Left: User Table - Right User Details Edition - private Control createMainLayout(Composite parent, final Session session) - throws RepositoryException { - - Composite layoutCmp = new Composite(parent, SWT.NO_FOCUS); - layoutCmp.setLayoutData(CmsUtils.fillAll()); - layoutCmp - .setLayout(CmsUtils.noSpaceGridLayout(new GridLayout(2, true))); - - Composite left = new Composite(layoutCmp, SWT.NO_FOCUS); - left.setLayoutData(CmsUtils.fillAll()); - UsersTable table = createUsersTable(left, session); - - final Composite right = new Composite(layoutCmp, SWT.NO_FOCUS); - right.setLayoutData(CmsUtils.fillAll()); - - final TableViewer viewer = table.getTableViewer(); - viewer.addSelectionChangedListener(new ISelectionChangedListener() { - - @Override - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) viewer - .getSelection(); - if (selection.isEmpty()) { - // Should we clean the right column? - CmsUtils.clear(right); - right.layout(); - return; - } else { - Node context = (Node) selection.getFirstElement(); - try { - CmsUtils.clear(right); - userPage.createUi(right, context); - right.layout(); - right.getParent().layout(); - } catch (RepositoryException e) { - e.printStackTrace(); - throw new ArgeoException("unable to create " - + "editor for user " + context, e); - } - } - } - }); - return left; - } - - private UsersTable createUsersTable(Composite parent, final Session session) - throws RepositoryException { - parent.setLayout(CmsUtils.noSpaceGridLayout()); - - // Add user CRUD buttons - Composite buttonCmp = new Composite(parent, SWT.NO_FOCUS); - buttonCmp.setLayoutData(CmsUtils.fillWidth()); - buttonCmp.setLayout(new GridLayout(2, false)); - // Delete - final Button deleteBtn = new Button(buttonCmp, SWT.PUSH); - deleteBtn.setText("Delete selected"); - deleteBtn - .setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false)); - - // Add - final Button addBtn = new Button(buttonCmp, SWT.PUSH); - addBtn.setText("Create"); - - Composite bottomCmp = new Composite(parent, SWT.NO_FOCUS); - bottomCmp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); - bottomCmp.setLayout(new GridLayout()); - - - // Create the composite that displays the list and a filter - final UsersTable userTableCmp = new UsersTable(bottomCmp, SWT.BORDER, - session); - userTableCmp.populate(true, false); - userTableCmp.setLayoutData(CmsUtils.fillAll()); - - // The various listeners - userTableCmp.addDisposeListener(new DisposeListener() { - private static final long serialVersionUID = -8854052549807709846L; - - @Override - public void widgetDisposed(DisposeEvent event) { - JcrUtils.logoutQuietly(session); - } - }); - - deleteBtn.addSelectionListener(new SelectionAdapter() { - private static final long serialVersionUID = -7340611909297995666L; - - @Override - public void widgetSelected(SelectionEvent e) { - - TableViewer viewer = userTableCmp.getTableViewer(); - ISelection selection = viewer.getSelection(); - if (selection.isEmpty()) - return; - - Map toDelete = new TreeMap(); - @SuppressWarnings("unchecked") - Iterator it = ((IStructuredSelection) selection) - .iterator(); - nodes: while (it.hasNext()) { - Node profileNode = it.next(); - try { - String userName = profileNode.getProperty( - ArgeoNames.ARGEO_USER_ID).getString(); - if (userName.equals(profileNode.getSession() - .getUserID())) { - log.warn("Cannot delete its own user: " + userName); - continue nodes; - } - toDelete.put(userName, profileNode); - } catch (RepositoryException re) { - log.warn("Cannot interpred user " + profileNode); - } - } - - if (!MessageDialog.openQuestion( - userTableCmp.getShell(), - "Delete User", - "Are you sure that you want to delete users " - + toDelete.keySet() - + "?\n" - + "This may lead to inconsistencies in the application.")) - return; - - for (String username : toDelete.keySet()) { - Session session = null; - try { - Node profileNode = toDelete.get(username); - userAdminService.deleteUser(username); - profileNode.getParent().remove(); - session = profileNode.getSession(); - session.save(); - } catch (RepositoryException re) { - JcrUtils.discardQuietly(session); - throw new ArgeoException("Cannot list users", re); - } - } - userTableCmp.refresh(); - } - }); - - addBtn.addSelectionListener(new SelectionAdapter() { - private static final long serialVersionUID = 9214984636836267786L; - - @Override - public void widgetSelected(SelectionEvent e) { - NewUserWizard newUserWizard = new NewUserWizard(session, - userAdminService); - WizardDialog dialog = new WizardDialog(addBtn.getShell(), - newUserWizard); - if (dialog.open() == Dialog.OK) - userTableCmp.refresh(); - } - }); - - // Configure - // userTableCmp.getTableViewer().addDoubleClickListener( - // new ViewDoubleClickListener()); - // getViewSite().setSelectionProvider(userTableCmp.getTableViewer()); - - // Add listener to refresh the list when something changes - // userStructureListener = new JcrUserListener(getSite().getShell() - // .getDisplay()); - // JcrUtils.addListener(session, userStructureListener, Event.NODE_ADDED - // | Event.NODE_REMOVED, ArgeoJcrConstants.PEOPLE_BASE_PATH, null); - // userPropertiesListener = new JcrUserListener(getSite().getShell() - // .getDisplay()); - // JcrUtils.addListener(session, userStructureListener, - // Event.PROPERTY_CHANGED | Event.PROPERTY_ADDED - // | Event.PROPERTY_REMOVED, - // ArgeoJcrConstants.PEOPLE_BASE_PATH, - // ArgeoTypes.ARGEO_USER_PROFILE); - - return userTableCmp; - } - - private boolean isAdmin(Node node) throws RepositoryException { - return isUserInRole(ROLE_USER_ADMIN); - } - - /** - * Returns true if the current user is in the specified role TODO factoize - * in the user admin service - */ - private boolean isUserInRole(String role) { - Authentication authen = SecurityContextHolder.getContext() - .getAuthentication(); - for (GrantedAuthority ga : authen.getAuthorities()) { - if (ga.getAuthority().equals(role)) - return true; - } - return false; - } - - /* DEPENDENCY INJECTION */ - public void setWorkspaceName(String workspaceName) { - this.userWkspName = workspaceName; - } - - public void setUserAdminService(UserAdminService userAdminService) { - this.userAdminService = userAdminService; - userPage.setUserAdminService(userAdminService); - } -} \ No newline at end of file -- 2.30.2