use of com.goodskill.api.bo.UserBO in project goodsKill by techa03.
the class CommonController method handleError.
@GetMapping("/")
public void handleError(HttpServletRequest request, HttpServletResponse response) throws IOException {
Subject subject = SecurityUtils.getSubject();
Session session = subject.getSession();
if (subject.isAuthenticated()) {
response.sendRedirect(HttpUrlUtil.replaceRedirectUrl(serverContextPath + "/seckill/list"));
return;
}
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Object obj = authentication.getPrincipal();
String loginPath = serverContextPath + "/login";
if (obj != null) {
OAuth2User oAuth2User;
try {
oAuth2User = (OAuth2User) obj;
} catch (Exception e) {
log.warn(e.getMessage(), e);
response.sendRedirect(HttpUrlUtil.replaceRedirectUrl(loginPath));
return;
}
// 将已授权的第三方账户信息进行实体类转换
OAuth2UserInfo oAuth2UserInfo = OAuth2UserInfoConverUtil.convert(oAuth2User);
String registrationId = ((OAuth2AuthenticationToken) authentication).getAuthorizedClientRegistrationId();
if (StringUtils.isEmpty(oAuth2UserInfo.getAccount()) || !userAuthAccountService.ifThirdAccountExists(oAuth2UserInfo.getAccount(), registrationId)) {
response.sendRedirect(HttpUrlUtil.replaceRedirectUrl(loginPath));
return;
}
// 从系统中查找第三方账户对应的用户信息
UserBO user = userAuthAccountService.findByThirdAccount(oAuth2UserInfo.getAccount(), registrationId);
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(UserAccountUtil.generateUsername(user.getAccount(), registrationId), oAuth2UserInfo.getAccount());
try {
subject.login(usernamePasswordToken);
session.setAttribute("user", user);
} catch (Exception e) {
session.setAttribute("user", null);
log.warn(e.getMessage(), e);
response.sendRedirect(HttpUrlUtil.replaceRedirectUrl(loginPath));
return;
}
response.sendRedirect(HttpUrlUtil.replaceRedirectUrl(serverContextPath + "/seckill/list"));
return;
}
response.sendRedirect(HttpUrlUtil.replaceRedirectUrl(loginPath));
}
use of com.goodskill.api.bo.UserBO in project goodsKill by techa03.
the class AuthUserRealm method doGetAuthenticationInfo.
/**
* 提供账户信息返回认证信息
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
char[] charArray = (char[]) token.getCredentials();
String authAccount = String.valueOf(charArray);
String principal = (String) token.getPrincipal();
UserBO user = userAuthAccountService.findByThirdAccount(authAccount, principal.split("-")[1]);
if (user == null || (user.getAccount().equals(principal))) {
// 用户名不存在抛出异常
throw new UnknownAccountException();
}
String md5 = new SimpleHash("MD5", authAccount, ByteSource.Util.bytes(user.getAccount()), 2).toString();
SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(user.getAccount(), md5, ByteSource.Util.bytes(user.getAccount()), getName());
return authenticationInfo;
}
use of com.goodskill.api.bo.UserBO in project goodsKill by techa03.
the class UserAuthAccountServiceImpl method findByThirdAccount.
@Override
public UserBO findByThirdAccount(String account, String sourceType) {
UserBO userBo = new UserBO();
UserAuthAccount userAuthAccount = baseMapper.selectOne(new LambdaQueryWrapper<UserAuthAccount>().eq(UserAuthAccount::getThirdAccountName, account).eq(UserAuthAccount::getSourceType, sourceType));
User user = userService.getById(userAuthAccount.getUserId());
BeanUtils.copyProperties(user, userBo);
userBo.setThirdAccountId(userAuthAccount.getThirdAccountId());
userBo.setSourceType(userAuthAccount.getSourceType());
userBo.setThirdAccountName(userAuthAccount.getThirdAccountName());
return userBo;
}
Aggregations