package org.argeo.security.ui.editors;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
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;
/** Editor for an Argeo user. */
public class ArgeoUserEditor extends FormEditor {
+ private final static Log log = LogFactory.getLog(ArgeoUserEditor.class);
+
public final static String ID = "org.argeo.security.ui.argeoUserEditor";
private ArgeoUser user;
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.getSecurityDao().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);
}
@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.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);
}
@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;
}
-
}