]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/ArgeoUserEditor.java
Improve Security
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / editors / ArgeoUserEditor.java
index 9e258a65f8dbcf2cf471adcb2422c3efc9e7051f..99a4652a93910eeb591715808d4929c94669c44c 100644 (file)
@@ -3,7 +3,8 @@ package org.argeo.security.ui.editors;
 import org.argeo.ArgeoException;
 import org.argeo.security.ArgeoSecurityService;
 import org.argeo.security.ArgeoUser;
-import org.argeo.security.UserNature;
+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;
@@ -22,14 +23,20 @@ public class ArgeoUserEditor extends FormEditor {
                super.init(site, input);
                String username = ((ArgeoUserEditorInput) getEditorInput())
                                .getUsername();
-               user = securityService.getSecurityDao().getUser(username);
-               this.setPartProperty("name", username);
+               if (username == null) {// new
+                       user = new SimpleArgeoUser();
+                       user.getUserNatures().put(SimpleUserNature.TYPE,
+                                       new SimpleUserNature());
+               } else
+                       user = securityService.getUser(username);
+               this.setPartProperty("name", username != null ? username : "<new user>");
+               setPartName(username != null ? username : "<new user>");
        }
 
        protected void addPages() {
                try {
-                       addPage(new DefaultUserMainPage(this, user));
-                               
+                       addPage(new DefaultUserMainPage(this, securityService, user));
+
                } catch (PartInitException e) {
                        throw new ArgeoException("Not able to add page ", e);
                }
@@ -37,24 +44,29 @@ public class ArgeoUserEditor extends FormEditor {
 
        @Override
        public void doSave(IProgressMonitor monitor) {
-               // TODO Auto-generated method stub
+               // list pages
+               // TODO: make it more generic
+               findPage(DefaultUserMainPage.ID).doSave(monitor);
 
+               if (securityService.userExists(user.getUsername()))
+                       securityService.updateUser(user);
+               else {
+                       securityService.newUser(user);
+                       setPartName(user.getUsername());
+               }
+               firePropertyChange(PROP_DIRTY);
        }
 
        @Override
        public void doSaveAs() {
-               // TODO Auto-generated method stub
-
        }
 
        @Override
        public boolean isSaveAsAllowed() {
-               // TODO Auto-generated method stub
                return false;
        }
 
        public void setSecurityService(ArgeoSecurityService securityService) {
                this.securityService = securityService;
        }
-
 }