All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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