Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita4edf45

Browse files
author
Thomas
committed
add jwt
add maputils
1 parent8b8eeac commita4edf45

File tree

5 files changed

+91
-8
lines changed

5 files changed

+91
-8
lines changed

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/AuthToken.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class AuthToken implements Serializable {
1818
privateintexpireIn;
1919
privateStringrefreshToken;
2020
privateintrefreshTokenExpireIn;
21+
privateStringjwt;
2122

2223
privateStringopenId;
2324
privateStringcode;

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/request/oauth2/request/GenericAuthRequest.java‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
packageorg.lowcoder.api.authentication.request.oauth2.request;
22

3-
importlombok.Setter;
43
importorg.lowcoder.api.authentication.request.AuthException;
54
importorg.lowcoder.api.authentication.request.oauth2.GenericOAuthProviderSource;
65
importorg.lowcoder.api.authentication.request.oauth2.OAuth2RequestContext;
@@ -48,7 +47,7 @@ protected Mono<AuthToken> getAuthToken(OAuth2RequestContext context) {
4847
if (map.containsKey("error") ||map.containsKey("error_description")) {
4948
returnMono.error(newAuthException(JsonUtils.toJson(map)));
5049
}
51-
returnMono.just(mapToAuthToken(map));
50+
returnMono.just(mapToAuthToken(map,config.getSourceMappings()));
5251
});
5352
}
5453

@@ -70,7 +69,7 @@ protected Mono<AuthToken> refreshAuthToken(String refreshToken) {
7069
if (map.containsKey("error") ||map.containsKey("error_description")) {
7170
returnMono.error(newAuthException(JsonUtils.toJson(map)));
7271
}
73-
returnMono.just(mapToAuthToken(map));
72+
returnMono.just(mapToAuthToken(map,config.getSourceMappings()));
7473
});
7574
}
7675

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
packageorg.lowcoder.api.authentication.util;
2+
3+
importjava.util.Map;
4+
5+
publicclassAdvancedMapUtils {
6+
7+
/**
8+
* Retrieves a string value from a nested map structure using a key format that supports array indices and nested objects.
9+
*
10+
* @param map The map from which to retrieve the value.
11+
* @param key The key in the format "abc[0].def.hi".
12+
* @return The string value if found, otherwise null.
13+
*/
14+
publicstaticStringgetString(Map<String,Object>map,Stringkey) {
15+
String[]parts =key.split("\\.");
16+
Objectcurrent =map;
17+
18+
for (Stringpart :parts) {
19+
if (current ==null) {
20+
returnnull;
21+
}
22+
23+
if (part.contains("[")) {
24+
intstartIdx =part.indexOf('[');
25+
intendIdx =part.indexOf(']');
26+
StringarrayKey =part.substring(0,startIdx);
27+
intindex =Integer.parseInt(part.substring(startIdx +1,endIdx));
28+
29+
if (!(currentinstanceofMap)) {
30+
returnnull;
31+
}
32+
33+
current = ((Map<String,Object>)current).get(arrayKey);
34+
35+
if (currentinstanceofjava.util.List) {
36+
java.util.List<?>list = (java.util.List<?>)current;
37+
if (index <0 ||index >=list.size()) {
38+
returnnull;
39+
}
40+
current =list.get(index);
41+
}else {
42+
returnnull;
43+
}
44+
}else {
45+
if (!(currentinstanceofMap)) {
46+
returnnull;
47+
}
48+
current = ((Map<String,Object>)current).get(part);
49+
}
50+
}
51+
52+
returncurrentinstanceofString ? (String)current :null;
53+
}
54+
}

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/util/AuthenticationUtils.java‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,17 @@ public String getName() {
6464

6565
/**
6666
* Utility method to map from Map to AuthToken
67-
* @param map Object
67+
*
68+
* @param map Object
69+
* @param sourceMappings
6870
* @return AuthToken
6971
*/
70-
publicstaticAuthTokenmapToAuthToken(Map<String,Object>map) {
72+
publicstaticAuthTokenmapToAuthToken(Map<String,Object>map,HashMap<String,String>sourceMappings) {
7173
returnAuthToken.builder()
7274
.accessToken(MapUtils.getString(map,"access_token"))
7375
.expireIn(MapUtils.getIntValue(map,"expires_in"))
7476
.refreshToken(MapUtils.getString(map,"refresh_token"))
77+
.jwt(AdvancedMapUtils.getString(map,MapUtils.getString(sourceMappings,"jwt")))
7578
.build();
7679
}
7780

@@ -84,9 +87,9 @@ public static AuthToken mapToAuthToken(Map<String, Object> map) {
8487
*/
8588
publicstaticAuthUsermapToAuthUser(Map<String,Object>map,HashMap<String,String>sourceMappings) {
8689
returnAuthUser.builder()
87-
.uid(MapUtils.getString(map,MapUtils.getString(sourceMappings,"uid")))
88-
.username(MapUtils.getString(map,MapUtils.getString(sourceMappings,"username")))
89-
.avatar(MapUtils.getString(map,MapUtils.getString(sourceMappings,"avatar")))
90+
.uid(AdvancedMapUtils.getString(map,MapUtils.getString(sourceMappings,"uid")))
91+
.username(AdvancedMapUtils.getString(map,MapUtils.getString(sourceMappings,"username")))
92+
.avatar(AdvancedMapUtils.getString(map,MapUtils.getString(sourceMappings,"avatar")))
9093
.rawUserInfo(map)
9194
.build();
9295
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
packageorg.lowcoder.api.authentication;
2+
3+
importorg.junit.jupiter.api.Assertions;
4+
importorg.junit.jupiter.api.Test;
5+
importorg.lowcoder.api.authentication.util.AdvancedMapUtils;
6+
7+
importjava.util.Arrays;
8+
importjava.util.Collections;
9+
importjava.util.HashMap;
10+
importjava.util.Map;
11+
12+
publicclassAdvancedMapUtilsTest {
13+
@Test
14+
publicvoidtestGetStringFromMap()throwsException {
15+
Map<String,Object>nestedMap =newHashMap<>();
16+
nestedMap.put("abc",Arrays.asList(
17+
Collections.singletonMap("def",Collections.singletonMap("hi","hello world")),
18+
Collections.singletonMap("def",Collections.singletonMap("hi","another value"))
19+
));
20+
21+
Stringvalue0 =AdvancedMapUtils.getString(nestedMap,"abc[0].def.hi");
22+
Stringvalue1 =AdvancedMapUtils.getString(nestedMap,"abc[1].def.hi");
23+
Assertions.assertSame("hello world",value0);
24+
Assertions.assertSame("another value",value1);
25+
}
26+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp