package com.rectang.xsm.pages.admin; import com.rectang.xsm.pages.Register; import com.rectang.xsm.pages.XSMPage; import com.rectang.xsm.pages.Secure; import com.rectang.xsm.*; import com.rectang.xsm.io.RemoteDocument; import com.rectang.xsm.pages.cms.View; import com.rectang.xsm.site.Visitor; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.validation.EqualPasswordInputValidator; import org.apache.wicket.model.CompoundPropertyModel; /** * Page for adding a user to the site * * @author Andrew Williams * @version $Id: AddUser.java 823 2010-12-15 23:59:49Z andy $ * @since 2.0 */ public class AddUser extends XSMPage implements Secure { public AddUser( PageParameters parameters ) { super( parameters ); } public int getLevel() { return AccessControl.MANAGER; } protected com.rectang.xsm.site.Site getSite() { return getXSMSession().getSite(); } public void layout() { super.layout(); add( new UserForm( "adduser" ) ); } class UserForm extends Form { private String username, email, password, repeatPassword; public UserForm( String id ) { super( id ); setModel( new CompoundPropertyModel( this ) ); PasswordTextField password, password2; add( new TextField( "username" ).setRequired( true ) ); add( new TextField( "email" ).setRequired( true ) ); add( (password = new PasswordTextField( "password" )).setRequired( true ) ); add( (password2 = new PasswordTextField( "repeatPassword" )).setRequired( true ) ); add( new EqualPasswordInputValidator( password, password2 ) ); add( new Button( "add" ) ); } public void onSubmit() { if ( username.indexOf( ' ' ) > -1 ) { warn( "Could not create user, username may not contain spaces" ); return; } RemoteDocument doc = RemoteDocument.getDoc( getSite(), "/members/" + username, true ); if ( doc.exists() ) { warn( "Could not create user, username " + username + " is already taken" ); return; } UserData newData = new UserData( username, getSite() ); newData.setEmail( email ); newData.setPassword( password ); newData.setSiteEditor( true ); if ( newData.save() ) { if ( getSite().getTechnologies().contains( "apache" ) ) { getSite().setVisitor( new Visitor( username, password ) ); } getSession().info( "Successfully added user " + username ); if ( AddUser.this instanceof Register ) { PageParameters siteParams = new PageParameters(); siteParams.add( "sitename", getSite().getId() ); siteParams.add( "page", getSite().getDefault() ); setResponsePage( View.class, siteParams ); } else { setResponsePage( Users.class ); } } else { error( "Could not save user file for " + username ); } } public String getUsername() { return username; } public void setUsername( String username ) { this.username = username; } public String getEmail() { return email; } public void setEmail( String email ) { this.email = email; } public String getPassword() { return password; } public void setPassword( String password ) { this.password = password; } public String getRepeatPassword() { return repeatPassword; } public void setRepeatPassword( String repeatPassword ) { this.repeatPassword = repeatPassword; } } }