package com.moral.service.impl;
|
|
import java.util.Collection;
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.userdetails.User;
|
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.moral.common.util.RedisUtil;
|
import com.moral.entity.Account;
|
import com.moral.entity.OperateUser;
|
import com.moral.mapper.AccountMapper;
|
import com.moral.service.AccountService;
|
import com.moral.service.OperateUserService;
|
|
@Service
|
public class AuthUserServiceImpl implements UserDetailsService {
|
|
@Resource
|
private AccountMapper accountMapper;
|
|
@Resource
|
private AccountService accountService;
|
|
@Resource
|
private OperateUserService operateUserService;
|
|
@Resource
|
private RedisTemplate<String, String> redisTemplate;
|
|
@Override
|
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
String type = RedisUtil.get(redisTemplate, "token_" + username), password;
|
Collection<SimpleGrantedAuthority> collection = new HashSet<SimpleGrantedAuthority>();
|
if ("screen".equals(type)) {
|
Account account = accountService.getAccountByAccountName(username);
|
password = account.getPassword();
|
List<Map<String, Object>> roleNames = accountMapper.getRoleNameByAccountId(account.getId());
|
for (Map<String, Object> roleName : roleNames) {
|
collection.add(new SimpleGrantedAuthority((String) roleName.get("role_name")));
|
}
|
} else {
|
OperateUser operateUser = operateUserService.getOperateUserByMobile(username);
|
password = operateUser.getPassword();
|
collection.add((new SimpleGrantedAuthority("ROLE_MOBILE")));
|
}
|
return new User(username, password, collection);
|
}
|
}
|