package com.mossle.security.util;
import com.mossle.core.auth.CustomPasswordEncoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
public class PasswordEncoderFactoryBean implements FactoryBean,
InitializingBean {
private static Logger logger = LoggerFactory
.getLogger(PasswordEncoderFactoryBean.class);
private String type;
private PasswordEncoder passwordEncoder;
private CharSequence salt;
public void afterPropertiesSet() {
if ("md5".equals(type)) {
this.passwordEncoder = new Md5PasswordEncoder(salt);
} else {
this.passwordEncoder = NoOpPasswordEncoder.getInstance();
}
logger.info("choose {}", passwordEncoder.getClass());
}
public Object getObject() {
return passwordEncoder;
}
public Class getObjectType() {
return PasswordEncoder.class;
}
public boolean isSingleton() {
return true;
}
public void setType(String type) {
this.type = type;
}
public CustomPasswordEncoder getCustomPasswordEncoder() {
return new SimplePasswordEncoder(this.passwordEncoder);
}
public void setSalt(CharSequence salt) {
this.salt = salt;
}
}