package com.kidgrow.oauth2.service.impl;
import com.kidgrow.common.feign.UserService;
import com.kidgrow.common.model.LoginAppUser;
import com.kidgrow.oauth2.service.KidgrowUserDetailsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.authentication.DisabledException;
import org.springframework.security.authentication.InternalAuthenticationServiceException;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.social.security.SocialUserDetails;
import org.springframework.social.security.SocialUserDetailsService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
*
* @Description:
* @Project:
* @CreateDate: Created in 2020/2/20 09:19
* @Author: liuke
*/
@Slf4j
@Service
public class UserDetailServiceImpl implements KidgrowUserDetailsService, SocialUserDetailsService {
@Resource
private UserService userService;
@Override
public UserDetails loadUserByUsername(String username) {
LoginAppUser loginAppUser = userService.findByUsername(username);
if (loginAppUser == null) {
throw new InternalAuthenticationServiceException("用户名或密码错误");
}
return checkUser(loginAppUser);
}
@Override
public SocialUserDetails loadUserByUserId(String openId) {
LoginAppUser loginAppUser = userService.findByOpenId(openId);
return checkUser(loginAppUser);
}
@Override
public UserDetails loadUserByMobile(String mobile) {
LoginAppUser loginAppUser = userService.findByMobile(mobile);
return checkUser(loginAppUser);
}
private LoginAppUser checkUser(LoginAppUser loginAppUser) {
if (loginAppUser != null && !loginAppUser.isEnabled()) {
throw new DisabledException("用户已作废");
}
return loginAppUser;
}
}