| | |
| | | package com.iailab.sdk.auth.client; |
| | | |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.iailab.sdk.auth.client.dto.TokenDTO; |
| | | import com.iailab.sdk.auth.client.vo.AuthLoginReqVO; |
| | | import com.iailab.sdk.auth.config.AuthProperties; |
| | | import com.iailab.sdk.auth.constants.ErrorCodeConstants; |
| | | import org.springframework.core.ParameterizedTypeReference; |
| | | import org.springframework.http.*; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.*; |
| | | |
| | | import static com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; |
| | | import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static com.iailab.sdk.auth.enums.ErrorCodeConstants.*; |
| | | |
| | | /** |
| | | * @author Houzhongjian |
| | |
| | | new HttpEntity<>(headers), |
| | | new ParameterizedTypeReference<Map<String, Object>>() { |
| | | }); |
| | | Map<String, Object> authMap = exchange.getBody(); |
| | | if(AUTH_BAD_CREDENTIALS.getCode().equals(authMap.get("code"))) { |
| | | throw exception(AUTH_BAD_CREDENTIALS); |
| | | } else if(AUTH_LOGIN_BAD_CREDENTIALS.getCode().equals(authMap.get("code"))) { |
| | | throw exception(AUTH_LOGIN_BAD_CREDENTIALS); |
| | | } |
| | | Assert.isTrue(exchange.getStatusCode().is2xxSuccessful(), "响应必须是 200 成功"); |
| | | Map<String, Object> authMap = exchange.getBody(); |
| | | Object code = authMap.get("code"); |
| | | if(ErrorCodeConstants.AUTH_BAD_CREDENTIALS.getCode().equals(code)) { |
| | | throw exception(ErrorCodeConstants.AUTH_BAD_CREDENTIALS); |
| | | } else if(ErrorCodeConstants.AUTH_LOGIN_BAD_CREDENTIALS.getCode().equals(code)) { |
| | | throw exception(ErrorCodeConstants.AUTH_LOGIN_BAD_CREDENTIALS); |
| | | } else if(ErrorCodeConstants.OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH.getCode().equals(code)) { |
| | | throw exception(ErrorCodeConstants.OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH); |
| | | } else if(ErrorCodeConstants.OAUTH2_CLIENT_CLIENT_SECRET_ERROR.getCode().equals(code)) { |
| | | throw exception(ErrorCodeConstants.OAUTH2_CLIENT_CLIENT_SECRET_ERROR); |
| | | } else if(ErrorCodeConstants.OAUTH2_CLIENT_NOT_EXISTS.getCode().equals(code)) { |
| | | throw exception(ErrorCodeConstants.OAUTH2_CLIENT_NOT_EXISTS); |
| | | } else if(ErrorCodeConstants.OAUTH2_CLIENT_DISABLE.getCode().equals(code)) { |
| | | throw exception(ErrorCodeConstants.OAUTH2_CLIENT_DISABLE); |
| | | } |
| | | accessToken = authMap.get("access_token").toString(); |
| | | refreshToken = authMap.get("refresh_token").toString(); |
| | | expireTime = Long.valueOf(authMap.get("expires_time").toString()); |
| | |
| | | if (code == 401) { |
| | | authenticate(); |
| | | } else { |
| | | throw exception(AUTH_REFRESH_TOKEN_ERROR); |
| | | throw exception(ErrorCodeConstants.AUTH_REFRESH_TOKEN_ERROR); |
| | | } |
| | | } else { |
| | | accessToken = authMap.get("access_token").toString(); |
| | |
| | | System.out.println(response); |
| | | TokenDTO authTokenDTO = new TokenDTO(); |
| | | Map<String, Object> authMap = (Map<String, Object>)response.getBody(); |
| | | Map<String, Object> tokenData = (Map<String, Object>)authMap.get("data"); |
| | | authTokenDTO.setAccessToken(tokenData.get("accessToken").toString()); |
| | | authTokenDTO.setRefreshToken(tokenData.get("refreshToken").toString()); |
| | | authTokenDTO.setExpiresTime(Long.valueOf(tokenData.get("expiresTime").toString())); |
| | | authTokenDTO.setAccessToken(authMap.get("access_token").toString()); |
| | | authTokenDTO.setRefreshToken(authMap.get("refresh_token").toString()); |
| | | authTokenDTO.setExpiresTime(Long.valueOf(authMap.get("expires_time").toString())); |
| | | return authTokenDTO; |
| | | } |
| | | |