Package hirondelle.predict.pub.lostpassword

Source Code of hirondelle.predict.pub.lostpassword.LostPassword

package hirondelle.predict.pub.lostpassword;

import static hirondelle.web4j.util.Consts.FAILS;
import hirondelle.predict.util.Captcha;
import hirondelle.web4j.model.Check;
import hirondelle.web4j.model.Id;
import hirondelle.web4j.model.ModelCtorException;
import hirondelle.web4j.security.SafeText;

/**
  Model object for user entry in the lost-password form. 
*/
public final class LostPassword {

  /**
   * Full constructor. All params are required.
   * 
   *  <P>The captcha fields must be present, and must have a valid response.
   * @param aEmail Valid email address
   * @param aCaptchaChallenge
   * @param aCaptchaResponse
   * @param aIpAddress the client IP address
   */
   public LostPassword(
    SafeText aEmail,
    SafeText aCaptchaChallenge,
    SafeText aCaptchaResponse,
    Id aIpAddress
   ) throws ModelCtorException {
     fEmail = aEmail;
     fCaptchaChallenge = aCaptchaChallenge;
     fCaptchaResponse = aCaptchaResponse;
     fIpAddress = aIpAddress;
     validateState();
   }
  
   public SafeText getEmailAddress() { return fEmail;

   /** Intended for debugging only. Passwords are not emitted. */
   @Override public String toString(){
     StringBuilder builder = new StringBuilder();
     builder.append(LostPassword.class);
     builder.append(" Email: " + fEmail);
     return builder.toString();
   }

   // PRIVATE //
   private final SafeText fEmail;
   private final SafeText fCaptchaChallenge;
   private final SafeText fCaptchaResponse;
   private final Id fIpAddress;

   private void validateState() throws ModelCtorException {
     ModelCtorException ex = new ModelCtorException();
    
     if ( FAILS == Check.required(fEmail, Check.email()) ) {
       ex.add("Valid email address is required.");
     }
     if( FAILS == isCaptchaPresent() ){
       ex.add("Please type in the fuzzy characters (CAPTCHA)");
     }
     else  ifFAILS == isCaptchaValid() ){
       ex.add("CAPTCHA invalid. Please type in the fuzzy characters (CAPTCHA) again.");
     }

     if ( ! ex.isEmpty() ) throw ex;
   }
  
   private boolean isCaptchaPresent(){
     return Check.required(fCaptchaChallenge) && Check.required(fCaptchaResponse);
   }
  
   private boolean isCaptchaValid(){
     return Captcha.isCaptchaValid(
       fIpAddress.getRawString(), fCaptchaChallenge.getRawString(), fCaptchaResponse.getRawString()
     );
   }
}
TOP

Related Classes of hirondelle.predict.pub.lostpassword.LostPassword

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.