diff --git a/eiam-portal/src/main/java/cn/topiam/employee/portal/service/impl/IdentityProviderAuthenticationServiceImpl.java b/eiam-portal/src/main/java/cn/topiam/employee/portal/service/impl/IdentityProviderAuthenticationServiceImpl.java index 30d55411..032400a9 100644 --- a/eiam-portal/src/main/java/cn/topiam/employee/portal/service/impl/IdentityProviderAuthenticationServiceImpl.java +++ b/eiam-portal/src/main/java/cn/topiam/employee/portal/service/impl/IdentityProviderAuthenticationServiceImpl.java @@ -89,7 +89,13 @@ public class IdentityProviderAuthenticationServiceImpl implements @Transactional(rollbackFor = Exception.class) public Boolean bindUserIdp(String accountId, IdentityProviderUserDetails identityProviderUserDetails) { - // 查询是否已绑定其他账号 + // 查询用户账号是否已经绑定 + Optional userIdpBindEntity = userIdpRepository.findByIdpIdAndUserId(identityProviderUserDetails.getProviderId(), accountId); + if (userIdpBindEntity.isPresent()) { + throw new UserBindIdentityProviderException("该账户已被其他三方账号绑定,解绑后可重新绑定", + HttpStatus.INTERNAL_SERVER_ERROR); + } + // 查询idp账号是否已绑定其他账号 Optional thirdPartyUserEntity = this.thirdPartyUserRepository .findByOpenIdAndIdpId(identityProviderUserDetails.getOpenId(), identityProviderUserDetails.getProviderId());