Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.tsg.techsupportmvc.dao; import com.tsg.techsupportmvc.dto.User; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.security.crypto.bcrypt.BCrypt; /** * * @author apprentice */ public class UserDaoDbImpl implements UserDao { private JdbcTemplate jdbcTemplate; private static final String query = "SELECT * FROM `users` WHERE `username` = ?"; @Autowired public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override public String getSalt() { return BCrypt.gensalt(); } @Override public String getHash(String password, String salt) { return BCrypt.hashpw(password, salt); } @Override public boolean userExists(String username) { try { User user = jdbcTemplate.queryForObject(query, new UserMapper(), username); return user.getUsername().equals(username); } catch (EmptyResultDataAccessException e) { return false; } } @Override public boolean passwordIsCorrect(String username, String password) { try { User user = jdbcTemplate.queryForObject(query, new UserMapper(), username); String salt = user.getSalt(); String hash = getHash(password, salt); return hash.equals(user.getPasswordHash()); } catch (EmptyResultDataAccessException e) { return false; } } @Override public void updateUser(User user) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public User getUserByUsername(String username) { try { return jdbcTemplate.queryForObject(query, new UserMapper(), username); } catch (EmptyResultDataAccessException e) { return null; } } private static final class UserMapper implements RowMapper<User> { @Override public User mapRow(ResultSet rs, int i) throws SQLException { User user = new User(); user.setUserId(rs.getInt("userId")); user.setUsername(rs.getString("username")); user.setPasswordHash(rs.getString("passwordHash")); user.setSalt(rs.getString("salt")); user.setDisplayName(rs.getString("displayName")); user.setSiteRole(rs.getString("siteRole")); return user; } } }