Add user
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 28 Jan 2011 18:35:21 +0000 (18:35 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 28 Jan 2011 18:35:21 +0000 (18:35 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4088 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

security/eclipse/plugins/org.argeo.security.ui/META-INF/spring/commands.xml
security/eclipse/plugins/org.argeo.security.ui/plugin.xml
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityPerspective.java
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/ArgeoUserEditor.java
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/ArgeoUserEditorInput.java
security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/DefaultUserMainPage.java

index d4415d6593936bb49ebd0592db1726fb60bd2630..6c042132854f5b6d0af848542a53c5f69c538e05 100644 (file)
@@ -6,7 +6,7 @@
 
        <bean id="org.argeo.security.ui.openArgeoUserEditor" class="org.argeo.security.ui.commands.OpenArgeoUserEditor"
                scope="prototype" />
-       <bean id="org.argeo.security.ui.saveArgeoUser" class="org.argeo.security.ui.commands.SaveArgeoUser"
+       <bean id="org.argeo.security.ui.newArgeoUserEditor" class="org.argeo.security.ui.commands.OpenArgeoUserEditor"
                scope="prototype" />
        <bean id="org.argeo.security.ui.addRole" class="org.argeo.security.ui.commands.AddRole"
                scope="prototype">
index 2960ef3f1b2bc8feb7f74ec9689784fad901a0b0..354c3215e98c69b12801e724dc011e1e12d278e6 100644 (file)
@@ -87,8 +87,8 @@
       </command>
       <command
             defaultHandler="org.argeo.eclipse.spring.SpringCommandHandler"
-            id="org.argeo.security.ui.saveArgeoUser"
-            name="SaveArgeoUser">
+            id="org.argeo.security.ui.newArgeoUserEditor"
+            name="OpenArgeoUserEditor">
       </command>
       <command
             defaultHandler="org.argeo.eclipse.spring.SpringCommandHandler"
                   tooltip="Add new role">
             </command>
         </menuContribution>
+       <menuContribution
+            locationURI="toolbar:org.argeo.security.ui.usersView">
+            <command
+                  commandId="org.argeo.security.ui.newArgeoUserEditor"
+                  icon="icons/add.gif"
+                  label="Add User"
+                  tooltip="Add new user">
+            </command>
+        </menuContribution>
         <menuContribution
                 allPopups="false"
                 locationURI="menu:file?after=additions">
index 63e327eee5bbfcf8d526e542c2b3b264b4fc1c95..bf404ce6f195dab92e799aeb2d2bde9f2eba916c 100644 (file)
@@ -16,7 +16,7 @@ public class SecurityPerspective implements IPerspectiveFactory {
 
                left.addView("org.argeo.security.ui.usersView");
                left.addView("org.argeo.security.ui.rolesView");
-               left.addView("org.argeo.security.ui.currentUserView");
+               //left.addView("org.argeo.security.ui.currentUserView");
        }
 
 }
index 70afce67762652c34663f49e431cb4ee65a96f15..7c0213704a299a6785c7d3695597de491eddee60 100644 (file)
@@ -5,6 +5,8 @@ import org.apache.commons.logging.LogFactory;
 import org.argeo.ArgeoException;
 import org.argeo.security.ArgeoSecurityService;
 import org.argeo.security.ArgeoUser;
+import org.argeo.security.SimpleArgeoUser;
+import org.argeo.security.nature.SimpleUserNature;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
@@ -25,9 +27,14 @@ public class ArgeoUserEditor extends FormEditor {
                super.init(site, input);
                String username = ((ArgeoUserEditorInput) getEditorInput())
                                .getUsername();
-               user = securityService.getSecurityDao().getUser(username);
-               this.setPartProperty("name", username);
-               setPartName(username);
+               if (username == null) {// new
+                       user = new SimpleArgeoUser();
+                       user.getUserNatures().put(SimpleUserNature.TYPE,
+                                       new SimpleUserNature());
+               } else
+                       user = securityService.getSecurityDao().getUser(username);
+               this.setPartProperty("name", username != null ? username : "<new user>");
+               setPartName(username != null ? username : "<new user>");
        }
 
        protected void addPages() {
@@ -41,16 +48,23 @@ public class ArgeoUserEditor extends FormEditor {
 
        @Override
        public void doSave(IProgressMonitor monitor) {
-               if (log.isDebugEnabled())
-                       log.debug("doSave called");
-               // for (int i = 0; i < getPageCount(); i++) {
-               // IEditorPart editor = getEditor(i);
-               // if (editor != null)
-               // editor.doSave(monitor);
-               // }
+               // list pages
+               // TODO: make it more generic
                findPage(DefaultUserMainPage.ID).doSave(monitor);
 
-               securityService.updateUser(user);
+               if (securityService.getSecurityDao().userExists(user.getUsername()))
+                       securityService.updateUser(user);
+               else {
+                       try {
+                               // FIXME: make it cleaner
+                               ((SimpleArgeoUser)user).setPassword(user.getUsername());
+                               securityService.newUser(user);
+                               setPartName(user.getUsername());
+                       } catch (Exception e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
+               }
                firePropertyChange(PROP_DIRTY);
        }
 
index 155f37e14a4951359b6d2c1badf13e83a2baab09..9d61e9fab8be3d8589cb16400282558327e1ba07 100644 (file)
@@ -12,13 +12,12 @@ public class ArgeoUserEditorInput implements IEditorInput {
                this.username = username;
        }
 
-       public Object getAdapter(Class adapter) {
+       public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
                return null;
        }
 
        public boolean exists() {
-               // TODO: use security service?
-               return true;
+               return username != null;
        }
 
        public ImageDescriptor getImageDescriptor() {
@@ -26,16 +25,15 @@ public class ArgeoUserEditorInput implements IEditorInput {
        }
 
        public String getName() {
-               return username;
+               return username != null ? username : "<new user>";
        }
 
        public IPersistableElement getPersistable() {
-               // TODO Auto-generated method stub
                return null;
        }
 
        public String getToolTipText() {
-               return username;
+               return username != null ? username : "<new user>";
        }
 
        public boolean equals(Object obj) {
index 9ed5ccaeca948ccff66b1809a84c6ee4153cecc8..2887edaa6182e8afc0392b9b550d7f53dced124d 100644 (file)
@@ -4,6 +4,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.security.ArgeoSecurityService;
 import org.argeo.security.ArgeoUser;
+import org.argeo.security.SimpleArgeoUser;
 import org.argeo.security.nature.SimpleUserNature;
 import org.argeo.security.ui.SecurityUiPlugin;
 import org.eclipse.jface.viewers.CellEditor;
@@ -89,8 +90,14 @@ public class DefaultUserMainPage extends FormPage {
                body.setLayout(layout);
 
                // add widgets (view)
-               tk.createLabel(body, "Username");
-               tk.createLabel(body, user.getUsername());
+               final Text username;
+               if (user.getUsername() != null) {
+                       tk.createLabel(body, "Username");
+                       tk.createLabel(body, user.getUsername());
+                       username = null;
+               } else {
+                       username = createLT(body, "Username", "");
+               }
                final Text firstName = createLT(body, "First name",
                                simpleNature.getFirstName());
                final Text lastName = createLT(body, "Last name",
@@ -102,6 +109,11 @@ public class DefaultUserMainPage extends FormPage {
                // create form part (controller)
                AbstractFormPart part = new SectionPart(section) {
                        public void commit(boolean onSave) {
+                               if (username != null) {
+                                       ((SimpleArgeoUser) user).setUsername(username.getText());
+                                       username.setEditable(false);
+                                       username.setEnabled(false);
+                               }
                                simpleNature.setFirstName(firstName.getText());
                                simpleNature.setLastName(lastName.getText());
                                simpleNature.setEmail(email.getText());