From 7863ade94fe7ba55b592b8189497ef25d8b849ca Mon Sep 17 00:00:00 2001 From: Bennett Date: Sun, 29 Mar 2026 23:23:50 +0300 Subject: [PATCH 1/2] Fix error debiting sms account --- .../core/security/PasswordChangeRequiredFilter.java | 4 ++++ .../flextuma/core/security/SecurityConfig.java | 2 ++ .../modules/notification/services/NotificationService.java | 3 ++- .../modules/app/controllers/FrontendControllerTest.java | 7 +++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/flexcodelabs/flextuma/core/security/PasswordChangeRequiredFilter.java b/src/main/java/com/flexcodelabs/flextuma/core/security/PasswordChangeRequiredFilter.java index f8e6913..c6a423b 100644 --- a/src/main/java/com/flexcodelabs/flextuma/core/security/PasswordChangeRequiredFilter.java +++ b/src/main/java/com/flexcodelabs/flextuma/core/security/PasswordChangeRequiredFilter.java @@ -63,6 +63,10 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse } private boolean shouldSkipPasswordChangeCheck(String path) { + if (path == null || !path.startsWith("/api/")) { + return true; + } + return path.equals("/api/login") || path.equals("/api/changePassword") || path.equals("/api/logout") || diff --git a/src/main/java/com/flexcodelabs/flextuma/core/security/SecurityConfig.java b/src/main/java/com/flexcodelabs/flextuma/core/security/SecurityConfig.java index 8c915f4..4285a17 100644 --- a/src/main/java/com/flexcodelabs/flextuma/core/security/SecurityConfig.java +++ b/src/main/java/com/flexcodelabs/flextuma/core/security/SecurityConfig.java @@ -10,6 +10,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.util.matcher.RegexRequestMatcher; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; import org.springframework.session.web.http.CookieSerializer; import org.springframework.session.web.http.DefaultCookieSerializer; @@ -60,6 +61,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) { .requestMatchers("/api/register").permitAll() .requestMatchers("/").permitAll() .requestMatchers("/assets/**").permitAll() + .requestMatchers(new RegexRequestMatcher("^/(?!api(?:/|$)).*", null)).permitAll() .anyRequest().authenticated()) .httpBasic(Customizer.withDefaults()) .addFilterBefore(patAuthenticationFilter, diff --git a/src/main/java/com/flexcodelabs/flextuma/modules/notification/services/NotificationService.java b/src/main/java/com/flexcodelabs/flextuma/modules/notification/services/NotificationService.java index db9caed..27035ad 100644 --- a/src/main/java/com/flexcodelabs/flextuma/modules/notification/services/NotificationService.java +++ b/src/main/java/com/flexcodelabs/flextuma/modules/notification/services/NotificationService.java @@ -125,7 +125,8 @@ private SmsLog processAndSaveSms(User user, SmsConnector connector, String phone SmsTemplate template, Map metadata) { SmsSegmentResult segmentResult = segmentCalculator.calculate(content); if (connector.getCode() != null && connector.getCode().equals(connector.getProvider() + "_SYSTEM")) { - BigDecimal cost = pricePerSegment.multiply(BigDecimal.valueOf(segmentResult.segments())); + BigDecimal cost = BigDecimal.valueOf(Math.ceil(BigDecimal.valueOf(segmentResult.segments()) + .divide(pricePerSegment).doubleValue())); walletService.debit(user, cost, "SMS send to " + phoneNumber, null); } diff --git a/src/test/java/com/flexcodelabs/flextuma/modules/app/controllers/FrontendControllerTest.java b/src/test/java/com/flexcodelabs/flextuma/modules/app/controllers/FrontendControllerTest.java index 9ceec87..9577cca 100644 --- a/src/test/java/com/flexcodelabs/flextuma/modules/app/controllers/FrontendControllerTest.java +++ b/src/test/java/com/flexcodelabs/flextuma/modules/app/controllers/FrontendControllerTest.java @@ -39,6 +39,13 @@ void serveCatchAll_shouldReturnIndexForNonApiRoutes() throws Exception { .andExpect(content().string("app")); } + @Test + void serveCatchAll_shouldReturnIndexForLoginRoute() throws Exception { + mockMvc.perform(get("/login")) + .andExpect(status().isOk()) + .andExpect(content().string("app")); + } + @Test void serveCatchAll_shouldReturnIndexForDottedNonApiRoutes() throws Exception { mockMvc.perform(get("/foo.bar")) From 80b4b7ff8ea7ae9314a901e8a03571e6b2dd253d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 29 Mar 2026 20:24:41 +0000 Subject: [PATCH 2/2] Release v0.0.33 [skip ci] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ccefd50..2648032 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = 'com.flexcodelabs' -version = '0.0.32' +version = '0.0.33' description = 'Flextuma App' java {