package br.com.arsmachina.eloquentia.controller.impl;
import java.util.List;
import br.com.arsmachina.controller.impl.ControllerImpl;
import br.com.arsmachina.dao.SortCriterion;
import br.com.arsmachina.eloquentia.controller.UserController;
import br.com.arsmachina.eloquentia.dao.UserDAO;
import br.com.arsmachina.eloquentia.entity.User;
import br.com.arsmachina.eloquentia.enums.Role;
import br.com.arsmachina.eloquentia.security.PasswordHasher;
/**
* Default {@link UserController} implementation.
*
* @author Thiago H. de Paula Figueiredo (http://machina.com.br/thiago)
*/
public class UserControllerImpl extends ControllerImpl<User, String> implements UserController {
final private UserDAO dao;
final private PasswordHasher passwordHasher;
public UserControllerImpl(UserDAO dao, PasswordHasher passwordHasher) {
super(dao);
this.dao = dao;
this.passwordHasher = passwordHasher;
}
public SortCriterion[] getDefaultSortCriteria() {
return null;
}
public User findByLogin(String email) {
return dao.findByLogin(email);
}
/**
* Hashes the password before saving plus adds the {@link Role#USER} and {@link Role#COMMENTER}
* roles if the user has none.
*/
@Override
public void save(User user) {
user.setPassword(passwordHasher.hash(user.getPassword()));
final List<Role> roles = user.getRoles();
if (roles.isEmpty()) {
roles.add(Role.USER);
roles.add(Role.COMMENTER);
}
super.save(user);
}
}