Skip to content

Commit f1ac044

Browse files
committed
WIP SB 4.0.0
1 parent 707bb7e commit f1ac044

File tree

11 files changed

+33
-24
lines changed

11 files changed

+33
-24
lines changed

src/inttest/java/com/faforever/api/clan/ClanControllerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public void createClanWithoutAuth() throws Exception {
106106
mockMvc.perform(
107107
post("/clans/create")
108108
.params(params))
109-
.andExpect(status().isForbidden());
109+
.andExpect(status().isUnauthorized());
110110
}
111111

112112
@Test

src/inttest/java/com/faforever/api/moderationreport/ModerationReportTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void anonymousUserCannotCreateValidModerationReport() throws Exception {
6363
post("/data/moderationReport")
6464
.header(HttpHeaders.CONTENT_TYPE, JSON_API_MEDIA_TYPE)
6565
.content(createJsonApiContent(validModerationReport)))
66-
.andExpect(status().isForbidden());
66+
.andExpect(status().isUnauthorized());
6767
}
6868

6969
@Test

src/inttest/java/com/faforever/api/user/MeControllerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class MeControllerTest extends AbstractIntegrationTest {
1818
@Test
1919
public void withoutTokenUnauthorized() throws Exception {
2020
mockMvc.perform(get("/me"))
21-
.andExpect(status().isForbidden());
21+
.andExpect(status().isUnauthorized());
2222
}
2323

2424
@Test

src/inttest/java/com/faforever/api/user/UsersControllerTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ public void resetPasswordWithEmail() throws Exception {
232232
params.add("identifier", "[email protected]");
233233

234234
mockMvc.perform(
235-
post("/users/requestPasswordReset")
235+
post("/users/requestPasswordReset")
236236
.params(params))
237237
.andExpect(status().isOk());
238238

@@ -256,13 +256,14 @@ public void performPasswordReset() throws Exception {
256256
public void buildSteamLinkUrlUnauthorized() throws Exception {
257257
mockMvc.perform(
258258
post("/users/buildSteamLinkUrl?callbackUrl=foo"))
259-
.andExpect(status().isForbidden());
259+
.andExpect(status().isUnauthorized());
260260
}
261261

262262
@Test
263263
public void buildSteamLinkUrlWithWrongScope() throws Exception {
264264
mockMvc.perform(
265-
post("/users/buildSteamLinkUrl?callbackUrl=foo"))
265+
post("/users/buildSteamLinkUrl?callbackUrl=foo")
266+
.with(getOAuthTokenForUserId(USERID_MODERATOR, OAuthScope._LOBBY)))
266267
.andExpect(status().isForbidden());
267268
}
268269

@@ -350,7 +351,7 @@ public void changeUsernameUnauthorized() throws Exception {
350351
mockMvc.perform(
351352
post("/users/changeUsername")
352353
.params(params))
353-
.andExpect(status().isForbidden());
354+
.andExpect(status().isUnauthorized());
354355
}
355356

356357
@Test

src/inttest/resources/config/application.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ spring:
1919
ddl-auto: ${DATABASE_DDL_AUTO:none}
2020
naming:
2121
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
22-
properties:
23-
hibernate:
24-
current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext
2522
h2:
2623
console:
2724
enabled: true
@@ -110,3 +107,4 @@ logging:
110107
level:
111108
org.hibernate.SQL: DEBUG
112109
org.hibernate.engine.spi.EntityEntry: TRACE
110+
org.springframework.security: DEBUG

src/main/java/com/faforever/api/config/elide/ElideConfig.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ public class ElideConfig {
3434

3535
public static final String DEFAULT_CACHE_NAME = "Elide.defaultCache";
3636

37-
@Bean
38-
ObjectMapper objectMapper() {
39-
return new ObjectMapper();
40-
}
41-
4237
@Bean
4338
MultiplexManager multiplexDataStore(
4439
DataStore fafDataStore,

src/main/java/com/faforever/api/config/security/WebSecurityConfig.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,17 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
5050
"/favicon.ico",
5151
"/robots.txt"
5252
).permitAll();
53+
authorizeConfig.requestMatchers(
54+
"/exe/upload",
55+
"/game/*/replay",
56+
"/users/register",
57+
"/users/activate",
58+
"/users/requestPasswordReset",
59+
"/users/requestPasswordReset",
60+
"/users/performPasswordReset",
61+
"/users/linkToSteam/**"
62+
).permitAll();
63+
authorizeConfig.anyRequest().authenticated();
5364
});
5465
// @formatter:on
5566
return http.build();
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
package com.faforever.api.security.method;
22

33
import org.aopalliance.intercept.MethodInvocation;
4+
import org.jspecify.annotations.Nullable;
5+
import org.springframework.expression.EvaluationContext;
6+
import org.springframework.expression.spel.support.StandardEvaluationContext;
47
import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler;
5-
import org.springframework.security.access.expression.method.MethodSecurityExpressionOperations;
68
import org.springframework.security.authentication.AuthenticationTrustResolver;
79
import org.springframework.security.authentication.AuthenticationTrustResolverImpl;
810
import org.springframework.security.core.Authentication;
911

12+
import java.util.function.Supplier;
13+
1014
/**
1115
* Wraps the CustomMethodSecurityExpressionRoot into an expression handler
1216
*/
1317
public class CustomMethodSecurityExpressionHandler extends DefaultMethodSecurityExpressionHandler {
1418
private final AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
1519

1620
@Override
17-
protected MethodSecurityExpressionOperations createSecurityExpressionRoot(Authentication authentication, MethodInvocation invocation) {
21+
public EvaluationContext createEvaluationContext(Supplier<? extends @Nullable Authentication> authentication, MethodInvocation mi) {
22+
StandardEvaluationContext context = (StandardEvaluationContext) super.createEvaluationContext(authentication, mi);
1823
var root = new CustomMethodSecurityExpressionRoot(authentication);
1924

2025
root.setPermissionEvaluator(getPermissionEvaluator());
2126
root.setTrustResolver(trustResolver);
2227
root.setRoleHierarchy(getRoleHierarchy());
23-
24-
return root;
28+
context.setRootObject(root);
29+
return context;
2530
}
2631
}

src/main/java/com/faforever/api/security/method/CustomMethodSecurityExpressionRoot.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.faforever.api.security.method;
22

3+
import org.jspecify.annotations.Nullable;
34
import org.springframework.security.access.expression.SecurityExpressionRoot;
45
import org.springframework.security.access.expression.method.MethodSecurityExpressionOperations;
56
import org.springframework.security.core.Authentication;
67

8+
import java.util.function.Supplier;
9+
710
import static com.faforever.api.security.FafScope.SCOPE_PREFIX;
811

912
/**
@@ -14,7 +17,7 @@ public class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot i
1417
private Object filterObject;
1518
private Object returnObject;
1619

17-
public CustomMethodSecurityExpressionRoot(Authentication authentication) {
20+
public CustomMethodSecurityExpressionRoot(Supplier<? extends @Nullable Authentication> authentication) {
1821
super(authentication);
1922
}
2023

src/main/resources/config/application.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ spring:
128128
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
129129
properties:
130130
hibernate:
131-
current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext
132131
dialect: org.hibernate.dialect.MariaDBDialect
133132
jackson:
134133
serialization:

0 commit comments

Comments
 (0)