package com.hehenian.manager.modules.users.service.impl; import java.util.List; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.encoding.Md5PasswordEncoder; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import com.hehenian.manager.commons.Constants; import com.hehenian.manager.commons.Pagination; import com.hehenian.manager.modules.sys.dao.AuthorityDao; import com.hehenian.manager.modules.sys.dao.RolesAuthorityDao; import com.hehenian.manager.modules.sys.dao.UsersRolesDao; import com.hehenian.manager.modules.sys.model.RolesAuthority; import com.hehenian.manager.modules.sys.model.UserInfos; import com.hehenian.manager.modules.sys.model.UsersRoles; import com.hehenian.manager.modules.users.dao.RolesDao; import com.hehenian.manager.modules.users.dao.UserDao; import com.hehenian.manager.modules.users.model.Managers; import com.hehenian.manager.modules.users.model.Roles; import com.hehenian.manager.modules.users.service.UserService; @Service("userService") public class UserServiceImpl implements UserDetailsService,UserService { @Autowired protected UserDao userDao; @Autowired protected AuthorityDao authorityDao; @Autowired protected RolesDao rolesDao; @Autowired protected UsersRolesDao usersRolesDao; @Autowired protected RolesAuthorityDao rolesAuthorityDao; Md5PasswordEncoder encoder=new Md5PasswordEncoder(); @Override public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { Managers data = userDao.getUserDetailsByUserName(userName); List<GrantedAuthority> authorities = authorityDao .getGrantedAuthority(data.getId()); UserInfos details=new UserInfos(data.getId(),data.getUsername(),data.getNickname(),data.getPassword(),data.getSalt(), true, true, true, true, authorities); return details; } /** * 新增用户 */ @Override public int addUsers(Managers user) { String salt = RandomStringUtils.randomAlphanumeric(6); user.setSalt(salt); user.setPassword(encoder.encodePassword(user.getPassword() .trim(), salt)); user.setEnabled(true); int ret=-1; if(user.getId()!=null){ ret=userDao.updateUser(user); }else{ ret=userDao.addUser(user); } return ret==1?Constants.SUCCESS:Constants.FAIL; } public Managers getUserById(int userId){ return userDao.getUserById(userId); } /** * 删除用户 */ public int deleteOneUser(int userId){ int ret=userDao.deleteUser(userId); return ret==1?Constants.SUCCESS:Constants.FAIL; } @Override public Pagination<Managers> getManagersByPage( Pagination<Managers> pagination,String username) { return userDao.getUsersByPage(pagination, username); } @Override public Pagination<Roles> getRolesByPage(Pagination<Roles> pagination, String roleName) { return rolesDao.getRolesByPage(pagination, roleName); } @Override public Roles getOneRoleById(int roleId) { return rolesDao.getOneRoleById(roleId); } @Override public int deleteOneRole(int roleId) { int ret=rolesDao.deleteRole(roleId); return ret==1?Constants.SUCCESS:Constants.FAIL; } @Override public int updateOneRole(Roles role) { int ret=Constants.FAIL; role.setEnabled(true); if(role.getId()!=null){ ret=rolesDao.updateRole(role); }else{ ret=rolesDao.addRole(role); } return ret==1?Constants.SUCCESS:Constants.FAIL; } @Override public Pagination<Managers> getManagersInOrNotInRoles( Pagination<Managers> page, int roleId,boolean flag) { return flag?userDao.getUsersInRoles(page, roleId):userDao.getUsersNotInRoles(page, roleId); } @Override public int addUsersRoles(UsersRoles ur) { if(usersRolesDao.hasExists(ur)){ return Constants.FAIL; } int ret=usersRolesDao.addUsersRoles(ur); return ret==1?Constants.SUCCESS:Constants.FAIL; } @Override public int deleteUsersRoles(UsersRoles ur) { int ret=usersRolesDao.deleteUsersRoles(ur); return ret>0?Constants.SUCCESS:Constants.FAIL; } @Override public Pagination<Roles> getRolesInOrNotInAuthorities( Pagination<Roles> page, int authId,boolean inOrNot) { return inOrNot?rolesDao.getRolesInAuthority(page, authId):rolesDao.getRolesNotInAuthority(page, authId); } @Override public int addRolesAuthority(RolesAuthority ra) { int ret=rolesAuthorityDao.addRolesAuthority(ra); return ret==1?Constants.SUCCESS:Constants.FAIL; } @Override public int deleteRolesAuthority(RolesAuthority ra) { int ret=rolesAuthorityDao.deleteRolesAuthority(ra); return ret>0?Constants.SUCCESS:Constants.FAIL; } @Override public int resetCurrentUserPwd(int userId,String oldPassword, String newPassword) { if(StringUtils.isBlank(oldPassword) || StringUtils.isBlank(newPassword)){ return Constants.FAIL; } Managers user=userDao.getUserById(userId); if(user==null){ return Constants.FAIL; } String passwordEncode=encoder.encodePassword(oldPassword, user.getSalt()); if(user.getPassword().equals(passwordEncode)){ user.setPassword(encoder.encodePassword(newPassword .trim(), user.getSalt())); int count=userDao.updateUser(user); return count>0?Constants.SUCCESS:Constants.FAIL; } return Constants.INVALID; } }