package services;
import java.util.List;
import javax.persistence.Query;
import exception.UserAuthenticationException;
import exception.UserNotFoundException;
import play.Logger;
import play.db.jpa.JPA;
import security.PasswordCreator;
import models.User;
public class UserService {
public boolean addNewUser(User user) {
try {
user.setPassword(PasswordCreator.sha1Password(user.getPassword(), user.getSalt()));
JPA.em().persist(user);
JPA.em().flush();
return true;
} catch (Exception e) {
return false;
}
// TODO : when we'll talking about e-mail sending (if any), we'll add here the code to send "welcome mail"
}
public boolean isUniqueLogin(String login) {
User user = getByLogin(login);
return user == null;
}
public User getByLogin(String login) {
Query query = JPA.em().createQuery("SELECT u FROM User u WHERE u.login = :login");
query.setParameter("login", login);
return (User) query.getSingleResult();
}
public User getByLoginAndPassword(String login, String password) {
try {
User user = getByLogin(login);
if (user == null) throw new UserNotFoundException("User with login '"+login+"' was not found");
password = PasswordCreator.sha1Password(password, user.getSalt());
if (!password.equals(user.getPassword())) throw new UserAuthenticationException("Password for user '"+login+"' doesn't match");
return user;
} catch (Exception e) {
Logger.error("An error occurred on getting user by login and password. Login used: "+login, e);
}
return null;
}
}