ganzi-api/inventory-ent/src/main/java/com/rzyc/service/UserDetailsServiceImpl.java

93 lines
2.9 KiB
Java
Raw Normal View History

package com.rzyc.service;
2022-10-10 16:22:53 +08:00
import com.rzyc.advice.CustomException;
import com.rzyc.config.RedisUtil;
2022-10-10 16:22:53 +08:00
import com.rzyc.config.UserDetailsAndId;
import com.rzyc.enums.SysEnterpriseState;
import com.rzyc.mapper.AuthorityKeyMapper;
import com.rzyc.mapper.ent.EntUserMapper;
import com.rzyc.mapper.ent.SysEnterpriseMapper;
import com.rzyc.model.AuthorityKey;
import com.rzyc.model.ent.EntUser;
import com.rzyc.model.ent.SysEnterprise;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
/**
* spring security 用户认证过程
* @author Xuwanxin
* @author 2022/09/27
* */
@Service("userService")
public class UserDetailsServiceImpl implements UserDetailsService {
/**
* 内存过程密码加密
* */
private PasswordEncoder passwordEncoder;
/**
* 企业端用户
* */
private EntUserMapper entUserMapper;
/**
* 权限表mapper
* */
private AuthorityKeyMapper authorityKeyMapper;
/**
* redis操作工具
* */
private RedisUtil redisUtil;
@Autowired
public void UserDetailsServiceImplFinder(PasswordEncoder passwordEncoder,EntUserMapper entUserMapper,AuthorityKeyMapper authorityKeyMapper,RedisUtil redisUtil) {
this.passwordEncoder = passwordEncoder;
this.entUserMapper = entUserMapper;
this.authorityKeyMapper = authorityKeyMapper;
this.redisUtil = redisUtil;
}
@Override
public UserDetails loadUserByUsername(String name){
//判断数据库手机号
EntUser entUser = entUserMapper.validMobile(name,null);
if (Objects.isNull(entUser)){
throw new CustomException("用户名不存在");
}
List<GrantedAuthority> authority= new ArrayList<GrantedAuthority>();
List<AuthorityKey>authorizations = authorityKeyMapper.allAuthorizations();
redisUtil.set("allKeys",authorizations);
StringBuilder stringBuilder = new StringBuilder();
for (AuthorityKey s:authorizations) {
stringBuilder.append(s.getAuthKey());
authority.add(new SimpleGrantedAuthority(stringBuilder.toString()));
stringBuilder.setLength(0);
}
return new UserDetailsAndId(entUser.getName(), passwordEncoder.encode(entUser.getPasswd()), authority,entUser.getEntUserId(),entUser.getPostId());
}
}