Skip to content

Commit

Permalink
Merge pull request #4 from gofynd/fyndx1
Browse files Browse the repository at this point in the history
Renew token + Exception logs
  • Loading branch information
aparnab93 authored Mar 1, 2022
2 parents 1e36e69 + d4f52f5 commit fdb441c
Show file tree
Hide file tree
Showing 27 changed files with 395 additions and 314 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<json.version>20211205</json.version>
<jedis.version>2.8.1</jedis.version>
<commons.version>1.5.0</commons.version>
<fdk-client.version>v0.0.16-RELEASE</fdk-client.version>
<fdk-client.version>v0.0.16-SNAPSHOT</fdk-client.version>
<logging.version>3.9.0</logging.version>
<okhttp.version>3.0.0-RC1</okhttp.version>
</properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,14 @@
import com.fynd.extension.middleware.PlatformInterceptor;
import com.fynd.extension.middleware.SessionInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class BaseMVCConfigurer implements WebMvcConfigurer {


@Autowired
private SessionInterceptor sessionInterceptor;

Expand All @@ -26,8 +21,6 @@ public class BaseMVCConfigurer implements WebMvcConfigurer {
@Autowired
private ApplicationInterceptor applicationInterceptor;



@Override
public void addInterceptors(InterceptorRegistry registry) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.sdk.common.AccessToken;
import com.sdk.platform.PlatformClient;
import com.sdk.platform.PlatformConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
Expand All @@ -32,8 +33,11 @@
import java.util.Objects;
import java.util.UUID;

import static com.fynd.extension.utils.ExtensionContext.Keys.*;

@RestController
@RequestMapping("/fp")
@Slf4j
public class ExtensionController {

@Autowired
Expand Down Expand Up @@ -72,10 +76,8 @@ public ResponseEntity<?> install(@RequestParam(value = "company_id") String comp
session = new Session(sid, true);
}
}

Date sessionExpires = Date.from(Instant.now()
.plusMillis(900000));

.plusMillis(Fields.MINUTES_LIMIT));
if (session.isNew()) {
session.setCompany_id(companyId);
session.setScope(Arrays.asList(ext.getExtensionProperties()
Expand All @@ -96,8 +98,8 @@ public ResponseEntity<?> install(@RequestParam(value = "company_id") String comp
}
}

ExtensionContext.set("fdk-session", session);
ExtensionContext.set("extension", ext);
ExtensionContext.set(FDK_SESSION, session);
ExtensionContext.set(EXTENSION, ext);
String compCookieName = FdkConstants.SESSION_COOKIE_NAME + "_" + companyId;
ResponseCookie resCookie = ResponseCookie.from(compCookieName, session.getId())
.httpOnly(true)
Expand All @@ -124,11 +126,12 @@ public ResponseEntity<?> install(@RequestParam(value = "company_id") String comp
ext.isOnlineAccessMode());
sessionStorage.saveSession(session);
return ResponseEntity.status(HttpStatus.PERMANENT_REDIRECT)
.header("x-company-id", companyId)
.header(Fields.X_COMPANY_ID, companyId)
.header(HttpHeaders.LOCATION, redirectUrl)
.header(HttpHeaders.SET_COOKIE, resCookie.toString())
.build();
} catch (Exception error) {
log.error("Exception in install call ", error);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new Response(false, error.getMessage()));
}
Expand All @@ -144,11 +147,11 @@ public ResponseEntity<?> authorize(@RequestParam(value = "company_id") String co
HttpServletResponse response) {

try {
if (!ExtensionContext.isPresent("fdk-session")) {
if (!ExtensionContext.isPresent(FDK_SESSION)) {
throw new FdkSessionNotFound(
"Can not complete oauth process as session not found");
}
Session fdkSession = ExtensionContext.get("fdk-session", Session.class);
Session fdkSession = ExtensionContext.get(FDK_SESSION, Session.class);
if (!fdkSession.getState()
.equalsIgnoreCase(state)) {
throw new FdkInvalidOAuth("Invalid oauth call");
Expand All @@ -170,10 +173,9 @@ public ResponseEntity<?> authorize(@RequestParam(value = "company_id") String co
} else {
fdkSession.setExpires(null);
}

fdkSession.setAccess_token(token.getToken());
fdkSession.setExpires_in(token.getExpiresIn());
fdkSession.setAccess_token_validity("" + sessionExpires.getTime());
fdkSession.setAccess_token_validity(sessionExpires.getTime());
//fdkSession.setCurrent_user(token.current_user);
fdkSession.setRefresh_token(token.getRefreshToken());
sessionStorage.saveSession(fdkSession);
Expand All @@ -189,11 +191,13 @@ public ResponseEntity<?> authorize(@RequestParam(value = "company_id") String co
fdkSession.getExpires_in())))
.build();

ExtensionContext.set("fdk-session", fdkSession);
ExtensionContext.set("extension", ext);
ExtensionContext.set("company_id", companyId);
ExtensionContext.set("application_id", applicationId);
ExtensionContext.set(FDK_SESSION, fdkSession);
ExtensionContext.set(EXTENSION, ext);
ExtensionContext.set(COMPANY_ID, companyId);
ExtensionContext.set(APPLICATION_ID, applicationId);
if (Objects.nonNull(ext.getWebhookService()) &&
Objects.nonNull(ext.getExtensionProperties()
.getWebhook()) &&
Objects.nonNull(ext.getExtensionProperties()
.getWebhook()
.getSubscribe_on_install()) &&
Expand All @@ -211,11 +215,12 @@ public ResponseEntity<?> authorize(@RequestParam(value = "company_id") String co
.apply(ExtensionContext.get());

return ResponseEntity.status(HttpStatus.PERMANENT_REDIRECT)
.header("x-company-id", fdkSession.getCompany_id())
.header(Fields.X_COMPANY_ID, fdkSession.getCompany_id())
.header(HttpHeaders.LOCATION, redirectUrl)
.header(HttpHeaders.SET_COOKIE, resCookie.toString())
.build();
} catch (Exception error) {
log.error("Exception in auth call ", error);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new Response(false, error.getMessage()));
}
Expand All @@ -238,18 +243,24 @@ public ResponseEntity<?> uninstall(@RequestBody Client client,
rawToken.setToken(fdkSession.getAccess_token());
rawToken.setRefreshToken(fdkSession.getRefresh_token());
PlatformClient platformClient = ext.getPlatformClient(client.getCompany_id(), rawToken);
ExtensionContext.set("platform-client", platformClient);
ExtensionContext.set(PLATFORM_CLIENT, platformClient);
sessionStorage.deleteSession(sid);
}
ExtensionContext.set("extension", ext);
ExtensionContext.set(EXTENSION, ext);
ext.getCallbacks()
.getUninstall()
.apply(ExtensionContext.get());
return ResponseEntity.status(HttpStatus.OK)
.body(new Response(true));
} catch (Exception error) {
log.error("Exception in uninstall call ", error);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new Response(false, error.getMessage()));
}
}

public interface Fields {
int MINUTES_LIMIT = 900000;
String X_COMPANY_ID = "x-company-id";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@

import org.springframework.lang.NonNull;

public class FdkClusterMetaMissing extends RuntimeException{
public class FdkClusterMetaMissing extends RuntimeException {

public FdkClusterMetaMissing(@NonNull String message)
{
public FdkClusterMetaMissing(@NonNull String message) {
super(message);

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@

import org.springframework.lang.NonNull;

public class FdkInvalidExtensionJson extends RuntimeException{
public class FdkInvalidExtensionJson extends RuntimeException {

public FdkInvalidExtensionJson(@NonNull String message)
{
public FdkInvalidExtensionJson(@NonNull String message) {
super(message);

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import org.springframework.lang.NonNull;

public class FdkInvalidHMacError extends RuntimeException{
public FdkInvalidHMacError(@NonNull String message)
{
public class FdkInvalidHMacError extends RuntimeException {
public FdkInvalidHMacError(@NonNull String message) {
super(message);
}
}
7 changes: 2 additions & 5 deletions src/main/java/com/fynd/extension/error/FdkInvalidOAuth.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@

import org.springframework.lang.NonNull;

public class FdkInvalidOAuth extends RuntimeException{
public class FdkInvalidOAuth extends RuntimeException {

public FdkInvalidOAuth(@NonNull String message)
{
public FdkInvalidOAuth(@NonNull String message) {
super(message);

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@

import org.springframework.lang.NonNull;

public class FdkInvalidWebhookConfig extends RuntimeException{
public class FdkInvalidWebhookConfig extends RuntimeException {

public FdkInvalidWebhookConfig(@NonNull String message)
{
public FdkInvalidWebhookConfig(@NonNull String message) {
super(message);

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@

import org.springframework.lang.NonNull;

public class FdkSessionNotFound extends RuntimeException{
public class FdkSessionNotFound extends RuntimeException {

public FdkSessionNotFound(@NonNull String message)
{
public FdkSessionNotFound(@NonNull String message) {
super(message);

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import org.springframework.lang.NonNull;

public class FdkWebhookHandlerNotFound extends RuntimeException{
public FdkWebhookHandlerNotFound(@NonNull String message)
{
public class FdkWebhookHandlerNotFound extends RuntimeException {
public FdkWebhookHandlerNotFound(@NonNull String message) {
super(message);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import org.springframework.lang.NonNull;

public class FdkWebhookProcessError extends RuntimeException{
public FdkWebhookProcessError(@NonNull String message)
{
public class FdkWebhookProcessError extends RuntimeException {
public FdkWebhookProcessError(@NonNull String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import org.springframework.lang.NonNull;

public class FdkWebhookRegistrationError extends RuntimeException{
public FdkWebhookRegistrationError(@NonNull String message)
{
public class FdkWebhookRegistrationError extends RuntimeException {
public FdkWebhookRegistrationError(@NonNull String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fynd.extension.model.Application;
import com.fynd.extension.model.User;
import com.fynd.extension.model.Extension;
import com.fynd.extension.model.Response;
import com.fynd.extension.model.User;
import com.fynd.extension.utils.ExtensionContext;
import com.sdk.application.ApplicationClient;
import com.sdk.application.ApplicationConfig;
Expand All @@ -18,11 +17,10 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class ApplicationInterceptor implements HandlerInterceptor {
import static com.fynd.extension.utils.ExtensionContext.Keys.*;

@Autowired
Extension extension;
@Component
public class ApplicationInterceptor implements HandlerInterceptor {

@Autowired
ObjectMapper objectMapper;
Expand All @@ -31,24 +29,29 @@ public class ApplicationInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {

try {
if(!StringUtils.isEmpty(request.getHeader("x-user-data"))) {
User user = objectMapper.readValue(request.getHeader("x-user-data"), User.class);
ExtensionContext.set("x-user-data", user );
if (!StringUtils.isEmpty(request.getHeader(Fields.X_USER_DATA))) {
User user = objectMapper.readValue(request.getHeader(Fields.X_USER_DATA), User.class);
ExtensionContext.set(Fields.X_USER_DATA, user);
// req.user.user_id = req.user._id;
}
if(!StringUtils.isEmpty(request.getHeader("x-application-data")))
{
Application application = objectMapper.readValue(request.getHeader("x-application-data"), Application.class);
ExtensionContext.set("application",application) ;
ApplicationConfig applicationConfig = new ApplicationConfig(application.getID(), application.getToken());
ExtensionContext.set("application-config",applicationConfig);
ExtensionContext.set("application-client",new ApplicationClient(applicationConfig));
if (!StringUtils.isEmpty(request.getHeader(Fields.X_APPLICATION_DATA))) {
Application application = objectMapper.readValue(request.getHeader(Fields.X_APPLICATION_DATA),
Application.class);
ExtensionContext.set(APPLICATION, application);
ApplicationConfig applicationConfig = new ApplicationConfig(application.getID(),
application.getToken());
ExtensionContext.set(APPLICATION_CONFIG, applicationConfig);
ExtensionContext.set(APPLICATION_CLIENT, new ApplicationClient(applicationConfig));
}
return true;
} catch (Exception error) {
throw new ResponseStatusException(
HttpStatus.INTERNAL_SERVER_ERROR,
new Response(false, error.getMessage()).toString());
throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR,
new Response(false, error.getMessage()).toString());
}
}

interface Fields {
String X_USER_DATA = "x-user-data";
String X_APPLICATION_DATA = "x-application-data";
}
}
Loading

0 comments on commit fdb441c

Please sign in to comment.