4. DAO
@Repository
public class LoginDaoImpl implements LoginDao{
@PersistenceContext
private EntityManager entityManager;
public EntityManager getEntityManager() {
return entityManager;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Override
@Transactional
public User createUser(User newUser) {
//get password hash
newUser.setPassword(getHashedPassword(newUser));
entityManager.persist(newUser);
entityManager.flush();
return newUser;
}
@Override
@Transactional
public User authenticateUser(User user) {
Query query = entityManager.createQuery("FROM User WHERE userName = :userName AND password = :password");
query.setParameter("userName", user.getUserName());
query.setParameter("password", getHashedPassword(user));
User u = null;
try {
u = (User) query.getSingleResult();
} catch (Exception e) {
// there is no record for the user name and password combo
u = null;
}
return u;
}
private String getHashedPassword(User user) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
md.update(user.getPassword().getBytes());
byte byteData[] = md.digest();
//convert the byte to hex format
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++) {
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
}
Comments
Post a Comment