Skip to content

Commit

Permalink
missing googleDrive/oauth2 changes on the gateway project
Browse files Browse the repository at this point in the history
  • Loading branch information
brunovg committed Sep 7, 2023
1 parent c647dd8 commit 473a83f
Showing 1 changed file with 21 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.assimbly.gateway.web.rest.gateway;

import org.apache.commons.lang3.StringUtils;
import org.assimbly.gateway.db.mongo.MongoDao;
import org.assimbly.util.exception.OAuth2TokenException;
import org.json.JSONObject;
Expand All @@ -14,6 +15,7 @@
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

/**
* REST controller for managing oauth2 (Open Authorization v2).
Expand All @@ -34,13 +36,19 @@ public class OAuth2Resource {
public static String OAUTH2_REFRESH_TOKEN_SUFFIX = "_refresh_token";
public static String OAUTH2_REFRESH_FLAG_SUFFIX = "_refresh_flag";
public static String OAUTH2_REDIRECT_URI_SUFFIX = "_redirect_uri";
public static String OAUTH2_CREDENTIALS_TYPE_URI_SUFFIX = "_credentials_type";
public static String OAUTH2_TOKEN_TENANT_VAR_SUFFIX = "_token_global_var";

private static String SERVICE_PARAM_EXPIRES_IN = "expires_in";
private static String SERVICE_PARAM_ACCESS_TOKEN = "access_token";
private static String SERVICE_PARAM_REFRESH_TOKEN = "refresh_token";
private static String SERVICE_PARAM_ERROR = "error";
private static String SERVICE_PARAM_ERROR_DESCRIPTION = "error_description";

private static final String GOOGLE_CLIENT_ID = System.getenv("GOOGLE_CLIENT_ID");
private static final String GOOGLE_CLIENT_SECRET = System.getenv("GOOGLE_CLIENT_SECRET");
private static final String CREDENTIALS_TYPE_CUSTOM = "custom";

/**
* GET /info : requests oauth2 access token info
* @return Map token information
Expand Down Expand Up @@ -71,20 +79,27 @@ public Map<String, String> tokenInfo(
String refreshTokenVarName = OAUTH2_PREFIX + id + OAUTH2_REFRESH_TOKEN_SUFFIX;
String refreshFlagVarName = OAUTH2_PREFIX + id + OAUTH2_REFRESH_FLAG_SUFFIX;
String redirectUriVarName = OAUTH2_PREFIX + id + OAUTH2_REDIRECT_URI_SUFFIX;
String credentialsTypeVarName = OAUTH2_PREFIX + id + OAUTH2_CREDENTIALS_TYPE_URI_SUFFIX;
String tokenTenantVarName = OAUTH2_PREFIX + id + OAUTH2_TOKEN_TENANT_VAR_SUFFIX;

// check if there's a tenant variable inside tenantVar, and return real value
String scope = MongoDao.getTenantVariableValue(scopeVarName, tenant, environment);
String clientId = MongoDao.getTenantVariableValue(clientIdVarName, tenant, environment);
String clientSecret = MongoDao.getTenantVariableValue(clientSecretVarName, tenant, environment);
String redirectUri = MongoDao.getTenantVariableValue(redirectUriVarName, tenant, environment);
String uriToken = MongoDao.getTenantVariableValue(uriTokenVarName, tenant, environment);
String credentialsType = MongoDao.getTenantVariableValue(credentialsTypeVarName, tenant, environment);
String tokenTenantVar = MongoDao.getTenantVariableValue(tokenTenantVarName, tenant, environment);

boolean customCredentialsType = StringUtils.isEmpty(credentialsType) ||
credentialsType.equals(CREDENTIALS_TYPE_CUSTOM);

// prepare data to send
String urlParameters = "client_id="+clientId+
String urlParameters = "client_id="+(customCredentialsType ? clientId : GOOGLE_CLIENT_ID)+
(scope!=null && !scope.trim().equals("") ? "&scope="+scope : "")+
"&redirect_uri="+redirectUri+
"&grant_type=authorization_code"+
"&client_secret="+clientSecret+
"&client_secret="+(customCredentialsType ? clientSecret : GOOGLE_CLIENT_SECRET)+
"&code="+code;

// call service
Expand All @@ -98,6 +113,7 @@ public Map<String, String> tokenInfo(
String accessToken = tokenInfoMap.get(SERVICE_PARAM_ACCESS_TOKEN);
if(accessToken!=null && !accessToken.isEmpty()) {
MongoDao.saveTenantVariable(accessTokenVarName, accessToken, tenant, environment);
MongoDao.saveTenantVariable(tokenTenantVar, accessToken, tenant, environment);
}
String refreshToken = tokenInfoMap.get(SERVICE_PARAM_REFRESH_TOKEN);
if(refreshToken!=null && !refreshToken.isEmpty()) {
Expand Down Expand Up @@ -143,8 +159,8 @@ private static void callService(Map<String, String> tokenInfoMap, String uriToke
stream = con.getErrorStream();
}

BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"), 8);
tokenInfoResp = reader.readLine();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
tokenInfoResp = reader.lines().collect(Collectors.joining(System.lineSeparator()));

if (tokenInfoResp != null) {
JSONObject tokenInfoJson = new JSONObject(tokenInfoResp);
Expand All @@ -166,7 +182,7 @@ private static void callService(Map<String, String> tokenInfoMap, String uriToke
// access_token
String accessToken = tokenInfoJson.getString(SERVICE_PARAM_ACCESS_TOKEN);
// refresh_token
String refreshToken = tokenInfoJson.getString(SERVICE_PARAM_REFRESH_TOKEN);
String refreshToken = tokenInfoJson.optString(SERVICE_PARAM_REFRESH_TOKEN);
// add token info into hashmap
tokenInfoMap.put(SERVICE_PARAM_EXPIRES_IN, String.valueOf(nowCal.getTimeInMillis()));
tokenInfoMap.put(SERVICE_PARAM_ACCESS_TOKEN, accessToken);
Expand Down

0 comments on commit 473a83f

Please sign in to comment.