// Path: src/main/java/org/auslides/security/shiro/util/MessageBean.java
// public class MessageBean {
// 
// 
// 	public static final String STATUS = "status";
// 	public static final String MESSAGE = "message";
// 	public static final String FAILURE_REASON = "failureReason";
// 
// 	public static final String TOKEN = "token";
// 	public static final String EMAIL = "email";
// 
// 	public MessageBean(Integer status, String message) {
// 		this.status = status;
// 		this.message = message;
// 	}
// 
// 	public MessageBean(Integer status, String message, String failureReason) {
// 		this.status = status;
// 		this.message = message;
// 		this.failureReason = failureReason;
// 	}
// 
// 	public MessageBean(Integer status, String message, String email, String token) {
// 		this.status = status;
// 		this.message = message;
// 		this.email = email;
// 		this.token = token;
// 	}
// 
// 	private Integer status;
// 	private String message;
// 	private String failureReason;
// 	private String email;
// 	private String token;
// 
// 	public Integer getStatus() {
// 		return status;
// 	}
// 
// 	public void setStatus(Integer status) {
// 		this.status = status;
// 	}
// 
// 	public String getMessage() {
// 		return message;
// 	}
// 
// 	public void setMessage(String message) {
// 		this.message = message;
// 	}
// 
// 	public String getFailureReason() {
// 		return failureReason;
// 	}
// 
// 	public void setFailureReason(String failureReason) {
// 		this.failureReason = failureReason;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public String getToken() {
// 		return token;
// 	}
// 
// 	public void setToken(String token) {
// 		this.token = token;
// 	}
// }
// 
// Path: src/main/java/org/auslides/security/shiro/util/Messages.java
// public final class Messages {
// 
// 	private Messages() {}
// 
// 	public enum Status {
// 		OK("ok"),
// 		FAILED("failed"),
// 		UNAUTHORIZED("unauthorized");
// 
// 		private final String text;
// 
// 		private Status(final String text) {
// 			this.text = text;
// 		}
// 
// 		@Override
// 		public String toString() {
// 			return text;
// 		}
// 
// 	}
// 
// 	public enum Login {
// 		NO_SUCH_USER("noSuchUser"),
// 		BAD_PASSWORD("badPassword"),
// 		ACCOUNT_LOCKED("accountLocked"),
// 		ACCT_DISABLE("accountDisabled"),
// 		MANY_ATTEMPT("tooManyAttempts"),
// 		INVALID_DATA("invalidData");
// 
// 		private final String text;
// 
// 		private Login(final String text) {
// 			this.text = text;
// 		}
// 
// 		@Override
// 		public String toString() {
// 			return text;
// 		}
// 
// 		public static Messages.Login get(AuthenticationException ae) {
// 			if (ae instanceof UnknownAccountException) {
// 				return Messages.Login.NO_SUCH_USER;
// 			} else if (ae instanceof IncorrectCredentialsException) {
// 				return Messages.Login.BAD_PASSWORD;
// 			} else if (ae instanceof LockedAccountException) {
// 				return Messages.Login.ACCOUNT_LOCKED;
// 			} else if (ae instanceof DisabledAccountException) {
// 				return Messages.Login.ACCT_DISABLE;
// 			} else if (ae instanceof ExcessiveAttemptsException) {
// 				return Messages.Login.MANY_ATTEMPT;
// 			}
// 			return Messages.Login.INVALID_DATA;
// 		}
// 
// 		public static String getMessage(AuthenticationException ae) {
// 			return get(ae).toString();
// 		}
// 	}
// 
// 	public enum Register {
// 		ALREADY_USER("alreadyUser"),
// 		BAD_EMAIL_ADDRESS("badEmailAdd"),
// 		BAD_PASSWORD("badPassword"),
// 		PASSWORDS_MATCH("passwordMatch"),
// 		INVALID_PHONE("badPhoneNum"),
// 		INVALID_DATA("invalidData"),
// 		NO_SUCH_MEMBER("superForgot");
// 
// 		private final String text;
// 
// 		private Register(final String text) {
// 			this.text = text;
// 		}
// 
// 		@Override
// 		public String toString() {
// 			return text;
// 		}
// 	}
// 
// 	public enum Activate {
// 		CODE_EXPIRED("expiredCode"),
// 		NO_SUCH_USER("noSuchUser"),
// 		BAD_PASSWORD("badPassword"),
// 		PASSWORDS_MATCH("passwordMatch"),
// 		INVALID_DATA("invalidData");
// 
// 		private final String text;
// 
// 		private Activate(final String text) {
// 			this.text = text;
// 		}
// 
// 		@Override
// 		public String toString() {
// 			return text;
// 		}
// 	}
// 
// }


import org.auslides.security.shiro.util.MessageBean;
import org.auslides.security.shiro.util.Messages;
import com.google.common.collect.Maps;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.util.Collection;
import java.util.Map;
import java.util.logging.Logger;
package org.auslides.security.shiro.filter;




public class WebAuthenticationFilter extends FormAuthenticationFilter {
	private static final Logger LOGGER = Logger.getLogger(WebAuthenticationFilter.class.getName());

	@Override
	protected void setFailureAttribute(ServletRequest request, AuthenticationException ae) {
// Path: src/main/java/org/auslides/security/shiro/util/MessageBean.java
// public class MessageBean {
// 
// 
// 	public static final String STATUS = "status";
// 	public static final String MESSAGE = "message";
// 	public static final String FAILURE_REASON = "failureReason";
// 
// 	public static final String TOKEN = "token";
// 	public static final String EMAIL = "email";
// 
// 	public MessageBean(Integer status, String message) {
// 		this.status = status;
// 		this.message = message;
// 	}
// 
// 	public MessageBean(Integer status, String message, String failureReason) {
// 		this.status = status;
// 		this.message = message;
// 		this.failureReason = failureReason;
// 	}
// 
// 	public MessageBean(Integer status, String message, String email, String token) {
// 		this.status = status;
// 		this.message = message;
// 		this.email = email;
// 		this.token = token;
// 	}
// 
// 	private Integer status;
// 	private String message;
// 	private String failureReason;
// 	private String email;
// 	private String token;
// 
// 	public Integer getStatus() {
// 		return status;
// 	}
// 
// 	public void setStatus(Integer status) {
// 		this.status = status;
// 	}
// 
// 	public String getMessage() {
// 		return message;
// 	}
// 
// 	public void setMessage(String message) {
// 		this.message = message;
// 	}
// 
// 	public String getFailureReason() {
// 		return failureReason;
// 	}
// 
// 	public void setFailureReason(String failureReason) {
// 		this.failureReason = failureReason;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public String getToken() {
// 		return token;
// 	}
// 
// 	public void setToken(String token) {
// 		this.token = token;
// 	}
// }
// 
// Path: src/main/java/org/auslides/security/shiro/util/Messages.java
// public final class Messages {
// 
// 	private Messages() {}
// 
// 	public enum Status {
// 		OK("ok"),
// 		FAILED("failed"),
// 		UNAUTHORIZED("unauthorized");
// 
// 		private final String text;
// 
// 		private Status(final String text) {
// 			this.text = text;
// 		}
// 
// 		@Override
// 		public String toString() {
// 			return text;
// 		}
// 
// 	}
// 
// 	public enum Login {
// 		NO_SUCH_USER("noSuchUser"),
// 		BAD_PASSWORD("badPassword"),
// 		ACCOUNT_LOCKED("accountLocked"),
// 		ACCT_DISABLE("accountDisabled"),
// 		MANY_ATTEMPT("tooManyAttempts"),
// 		INVALID_DATA("invalidData");
// 
// 		private final String text;
// 
// 		private Login(final String text) {
// 			this.text = text;
// 		}
// 
// 		@Override
// 		public String toString() {
// 			return text;
// 		}
// 
// 		public static Messages.Login get(AuthenticationException ae) {
// 			if (ae instanceof UnknownAccountException) {
// 				return Messages.Login.NO_SUCH_USER;
// 			} else if (ae instanceof IncorrectCredentialsException) {
// 				return Messages.Login.BAD_PASSWORD;
// 			} else if (ae instanceof LockedAccountException) {
// 				return Messages.Login.ACCOUNT_LOCKED;
// 			} else if (ae instanceof DisabledAccountException) {
// 				return Messages.Login.ACCT_DISABLE;
// 			} else if (ae instanceof ExcessiveAttemptsException) {
// 				return Messages.Login.MANY_ATTEMPT;
// 			}
// 			return Messages.Login.INVALID_DATA;
// 		}
// 
// 		public static String getMessage(AuthenticationException ae) {
// 			return get(ae).toString();
// 		}
// 	}
// 
// 	public enum Register {
// 		ALREADY_USER("alreadyUser"),
// 		BAD_EMAIL_ADDRESS("badEmailAdd"),
// 		BAD_PASSWORD("badPassword"),
// 		PASSWORDS_MATCH("passwordMatch"),
// 		INVALID_PHONE("badPhoneNum"),
// 		INVALID_DATA("invalidData"),
// 		NO_SUCH_MEMBER("superForgot");
// 
// 		private final String text;
// 
// 		private Register(final String text) {
// 			this.text = text;
// 		}
// 
// 		@Override
// 		public String toString() {
// 			return text;
// 		}
// 	}
// 
// 	public enum Activate {
// 		CODE_EXPIRED("expiredCode"),
// 		NO_SUCH_USER("noSuchUser"),
// 		BAD_PASSWORD("badPassword"),
// 		PASSWORDS_MATCH("passwordMatch"),
// 		INVALID_DATA("invalidData");
// 
// 		private final String text;
// 
// 		private Activate(final String text) {
// 			this.text = text;
// 		}
// 
// 		@Override
// 		public String toString() {
// 			return text;
// 		}
// 	}
// 
// }


// Path: src/main/java/org/auslides/security/shiro/filter/WebAuthenticationFilter.java
import org.auslides.security.shiro.util.MessageBean;
import org.auslides.security.shiro.util.Messages;
import com.google.common.collect.Maps;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.util.Collection;
import java.util.Map;
import java.util.logging.Logger;

package org.auslides.security.shiro.filter;




public class WebAuthenticationFilter extends FormAuthenticationFilter {
	private static final Logger LOGGER = Logger.getLogger(WebAuthenticationFilter.class.getName());

	@Override
	protected void setFailureAttribute(ServletRequest request, AuthenticationException ae) {
		request.setAttribute(MessageBean.FAILURE_REASON, Messages.Login.getMessage(ae));