package com.rectang.xsm.pages;
import com.rectang.xsm.UserData;
import com.rectang.xsm.AccessControl;
import com.rectang.xsm.site.Visitor;
import com.twmacinta.util.MD5;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.model.PropertyModel;
/**
* Created by IntelliJ IDEA.
*
* @author Andrew Williams
* @version $Id: EditPassword.java 816 2010-05-30 14:02:03Z andy $
* @since 2.0
*/
public class EditPassword
extends XSMPage
implements Secure
{
public EditPassword( PageParameters parameters )
{
super( parameters );
}
public int getLevel()
{
return AccessControl.MEMBER;
}
public void layout()
{
super.layout();
UserData user = EditProfile.getUserToEdit( getPageParameters(), getXSMSession().getUser() );
add( new PasswordForm( "profile", user ) );
}
class PasswordForm
extends Form
{
UserData user;
String oldPassword, password, confirmPassword;
public PasswordForm( String id, UserData user )
{
super( id );
this.user = user;
add( new PasswordTextField( "oldPassword", new PropertyModel( this, "oldPassword" ) ) );
add( new PasswordTextField( "password", new PropertyModel( this, "password" ) ) );
add( new PasswordTextField( "confirmPassword", new PropertyModel( this, "confirmPassword" ) ) );
}
public void onSubmit()
{
MD5 md5 = new MD5( oldPassword );
if ( !md5.asHex().equals( user.getPassword() ) )
{
warn( "Old password is not correct" );
return;
}
if ( password == null || confirmPassword == null ||
password.equals( "" ) || !password.equals( confirmPassword ) )
{
warn( "Passwords must match" );
return;
}
user.setPassword( password );
if ( user.save() )
{
if ( user.getSite().getTechnologies().contains( "apache" ) )
{
user.getSite().setVisitor( new Visitor( user.getUsername(), password ) );
}
this.setResponsePage( Profile.class );
}
}
public String getOldPassword()
{
return oldPassword;
}
public void setOldPassword( String oldPassword )
{
this.oldPassword = oldPassword;
}
public String getPassword()
{
return password;
}
public void setPassword( String password )
{
this.password = password;
}
public String getConfirmPassword()
{
return confirmPassword;
}
public void setConfirmPassword( String confirmPassword )
{
this.confirmPassword = confirmPassword;
}
}
}