All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.jhonsapp.finaluser.service.AbstractPersonUserService Maven / Gradle / Ivy

The newest version!
package br.com.jhonsapp.finaluser.service;

import br.com.jhonsapp.finaluser.domain.PersonUser;
import br.com.jhonsapp.finaluser.domain.User;
import br.com.jhonsapp.finaluser.encryption.Encryption;
import br.com.jhonsapp.finaluser.encryption.EncryptionBCrypt;
import br.com.jhonsapp.finaluser.persistence.PersonUserDAO;

/**
 * {@link AbstractPersonUserService} is a subclass of {@link AbstractUserService} and an
 * abstract implementation of {@link PersonUserService}
 * 
 * @see PersonUser
 * 
 * @author Jhonathan Camacho
 * @author Jhonys Camacho
 *
 */
public abstract class AbstractPersonUserService extends AbstractUserService implements PersonUserService {
	private static final long serialVersionUID = -8415495419626093975L;

	private Encryption encryption = EncryptionBCrypt.getInstance();
	
	@Override
	protected abstract PersonUserDAO getDAO();	
	
	@Override
	public boolean hasStateInvalid(T user) {
		return !isPasswordValid(user.getPassword());
	}
	
	@Override
	public boolean isUnique(T user) {
		User userSearch = findUser(user.getEmail());
		if (userSearch != null && userSearch.getId() != user.getId()) {
			return false;
		} else {
			return true;
		}
	}
	
	@Override
	protected void preSaveOrUpdate(T user) {
		if (user.getPassword().length() < 50) {
			user.setPassword(encryption.encrypt(user.getPassword()));
		}
	}
	
	@Override
	public boolean hasObject(T user) {
		return findUser(user.getEmail()) != null;
	}
	
	@Override
	public boolean isPasswordValid(String password) {
		return password != null && password.trim().length() >= 8;
	}
	
	@Override
	public String findAndroidToken(String email) {
		return getDAO().findByEmail(email).getAndroidToken();
	}
	
	@Override
	public T findUser(String email) {
		return getDAO().findByEmail(email);
	}
	
	
	@Override
	public boolean validateLogin(String email, String password) {
		return getDAO().canLogin(email.trim(), encryption.encrypt(password));
	}
	
	
	@Override
	public boolean canResetUserPassword(String email, String token) {

		PersonUser user = findUser(email);
		
		if(user != null && user.getResetPasswordCode().equals(token)){
			return true;
		}else{
			return false;
		}
	}
	
	@Override
	public void resetPassword(T user) {
		
		if(user.isResetPasswordCodeEmpty())
			throw new IllegalStateException("The token can not be empty.");
		
		user.clearResetPasswordCode();
		saveOrUpdate(user);		
	}
		
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy