diff --git a/pom.xml b/pom.xml
index 005aabf..a7f6296 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,10 @@
+
+ org.springframework.boot
+ spring-boot-starter-security
+
org.springframework.boot
spring-boot-starter-web
@@ -70,23 +74,34 @@
json
20231013
+
+
io.jsonwebtoken
jjwt-api
- 0.11.2
+ 0.11.5
io.jsonwebtoken
jjwt-impl
- 0.11.2
+ 0.11.5
runtime
io.jsonwebtoken
jjwt-jackson
- 0.11.2
+ 0.11.5
runtime
+
redis.clients
jedis
diff --git a/src/main/java/org/ccalm/jwt/GlobalExceptionHandler.java b/src/main/java/org/ccalm/jwt/GlobalExceptionHandler.java
new file mode 100644
index 0000000..69f3fa9
--- /dev/null
+++ b/src/main/java/org/ccalm/jwt/GlobalExceptionHandler.java
@@ -0,0 +1,45 @@
+package org.ccalm.jwt;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.NoHandlerFoundException;
+import java.util.Collections;
+import java.util.UUID;
+
+import org.ccalm.jwt.models.ErrorResponseModel;
+
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ @ExceptionHandler(NoHandlerFoundException.class)
+ public ResponseEntity handleNotFound(NoHandlerFoundException ex) {
+ ErrorResponseModel errorResponse = new ErrorResponseModel(
+ 10000 + HttpStatus.NOT_FOUND.value(),
+ "Not_Found",
+ UUID.randomUUID().toString()
+ );
+ return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
+ }
+
+ @ExceptionHandler(Exception.class)
+ public ResponseEntity handleException(Exception ex) {
+ ErrorResponseModel errorResponse = new ErrorResponseModel(
+ 10000 + HttpStatus.NOT_FOUND.value(),
+ "Internal_Server_Error", //Collections.singletonList("Internal_Server_Error"),
+ UUID.randomUUID().toString()
+ );
+ return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ @RequestMapping("/error")
+ public ResponseEntity handleError() {
+ ErrorResponseModel errorResponse = new ErrorResponseModel(
+ 10000 + HttpStatus.NOT_FOUND.value(),
+ "Unknown_error",
+ UUID.randomUUID().toString()
+ );
+ return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
+ }
+}
diff --git a/src/main/java/org/ccalm/jwt/MainController.java b/src/main/java/org/ccalm/jwt/MainController.java
index d19b4a7..65b6e51 100644
--- a/src/main/java/org/ccalm/jwt/MainController.java
+++ b/src/main/java/org/ccalm/jwt/MainController.java
@@ -39,6 +39,8 @@ import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.commons.text.RandomStringGenerator;
+import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
+import org.springframework.context.ApplicationContext;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@@ -61,11 +63,14 @@ import java.util.regex.Pattern;
import java.io.InputStream;
import java.util.Properties;
import java.io.IOException;
+import java.util.stream.Collectors;
+import org.springframework.security.core.Authentication;
@Controller
public class MainController implements ServletContextAware {
private static final Logger logger = LogManager.getLogger(MainController.class);
+
@Value("${spring.application.name}")
String application_name = "";
@Value("${issuer.name}")
@@ -135,19 +140,6 @@ public class MainController implements ServletContextAware {
return json.toString();
}
//---------------------------------------------------------------------------
- public JSONObject createJSONError(int code, String message, String setting, String marker) {
- JSONObject json = new JSONObject();
- try {
- json.put("error_code", code);
- json.put("error_message", Arrays.asList(message));
- json.put("error_setting", Arrays.asList(setting));
- json.put("error_marker", marker);
- } catch (JSONException e) {
- logger.error(e);
- }
- return json;
- }
- //---------------------------------------------------------------------------
public String createHTMLError(int code, String message) {
return "";
}
@@ -293,6 +285,18 @@ public class MainController implements ServletContextAware {
json.put("name",application_name);
//json.put("active_connections",dataSource.getHikariPoolMXBean().getActiveConnections());
//json.put("idle_connections",dataSource.getHikariPoolMXBean().getIdleConnections());
+
+ // Вывод всех зарегистрированных маршрутов в системе
+ ApplicationContext context = SpringContext.getApplicationContext();
+ if (context != null) {
+ RequestMappingHandlerMapping mapping = context.getBean(RequestMappingHandlerMapping.class);
+ Set endpoints = mapping.getHandlerMethods().keySet().stream()
+ .map(info -> info.toString())
+ .collect(Collectors.toSet());
+ System.out.println("=== Registered API endpoints ===");
+ endpoints.forEach(System.out::println);
+ }
+
} catch (JSONException e) {
throw new RuntimeException(e);
}
@@ -305,7 +309,7 @@ public class MainController implements ServletContextAware {
public Object get_settings(@CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate);
try{
- if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2)
+ if(jwt_a.isEmpty() || countOccurrences(jwt_a, '.')!=2)
{
throw new CustomException(10000, trt.trt("Please_log_in"),null);
}
@@ -348,15 +352,10 @@ public class MainController implements ServletContextAware {
@Operation(summary = "Create or update user settings", description = "")
@RequestMapping(value = "/set_settings",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json;charset=utf-8")
@ResponseBody
- public String set_settings(SettingModel setting, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) {
+ public ResponseEntity