Skip to content

Commit f1f2f7c

Browse files
committed
Merge branch 'main' into feature/add-altia-logos
# Conflicts: # CHANGELOG.md # build.gradle # src/main/resources/templates/login-en.html
2 parents c68fa7f + 0dcceed commit f1f2f7c

34 files changed

+2510
-84
lines changed

CHANGELOG.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,29 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7-
## [v2.0.1](https://github.com/in2workspace/in2-verifier-api/releases/tag/v2.0.1)
7+
## [v2.0.5](https://github.com/in2workspace/in2-verifier-api/releases/tag/v2.0.5)
88
### Added
99
- Add Altia logo and favicon.
1010

1111
### Changed
1212
- Make login QR padding white.
1313

14+
## [v2.0.4](https://github.com/in2workspace/in2-verifier-api/releases/tag/v2.0.4)
15+
### Removed
16+
- Remove hardcoded visible "DOME" references in UI.
17+
18+
## [v2.0.3](https://github.com/in2workspace/in2-verifier-api/releases/tag/v2.0.3)
19+
### Changed
20+
- For frontend pages, set language from Accept-Language header before using default language.
21+
22+
## [v2.0.2](https://github.com/in2workspace/in2-verifier-api/releases/tag/v2.0.2)
23+
### Added
24+
- Get default language from configuration, use it to translate HTML templates.
25+
26+
## [v2.0.1](https://github.com/in2workspace/in2-verifier-api/releases/tag/v2.0.1)
27+
- ### Added
28+
- Implement Authorization Code Flow with PKCE
29+
1430
## [v2.0.0](https://github.com/in2workspace/in2-verifier-api/releases/tag/v2.0.0)
1531
- New major version to align with the new major version of EUDIStack project.
1632

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ plugins {
1010
}
1111

1212
group = 'es.in2'
13-
version = '2.0.1'
13+
version = '2.0.5'
1414

1515
java {
1616
toolchain {

src/main/java/es/in2/vcverifier/config/FrontendConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public String getFaviconSrc() {
4646
return defaultIfBlank(properties.faviconSrc(), "dome_logo_favicon.png");
4747
}
4848

49+
public String getDefaultLang() { return defaultIfBlank(properties.defaultLang(), "en"); }
50+
4951
private String defaultIfBlank(String value, String defaultValue) {
5052
return (value == null || value.trim().isEmpty()) ? defaultValue : value;
5153
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package es.in2.vcverifier.config;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
6+
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
7+
8+
import java.util.List;
9+
import java.util.Locale;
10+
import org.springframework.web.servlet.LocaleResolver;
11+
12+
@Configuration
13+
public class I18nConfig implements WebMvcConfigurer {
14+
@Bean
15+
public LocaleResolver localeResolver(FrontendConfig frontendConfig) {
16+
AcceptHeaderLocaleResolver r = new AcceptHeaderLocaleResolver();
17+
r.setSupportedLocales(List.of(
18+
Locale.forLanguageTag("en"),
19+
Locale.forLanguageTag("es"),
20+
Locale.forLanguageTag("ca")
21+
));
22+
23+
r.setDefaultLocale(Locale.forLanguageTag(frontendConfig.getDefaultLang()));
24+
return r;
25+
}
26+
}

src/main/java/es/in2/vcverifier/config/properties/FrontendProperties.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ public record FrontendProperties(
1313
@NotNull @NestedConfigurationProperty Urls urls,
1414
@NestedConfigurationProperty Colors colors,
1515
@NotBlank String logoSrc,
16-
String faviconSrc) {
16+
String faviconSrc,
17+
String defaultLang) {
1718

1819
public record Urls(
1920
@NotBlank @URL String onboarding,

src/main/java/es/in2/vcverifier/controller/ClientErrorController.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import org.springframework.web.bind.annotation.ResponseStatus;
1010
import org.springframework.ui.Model;
1111

12+
import java.util.Locale;
13+
14+
1215
@Controller
1316
@RequiredArgsConstructor
1417
public class ClientErrorController {
@@ -21,6 +24,7 @@ public String showErrorPage(@RequestParam("errorCode") String errorCode,
2124
@RequestParam("errorMessage") String errorMessage,
2225
@RequestParam("clientUrl") String clientUrl,
2326
@RequestParam("originalRequestURL") String originalRequestURL,
27+
Locale locale,
2428
Model model) {
2529
// Add attributes to the model
2630
model.addAttribute("errorCode", errorCode);
@@ -34,8 +38,10 @@ public String showErrorPage(@RequestParam("errorCode") String errorCode,
3438
model.addAttribute("secondary", frontendConfig.getSecondaryColor());
3539
model.addAttribute("secondaryContrast", frontendConfig.getSecondaryContrastColor());
3640
model.addAttribute("faviconSrc", frontendConfig.getFaviconSrc());
41+
3742
// Return the view name
38-
return "client-authentication-error";
43+
String language = locale.getLanguage().toLowerCase();
44+
return "client-authentication-error-" + language;
3945
}
4046

4147
}

src/main/java/es/in2/vcverifier/controller/LoginQrController.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import java.io.ByteArrayOutputStream;
1818
import java.util.Base64;
19+
import java.util.Locale;
1920

2021
@Controller
2122
@RequiredArgsConstructor
@@ -25,7 +26,7 @@ public class LoginQrController {
2526

2627
@GetMapping("/login")
2728
@ResponseStatus(HttpStatus.OK)
28-
public String showQrLogin(@RequestParam("authRequest") String authRequest, @RequestParam("state") String state, Model model, @RequestParam("homeUri") String homeUri) {
29+
public String showQrLogin(@RequestParam("authRequest") String authRequest, @RequestParam("state") String state, Model model, Locale locale, @RequestParam("homeUri") String homeUri) {
2930
try {
3031
// Generar la imagen QR en base64
3132
String qrImageBase64 = generateQRCodeImageBase64(authRequest);
@@ -46,10 +47,12 @@ public String showQrLogin(@RequestParam("authRequest") String authRequest, @Requ
4647
model.addAttribute("faviconSrc", frontendConfig.getFaviconSrc());
4748
model.addAttribute("expiration", LOGIN_TIMEOUT);
4849
model.addAttribute("cronUnit", LOGIN_TIMEOUT_CHRONO_UNIT);
50+
4951
} catch (Exception e) {
5052
throw new QRCodeGenerationException(e.getMessage());
5153
}
52-
return "login";
54+
String language = locale.getLanguage().toLowerCase();
55+
return "login-" + language;
5356
}
5457

5558
private String generateQRCodeImageBase64(String barcodeText) {

src/main/java/es/in2/vcverifier/model/AuthorizationContext.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public record AuthorizationContext(
99
String redirectUri,
1010
String clientNonce,
1111
String originalRequestURL,
12-
String requestUri
12+
String requestUri,
13+
String codeChallenge,
14+
String codeChallengeMethod
1315
) {
1416
}

src/main/java/es/in2/vcverifier/security/AuthorizationServerConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity h
8383
)
8484
.tokenEndpoint(tokenEndpoint ->
8585
tokenEndpoint
86-
.accessTokenRequestConverter(new CustomTokenRequestConverter(jwtService, clientAssertionValidationService, vpService, cacheStoreForAuthorizationCodeData,oAuth2AuthorizationService(),objectMapper, refreshTokenDataCacheCacheStore))
86+
.accessTokenRequestConverter(new CustomTokenRequestConverter(jwtService, clientAssertionValidationService, vpService, cacheStoreForAuthorizationCodeData,objectMapper, refreshTokenDataCacheCacheStore))
8787
.authenticationProvider(new CustomAuthenticationProvider(jwtService,registeredClientRepository,backendConfig,objectMapper, refreshTokenDataCacheCacheStore, oAuth2AuthorizationService()))
8888
)
8989
.oidc(Customizer.withDefaults()); // Enable OpenID Connect 1.0

0 commit comments

Comments
 (0)