Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9a55cc3

Browse files
committed
feat: 1. rename AuthenticationUser to AuthUser; 2. support cookie forwards for rest api plugin
1 parent 0550195 commit 9a55cc3

File tree

23 files changed

+135
-57
lines changed

23 files changed

+135
-57
lines changed

server/api-service/build-ee.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
# Remove previous dist directory
4+
rm -rf dist/
5+
6+
# Build the code. $@ accepts all the parameters from the input command line and uses it in the maven build command
7+
mvn clean package install "$@" -DskipTests -f ./pom-ee.xml -P selfhost-openblocks
8+
9+
if [ $? -eq 0 ]
10+
then
11+
echo "mvn Successful"
12+
else
13+
echo "mvn Failed"
14+
exit 1
15+
fi

server/api-service/build-majiang.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
# Remove previous dist directory
4+
rm -rf dist/
5+
6+
# Build the code. $@ accepts all the parameters from the input command line and uses it in the maven build command
7+
mvn clean package install "$@" -DskipTests -f ./pom-ee.xml -P majiang
8+
9+
if [ $? -eq 0 ]
10+
then
11+
echo "mvn Successful"
12+
else
13+
echo "mvn Failed"
14+
exit 1
15+
fi
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
@Builder
2222
@NoArgsConstructor
2323
@AllArgsConstructor
24-
public class AuthenticationUser {
24+
public class AuthUser {
2525

2626
private String uid;
2727
private String username;

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/user/service/UserService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.springframework.http.codec.multipart.Part;
77
import org.springframework.web.server.ServerWebExchange;
88

9-
import com.openblocks.domain.user.model.AuthenticationUser;
9+
import com.openblocks.domain.user.model.AuthUser;
1010
import com.openblocks.domain.user.model.Connection;
1111
import com.openblocks.domain.user.model.User;
1212
import com.openblocks.domain.user.model.UserDetail;
@@ -33,9 +33,9 @@ public interface UserService {
3333

3434
Mono<Boolean> bindEmail(User user, String email);
3535

36-
Mono<User> findByAuthUser(AuthenticationUser authenticationUser);
36+
Mono<User> findByAuthUser(AuthUser authUser);
3737

38-
Mono<User> createNewUserByAuthUser(AuthenticationUser authenticationUser);
38+
Mono<User> createNewUserByAuthUser(AuthUser authUser);
3939

4040
Mono<Void> getUserAvatar(ServerWebExchange exchange, String userId);
4141

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/user/service/UserServiceImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import com.openblocks.domain.group.service.GroupService;
4040
import com.openblocks.domain.organization.model.OrgMember;
4141
import com.openblocks.domain.organization.service.OrgMemberService;
42-
import com.openblocks.domain.user.model.AuthenticationUser;
42+
import com.openblocks.domain.user.model.AuthUser;
4343
import com.openblocks.domain.user.model.Connection;
4444
import com.openblocks.domain.user.model.User;
4545
import com.openblocks.domain.user.model.User.TransformedUserInfo;
@@ -155,12 +155,12 @@ public Mono<User> update(String id, User updatedUser) {
155155
}
156156

157157
@Override
158-
public Mono<User> findByAuthUser(AuthenticationUser authenticationUser) {
159-
return findBySourceAndId(authenticationUser.getSource(), authenticationUser.getUid());
158+
public Mono<User> findByAuthUser(AuthUser authUser) {
159+
return findBySourceAndId(authUser.getSource(), authUser.getUid());
160160
}
161161

162162
@Override
163-
public Mono<User> createNewUserByAuthUser(AuthenticationUser authUser) {
163+
public Mono<User> createNewUserByAuthUser(AuthUser authUser) {
164164
User newUser = new User();
165165
newUser.setName(authUser.getUsername());
166166
newUser.setState(UserState.ACTIVATED);

server/api-service/openblocks-plugins/restApiPlugin/src/main/java/com/openblocks/plugin/restapi/RestApiExecutor.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import javax.annotation.Nullable;
6262

6363
import org.apache.commons.collections4.CollectionUtils;
64+
import org.apache.commons.lang3.ObjectUtils;
6465
import org.apache.commons.lang3.StringUtils;
6566
import org.apache.commons.lang3.tuple.Pair;
6667
import org.bson.internal.Base64;
@@ -88,6 +89,7 @@
8889
import com.openblocks.plugin.restapi.model.QueryBody;
8990
import com.openblocks.plugin.restapi.model.RestApiQueryConfig;
9091
import com.openblocks.plugin.restapi.model.RestApiQueryExecutionContext;
92+
import com.openblocks.sdk.config.CommonConfig;
9193
import com.openblocks.sdk.exception.PluginException;
9294
import com.openblocks.sdk.models.Property;
9395
import com.openblocks.sdk.models.QueryExecutionResult;
@@ -114,13 +116,18 @@ public class RestApiExecutor implements QueryExecutor<RestApiDatasourceConfig, O
114116
private static final String DEFAULT_REST_ERROR_CODE = "REST_API_EXECUTION_ERROR";
115117
private static final int MAX_REDIRECTS = 7;
116118
private final DataUtils dataUtils = DataUtils.getInstance();
119+
private final CommonConfig commonConfig;
117120

118121
// Set an unlimited buffer size, because query payload limit will be handled in webFilter
119122
private final ExchangeStrategies exchangeStrategies = ExchangeStrategies
120123
.builder()
121124
.codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(-1))
122125
.build();
123126

127+
public RestApiExecutor(CommonConfig commonConfig) {
128+
this.commonConfig = commonConfig;
129+
}
130+
124131
@Override
125132
public RestApiQueryExecutionContext buildQueryExecutionContext(RestApiDatasourceConfig datasourceConfig,
126133
Map<String, Object> queryConfigMap,
@@ -348,14 +355,19 @@ private Consumer<MultiValueMap<String, String>> injectCookies(RestApiQueryExecut
348355
}
349356

350357
if (request.isForwardAllCookies()) {
351-
requestCookies.forEach(
352-
(cookieName, httpCookies) -> currentCookies.addAll(cookieName, collectList(httpCookies, HttpCookie::getValue)));
358+
requestCookies.forEach((cookieName, httpCookies) -> {
359+
if (StringUtils.equals(cookieName, commonConfig.getCookieName())) {
360+
return;
361+
}
362+
currentCookies.addAll(cookieName, collectList(httpCookies, HttpCookie::getValue));
363+
});
353364
return;
354365
}
355366

356367
requestCookies.entrySet()
357368
.stream()
358369
.filter(it -> forwardCookies.contains(it.getKey()))
370+
.filter(it -> ObjectUtils.notEqual(it.getKey(), commonConfig.getCookieName()))
359371
.forEach(entry -> {
360372
String cookieName = entry.getKey();
361373
List<HttpCookie> httpCookies = entry.getValue();

server/api-service/openblocks-plugins/restApiPlugin/src/test/java/com/openblocks/plugin/restapi/RestApiEngineTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.fasterxml.jackson.databind.node.TextNode;
2121
import com.google.common.collect.ImmutableMap;
2222
import com.openblocks.plugin.restapi.model.RestApiQueryExecutionContext;
23+
import com.openblocks.sdk.config.CommonConfig;
2324
import com.openblocks.sdk.models.Property;
2425
import com.openblocks.sdk.models.QueryExecutionResult;
2526
import com.openblocks.sdk.plugin.common.RestApiUriBuilder;
@@ -33,7 +34,7 @@
3334

3435
public class RestApiEngineTest {
3536

36-
private final RestApiExecutor executor = new RestApiExecutor();
37+
private final RestApiExecutor executor = new RestApiExecutor(new CommonConfig());
3738
private static final RestApiConnector connector = new RestApiConnector();
3839

3940
private final QueryVisitorContext queryVisitorContext = new QueryVisitorContext("userId1",

server/api-service/openblocks-sdk/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,5 +159,9 @@
159159
<groupId>org.apache.httpcomponents</groupId>
160160
<artifactId>httpclient</artifactId>
161161
</dependency>
162+
<dependency>
163+
<groupId>org.springframework.boot</groupId>
164+
<artifactId>spring-boot-autoconfigure</artifactId>
165+
</dependency>
162166
</dependencies>
163167
</project>

server/api-service/openblocks-sdk/src/main/java/com/openblocks/sdk/auth/AbstractAuthConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ public void setSource(String source) {
4848
this.source = source;
4949
}
5050

51+
/**
52+
* @see com.openblocks.sdk.auth.constants.AuthTypeConstants
53+
*/
5154
public abstract String getAuthType();
5255

5356
public final boolean isEnable() {

server/api-service/openblocks-sdk/src/main/java/com/openblocks/sdk/exception/BizError.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public enum BizError {
9898
LOGIN_EXPIRED(401, 5616),
9999
DISABLE_AUTH_CONFIG_FORBIDDEN(403, 5617),
100100
USER_NOT_EXIST(400, 5618),
101+
JWT_NOT_FIND(400, 5619),
101102

102103

103104
// asset related, code range 5700 - 5799

server/api-service/openblocks-sdk/src/main/java/com/openblocks/sdk/util/CookieHelper.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import java.util.Optional;
88

9+
import javax.annotation.Nullable;
10+
911
import org.springframework.beans.factory.annotation.Autowired;
1012
import org.springframework.http.HttpCookie;
1113
import org.springframework.http.ResponseCookie;
@@ -48,13 +50,21 @@ public void saveCookie(String token, ServerWebExchange exchange) {
4850
}
4951

5052
public String getCookieToken(ServerWebExchange exchange) {
53+
return getCookieValue(exchange, getCookieName(), "");
54+
}
55+
56+
@Nullable
57+
public String getJWT(ServerWebExchange exchange) {
58+
return getCookieValue(exchange, "JWT", null);
59+
}
60+
61+
public String getCookieValue(ServerWebExchange exchange, String cookieName, String defaultValue) {
5162
MultiValueMap<String, HttpCookie> cookies = exchange.getRequest().getCookies();
52-
return ofNullable(cookies.getFirst(getCookieName()))
63+
return ofNullable(cookies.getFirst(cookieName))
5364
.map(HttpCookie::getValue)
54-
.orElse("");
65+
.orElse(defaultValue);
5566
}
5667

57-
5868
public static String generateCookieToken() {
5969
return generate();
6070
}

server/api-service/openblocks-server/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,13 @@
161161
<groupId>javax.servlet</groupId>
162162
<artifactId>javax.servlet-api</artifactId>
163163
</dependency>
164+
165+
<dependency>
166+
<groupId>com.auth0</groupId>
167+
<artifactId>java-jwt</artifactId>
168+
<version>4.3.0</version>
169+
</dependency>
170+
164171
<dependency>
165172
<groupId>it.ozimov</groupId>
166173
<artifactId>embedded-redis</artifactId>

server/api-service/openblocks-server/src/main/java/com/openblocks/api/authentication/dto/AuthConfigRequest.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import org.apache.commons.collections4.MapUtils;
1010
import org.apache.commons.lang3.ObjectUtils;
11+
import org.apache.commons.lang3.StringUtils;
1112

1213
public class AuthConfigRequest extends HashMap<String, Object> {
1314

@@ -37,14 +38,20 @@ public String getClientSecret() {
3738
return getString("clientSecret");
3839
}
3940

40-
@Nullable
41-
public String getSource() {
42-
return getString("source");
41+
public String getSource(String defaultValue) {
42+
String source = getString("source");
43+
if (StringUtils.isNotBlank(source)) {
44+
return source;
45+
}
46+
return defaultValue;
4347
}
4448

45-
@Nullable
46-
public String getSourceName() {
47-
return getString("sourceName");
49+
public String getSourceName(String defaultValue) {
50+
String sourceName = getString("sourceName");
51+
if (StringUtils.isNotBlank(sourceName)) {
52+
return sourceName;
53+
}
54+
return defaultValue;
4855
}
4956

5057
public String getString(String key) {

server/api-service/openblocks-server/src/main/java/com/openblocks/api/authentication/request/AuthRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.openblocks.api.authentication.request;
22

33
import com.openblocks.domain.authentication.context.AuthRequestContext;
4-
import com.openblocks.domain.user.model.AuthenticationUser;
4+
import com.openblocks.domain.user.model.AuthUser;
55
import com.openblocks.domain.user.model.ConnectionAuthToken;
66

77
import reactor.core.publisher.Mono;
@@ -11,7 +11,7 @@
1111
*/
1212
public interface AuthRequest {
1313

14-
Mono<AuthenticationUser> auth(AuthRequestContext authRequestContext);
14+
Mono<AuthUser> auth(AuthRequestContext authRequestContext);
1515

1616
default Mono<ConnectionAuthToken> refresh(ConnectionAuthToken old) {
1717
return Mono.error(new UnsupportedOperationException());

server/api-service/openblocks-server/src/main/java/com/openblocks/api/authentication/request/form/FormAuthRequest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.openblocks.domain.authentication.context.AuthRequestContext;
1010
import com.openblocks.domain.authentication.context.FormAuthRequestContext;
1111
import com.openblocks.domain.encryption.EncryptionService;
12-
import com.openblocks.domain.user.model.AuthenticationUser;
12+
import com.openblocks.domain.user.model.AuthUser;
1313
import com.openblocks.domain.user.service.UserService;
1414
import com.openblocks.sdk.auth.AbstractAuthConfig;
1515
import com.openblocks.sdk.auth.EmailAuthConfig;
@@ -28,7 +28,7 @@ public class FormAuthRequest implements AuthRequest {
2828
private EncryptionService encryptionService;
2929

3030
@Override
31-
public Mono<AuthenticationUser> auth(AuthRequestContext authRequestContext) {
31+
public Mono<AuthUser> auth(AuthRequestContext authRequestContext) {
3232
FormAuthRequestContext context = (FormAuthRequestContext) authRequestContext;
3333

3434
return Mono.defer(() -> {
@@ -57,6 +57,6 @@ public Mono<AuthenticationUser> auth(AuthRequestContext authRequestContext) {
5757
return Mono.empty();
5858
});
5959
})
60-
.thenReturn(AuthenticationUser.builder().uid(context.getLoginId()).username(context.getLoginId()).build());
60+
.thenReturn(AuthUser.builder().uid(context.getLoginId()).username(context.getLoginId()).build());
6161
}
6262
}

server/api-service/openblocks-server/src/main/java/com/openblocks/api/authentication/request/oauth2/request/AbstractOauth2Request.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.openblocks.api.authentication.util.AuthenticationUtils;
1111
import com.openblocks.domain.authentication.context.AuthRequestContext;
1212
import com.openblocks.domain.user.model.AuthToken;
13-
import com.openblocks.domain.user.model.AuthenticationUser;
13+
import com.openblocks.domain.user.model.AuthUser;
1414
import com.openblocks.domain.user.model.ConnectionAuthToken;
1515
import com.openblocks.sdk.auth.Oauth2SimpleAuthConfig;
1616

@@ -30,15 +30,15 @@ public AbstractOauth2Request(T config, Oauth2Source source, OAuth2RequestContext
3030
this.context = context;
3131
}
3232

33-
public Mono<AuthenticationUser> auth(AuthRequestContext authRequestContext) {
33+
public Mono<AuthUser> auth(AuthRequestContext authRequestContext) {
3434
return Mono.defer(() -> {
3535
try {
3636
OAuth2RequestContext context = (OAuth2RequestContext) authRequestContext;
3737

38-
AuthToken token = this.getAccessToken(context);
39-
AuthenticationUser authenticationUser = this.getUserInfo(token);
40-
authenticationUser.setAuthToken(token);
41-
return Mono.just(authenticationUser);
38+
AuthToken token = this.getAuthToken(context);
39+
AuthUser authUser = this.getAuthUser(token);
40+
authUser.setAuthToken(token);
41+
return Mono.just(authUser);
4242
} catch (Exception e) {
4343
log.error("get oidc failed: {}", toJson(authRequestContext), e);
4444
return deferredError(FAIL_TO_GET_OIDC_INFO, "FAIL_TO_GET_OIDC_INFO", e.getMessage());
@@ -47,9 +47,9 @@ public Mono<AuthenticationUser> auth(AuthRequestContext authRequestContext) {
4747
.subscribeOn(AuthenticationUtils.AUTH_REQUEST_THREAD_POOL);
4848
}
4949

50-
protected abstract AuthToken getAccessToken(OAuth2RequestContext context);
50+
protected abstract AuthToken getAuthToken(OAuth2RequestContext context);
5151

52-
protected abstract AuthenticationUser getUserInfo(AuthToken authToken);
52+
protected abstract AuthUser getAuthUser(AuthToken authToken);
5353

5454
public Mono<ConnectionAuthToken> refresh(ConnectionAuthToken old) {
5555
return Mono.fromSupplier(() -> {

server/api-service/openblocks-server/src/main/java/com/openblocks/api/authentication/request/oauth2/request/GithubRequest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import com.openblocks.sdk.util.HttpUtils;
1717
import com.openblocks.api.authentication.request.AuthException;
1818
import com.openblocks.domain.user.model.AuthToken;
19-
import com.openblocks.domain.user.model.AuthenticationUser;
19+
import com.openblocks.domain.user.model.AuthUser;
2020
import com.openblocks.sdk.auth.Oauth2SimpleAuthConfig;
2121

2222
public class GithubRequest extends AbstractOauth2Request<Oauth2SimpleAuthConfig> {
@@ -26,7 +26,7 @@ public GithubRequest(Oauth2SimpleAuthConfig config, OAuth2RequestContext context
2626
}
2727

2828
@Override
29-
protected AuthToken getAccessToken(OAuth2RequestContext context) {
29+
protected AuthToken getAuthToken(OAuth2RequestContext context) {
3030
String result;
3131

3232
try {
@@ -66,14 +66,14 @@ private Map<String, String> parseStringToMap(String s) {
6666
}
6767

6868
@Override
69-
protected AuthenticationUser getUserInfo(AuthToken authToken) {
69+
protected AuthUser getAuthUser(AuthToken authToken) {
7070
String response = HttpUtils.get(source.userInfo(), null, Map.of("Authorization", "token " + authToken.getAccessToken()));
7171

7272
JSONObject object = new JSONObject(response);
7373

7474
this.checkResponse(object);
7575

76-
return AuthenticationUser.builder()
76+
return AuthUser.builder()
7777
.uid(object.get("id").toString())
7878
.username(object.getString("login"))
7979
.avatar(object.getString("avatar_url"))

0 commit comments

Comments
 (0)