
cn.infop.dao.UserDao Maven / Gradle / Ivy
package cn.infop.dao;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.shiro.crypto.hash.Sha512Hash;
import cn.infop.entity.User;
import cn.infop.tools.BusinessDao;
import cn.infop.tools.JdbcUtils;
public class UserDao extends BusinessDao {
private final String table = "(select u.* from users u left join user_roles ur on ur.username = u.username where ur.role_name <>'ROOT' and u.username<>'wsh' union select u.* from users u left join user_roles ur on ur.username = u.username where ur.role_name is null) t";
public UserDao() {
super(User.class);
super.multiTable = table;
super.singleTable = "users";
}
public User findByUsername(String username) {
String sql = "select * from users where username = ?";
return JdbcUtils.getBean(sql, User.class, new Object[] { username });
}
public Set findRoleNamesByUsername(String username) {
Set set = new HashSet<>();
String sql = "select role_name from user_roles where username = ?";
List list = JdbcUtils.getColumns(sql, new Object[] { username });
for (String role : list) {
set.add(role);
}
return set;
}
public Set findPermissionByRolename(String rolename) {
Set set = new HashSet<>();
String sql = "select p.permission from roles_permissions rp left join permissions p on rp.permission=p.name where rp.role_name = ?";
List list = JdbcUtils.getColumns(sql, new Object[] { rolename });
for (String permission : list) {
set.add(permission);
}
return set;
}
/**
* 保存未加密的密码的用户
*
* @param user 数据模型用户
* @throws SQLException 保存失败抛出异常
*/
public void save(User user) throws SQLException {
String username = user.getUsername();
String password_salt = UUID.randomUUID().toString();
String password = DigestUtils.md5Hex(user.getPassword());
password = new Sha512Hash(password, password_salt).toString();
String locked = user.isLocked() ? "true" : "false";
String avatar = user.getAvatar();
String phone = user.getPhone();
String sql = "INSERT INTO users (username,password,password_salt,locked,avatar,phone) VALUES(?,?,?,?,?,?)";
Object[] params = new Object[] { username, password, password_salt, locked, avatar, phone };
JdbcUtils.insertWithoutReturnId(sql, params);
}
/**
* Update User Password
*
* @param username 用户名
* @param new_pwd 新密码
*/
public void updatePassword(String username, String new_pwd) {
String password_salt = UUID.randomUUID().toString();
String password = DigestUtils.md5Hex(new_pwd);
password = new Sha512Hash(password, password_salt).toString();
String sql = "update users set password = ?,password_salt = ? where username = ?";
JdbcUtils.execute(sql, new Object[] { password, password_salt, username });
}
public void updatePhone(String username, String phone) {
String sql = "update users set phone = ? where username = ?";
JdbcUtils.execute(sql, new Object[] { phone, username });
}
public void updateAvatar(String username, String avatar) {
String sql = "update users set avatar = ? where username = ?";
JdbcUtils.execute(sql, new Object[] { avatar, username });
}
public void updateStatus(String username, String locked) {
String sql = "update users set locked = ? where username = ?";
JdbcUtils.execute(sql, new Object[] { locked, username });
}
public void deleteUser(String username) {
JdbcUtils.execute("delete from user_roles where username = ?", new Object[] { username });
JdbcUtils.execute("delete from users where username = ?", new Object[] { username });
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy