AuthDaoImpl.java
package org.xandercat.pmdb.dao;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.xandercat.pmdb.config.PmdbGrantedAuthority;
@Component
public class AuthDaoImpl implements AuthDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void grant(String username, PmdbGrantedAuthority... grantedAuthorities) {
grant(username, Arrays.asList(grantedAuthorities));
}
@Override
public void grant(String username, Collection<PmdbGrantedAuthority> grantedAuthorities) {
final String sql = "INSERT INTO authorities(username, authority) VALUES (?, ?)";
for (PmdbGrantedAuthority grantedAuthority : grantedAuthorities) {
jdbcTemplate.update(sql, ps -> {
ps.setString(1, username);
ps.setString(2, grantedAuthority.name());
});
}
}
@Override
public void revoke(String username, PmdbGrantedAuthority... grantedAuthorities) {
final String sql = "DELETE FROM authorities WHERE username = ? AND authority = ?";
for (PmdbGrantedAuthority grantedAuthority : grantedAuthorities) {
jdbcTemplate.update(sql, ps -> {
ps.setString(1, username);
ps.setString(2, grantedAuthority.name());
});
}
}
@Override
public Collection<PmdbGrantedAuthority> getAuthorities(String username) {
Set<PmdbGrantedAuthority> authorities = new HashSet<PmdbGrantedAuthority>();
final String sql = "SELECT authority FROM authorities WHERE username = ?";
jdbcTemplate.query(sql, ps -> ps.setString(1, username), rs -> {
authorities.add(PmdbGrantedAuthority.valueOf(rs.getString(1)));
});
return authorities;
}
}