From e7d5085f94bd8a9c2af914304227c963b26ffd40 Mon Sep 17 00:00:00 2001 From: Igor I Date: Fri, 31 Jan 2025 19:51:24 +0500 Subject: [PATCH] =?UTF-8?q?!!!=D0=A1=D0=92=D0=90=D0=93=D0=93=D0=95=D0=A0!!?= =?UTF-8?q?!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kg_gpti_transit_jwt.yml | 13 ++- kz_istransit_jwt.yml | 14 ++- kz_istransit_test_jwt.yml | 71 ++++++++++++++ kz_mcp_jwt.yml | 14 ++- org_ccalm_jwt.yml | 12 +++ pom.xml | 66 ++++++++++--- .../java/org/ccalm/jwt/JwtApplication.java | 6 +- .../java/org/ccalm/jwt/MainController.java | 97 ++++++++++--------- .../java/org/ccalm/jwt/models/ActionName.java | 16 --- .../org/ccalm/jwt/models/ActionNameModel.java | 17 ++++ .../org/ccalm/jwt/models/ApiResponseData.java | 87 +++++++++++++++++ .../java/org/ccalm/jwt/models/EmailModel.java | 10 +- .../java/org/ccalm/jwt/models/ErrorModel.java | 2 + .../java/org/ccalm/jwt/models/LoginModel.java | 28 +----- .../org/ccalm/jwt/models/RestoreModel.java | 16 +-- .../org/ccalm/jwt/models/SettingModel.java | 19 +--- .../java/org/ccalm/jwt/models/UserModel.java | 74 +------------- 17 files changed, 347 insertions(+), 215 deletions(-) create mode 100644 kz_istransit_test_jwt.yml delete mode 100644 src/main/java/org/ccalm/jwt/models/ActionName.java create mode 100644 src/main/java/org/ccalm/jwt/models/ActionNameModel.java create mode 100644 src/main/java/org/ccalm/jwt/models/ApiResponseData.java diff --git a/kg_gpti_transit_jwt.yml b/kg_gpti_transit_jwt.yml index bbf1b57..9ebea0b 100644 --- a/kg_gpti_transit_jwt.yml +++ b/kg_gpti_transit_jwt.yml @@ -24,7 +24,10 @@ spring: connection-timeout: 30000 connection-test-query: SELECT 1 validation-timeout: 5000 - + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect redis: host: 192.168.6.25 port: 6379 @@ -58,3 +61,11 @@ logging: com: zaxxer: hikari: DEBUG + +springdoc: + api-docs: + enabled: false + path: /api-docs + swagger-ui: + enabled: true + path: /api-docs-ui diff --git a/kz_istransit_jwt.yml b/kz_istransit_jwt.yml index 130734b..cda8578 100644 --- a/kz_istransit_jwt.yml +++ b/kz_istransit_jwt.yml @@ -10,7 +10,7 @@ issuer: spring: application: - name: kz_mcp_jwt + name: kz_istransit_jwt datasource: url: jdbc:postgresql://mcp.kz:5432/mcp username: igor @@ -24,6 +24,10 @@ spring: connection-timeout: 30000 connection-test-query: SELECT 1 validation-timeout: 30000 + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect redis: host: 127.0.0.1 port: 6379 @@ -57,3 +61,11 @@ logging: com: zaxxer: hikari: DEBUG + +springdoc: + api-docs: + enabled: true + path: /api-docs + swagger-ui: + enabled: true + path: /api-docs-ui \ No newline at end of file diff --git a/kz_istransit_test_jwt.yml b/kz_istransit_test_jwt.yml new file mode 100644 index 0000000..cda8578 --- /dev/null +++ b/kz_istransit_test_jwt.yml @@ -0,0 +1,71 @@ +server: + port: 8082 + ssl: + enabled: true + key-store: classpath:keystore.jks + key-store-password: MFNX344yh4 + key-store-type: PKCS12 +issuer: + name: istransit + +spring: + application: + name: kz_istransit_jwt + datasource: + url: jdbc:postgresql://mcp.kz:5432/mcp + username: igor + password: VnzbUdcePSLtg22ktz13 + driver-class-name: org.postgresql.Driver + hikari: + maximum-pool-size: 10 + minimum-idle: 5 + max-lifetime: 600000 + idle-timeout: 60000 + connection-timeout: 30000 + connection-test-query: SELECT 1 + validation-timeout: 30000 + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect + redis: + host: 127.0.0.1 + port: 6379 + password: 9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw== + +public: + key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA30j+pSoKFHSdSulIGzdFtg+z+ANJPOSVFJ6jvehj1sonOqQsI2rz539+FgIrsDZE8iydFAlQNxS8vqYtWiQSksAUId7aOY/eq7mFkGW+U5xIA2OPgIvN0uhW1Edm85jS7aAg/P/c+lLHnPzQIFdsgVrAh4esFvVS10Pj6TjJVprDj0jOraIw84GVt0gYXZTudcvZavWcmGV1mQJf0jDIHQsCRcMJAE2lzBIKpJGPPZke9xs25lm8feTFR0NNjDNvCG4dYAimyAH36UslXa/zIfRB/7r4AB9KPBFxGe8szK1EcXbJY+paq+TazZJ8Lo8nEmpehCdHUNdD9iWtiYRjNQIDAQAB +private: + key: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDfSP6lKgoUdJ1K6UgbN0W2D7P4A0k85JUUnqO96GPWyic6pCwjavPnf34WAiuwNkTyLJ0UCVA3FLy+pi1aJBKSwBQh3to5j96ruYWQZb5TnEgDY4+Ai83S6FbUR2bzmNLtoCD8/9z6Usec/NAgV2yBWsCHh6wW9VLXQ+PpOMlWmsOPSM6tojDzgZW3SBhdlO51y9lq9ZyYZXWZAl/SMMgdCwJFwwkATaXMEgqkkY89mR73GzbmWbx95MVHQ02MM28Ibh1gCKbIAffpSyVdr/Mh9EH/uvgAH0o8EXEZ7yzMrURxdslj6lqr5NrNknwujycSal6EJ0dQ10P2Ja2JhGM1AgMBAAECggEAPWsLuIzOxv+owJFYpzvV7hV1sJPe0mQh6dEVQ0ioJc3naob8KSXjP1tfaFhigg77eg3xizBgozYOEPcO5IulnD4/i22MY2cCngPjDGwgJUmIuX3qXDaYgBouwCd/1yPDaV+xk0YiF60rgTA9Y5gInbBD40Pbf1kt106yY1WedDaMaogilC6nZwde7H6UQrjoxQ3fSyw9brH04Vma7awcaEYQ6C0NM4uMJFws9jnwDXkYh0QnPW5eIIf9gmr2a+FtKtqlQyZiCjrQOJuU2TQo9wgKiOkVRIfmivXbt5I1O7SkPPUl2mtQAjbZxtHqooLC6It9svO/4rRJY0egjvsGZQKBgQDwCTGhExOahz/UH0I58Ksq44Zz6c6wt7Pt8U2S9L4Sfgjt4Gxu5XcdgMchZHu+xQtONpd7HWO4d9zK1IIHgJ/4IBMA2Lcp7EglHsnuc9II31EU9uP6Ar3yD3UC3zP/lszQs7t3Tagpq3I0bUuSnKH+SMW+mKztg5Xiu4x72HeIGwKBgQDuIpryaOhCEuwN6VguTSStNJe6fxI1NlHLF0anacuT43MotsRXYWRKWdu2nkupB3SqY+Lxipibu8I5CkWoKV8pbGYSqW8YDSzxoSPocTrbkuai7mczMSBCtFZ3nDFx1J3O2IJZaBT4OA+HEVaj+rzeyEYrwACmtSAl+YBNXE4W7wKBgH4ohuIe0aXdQgnuJ/Ol74DKNueDUnQFCVedBOWhJqk3ft/vnW4nwpRKE98UHgnlLIz+Gl3F05ynuu8MBA+HZgyWZwaB4LrzCfQgm4dtbk3leYsoPCgx+r1XrGtG/uBt1NY4MOaCdUj5aDvv2dGD64xnmS8UtYbcKxIQ+sQ4wJJTAoGAVOcVo3Pvyw8ABn25qNhsSSzFJAMGNN6nDue/kxTPNm0Ts+Jl4lmg7jlXcqbBhwRXfiCa20901aF9v+R/rVMC0LwLMIAkUcjwyz2OleM4/uxDOrgRJ1lOjTnK0l5n6pPJp+PdpY7MWytxrdBquZA+Ipf5HMQZ91YAnkl0iyBr3xUCgYBNBIb0fVTlAf7KJ4urjOE+305oRmEU5eHK2KiAViPDj16BuPy/hE11BnZE5HT4AMfuAm6AmLdrdiyb2iROMrsEQ8AFsGaFsY/njXqV75nNWceLpqrMk1FcYmnAEv0X/RhvsPzv79RzEf9jyjZlQ1XMfBfuuwwjWaUTLBcQhGFOqQ== +access: + time: 600 +refresh: + time: 43200 + +captcha: + key: PPExpv36jk4Vzda3NpYnXLfuHCLYXqaNrxlOH/Jr/1M= + time: 600 + +mail: + host: smtp.yandex.ru + port: 465 + login: info@ccalm.org + password: fu2lpsoGPGiq1xlRm8ag + +url: + reset: https://mcp.test/api/authorization/login/reset + main: https://mcp.test/ + +logging: + level: + com: + zaxxer: + hikari: DEBUG + +springdoc: + api-docs: + enabled: true + path: /api-docs + swagger-ui: + enabled: true + path: /api-docs-ui \ No newline at end of file diff --git a/kz_mcp_jwt.yml b/kz_mcp_jwt.yml index 680bbe3..8399b2a 100644 --- a/kz_mcp_jwt.yml +++ b/kz_mcp_jwt.yml @@ -24,6 +24,10 @@ spring: connection-timeout: 30000 connection-test-query: SELECT 1 validation-timeout: 30000 + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect redis: host: 127.0.0.1 port: 6379 @@ -56,4 +60,12 @@ logging: level: com: zaxxer: - hikari: DEBUG \ No newline at end of file + hikari: DEBUG + +springdoc: + api-docs: + enabled: true + path: /api-docs + swagger-ui: + enabled: true + path: /api-docs-ui diff --git a/org_ccalm_jwt.yml b/org_ccalm_jwt.yml index 45a87f6..eaa5396 100644 --- a/org_ccalm_jwt.yml +++ b/org_ccalm_jwt.yml @@ -26,6 +26,10 @@ spring: connection-test-query: SELECT 1 validation-timeout: 5000 validation-interval: 60000 + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect redis: host: 127.0.0.1 port: 6379 @@ -64,3 +68,11 @@ refresh: # com: # zaxxer: # hikari: WARN + +springdoc: + api-docs: + enabled: true + path: /api-docs + swagger-ui: + enabled: true + path: /api-docs-ui \ No newline at end of file diff --git a/pom.xml b/pom.xml index c970224..005aabf 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.3.3 + 3.4.2 org.ccalm @@ -18,26 +18,46 @@ + + org.slf4j + slf4j-api + 2.0.16 + + org.springframework.boot spring-boot-starter-data-redis - 3.3.3 + + + + org.apache.logging.log4j + log4j-api + + + org.springframework.boot spring-boot-starter-web - 3.3.3 + + + org.springframework.boot + spring-boot-starter-logging org.springframework.boot spring-boot-starter-test test - 3.3.3 org.springframework.boot spring-boot-starter-data-jpa - 3.3.3 org.postgresql @@ -71,22 +91,28 @@ redis.clients jedis 3.7.0 + + + org.slf4j + slf4j-api + + net.logicsquad nanocaptcha 2.1 - + + - + 6.6 + javax.mail mail @@ -113,6 +139,24 @@ 1.5.0 + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.8.4 + + + javax.annotation + javax.annotation-api + 1.3.2 + + + + org.projectlombok + lombok + 1.18.36 + provided + + diff --git a/src/main/java/org/ccalm/jwt/JwtApplication.java b/src/main/java/org/ccalm/jwt/JwtApplication.java index ef98f7d..f14298b 100644 --- a/src/main/java/org/ccalm/jwt/JwtApplication.java +++ b/src/main/java/org/ccalm/jwt/JwtApplication.java @@ -1,7 +1,7 @@ package org.ccalm.jwt; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @@ -10,7 +10,7 @@ import org.springframework.context.annotation.ComponentScan; @ComponentScan(basePackages = {"org.ccalm.jwt"}) public class JwtApplication { - private static final Logger logger = LogManager.getLogger(JwtApplication.class); + private static final Logger logger = LoggerFactory.getLogger(JwtApplication.class); public static void main(String[] args) { logger.info("Start JwtApplication"); diff --git a/src/main/java/org/ccalm/jwt/MainController.java b/src/main/java/org/ccalm/jwt/MainController.java index 35352e0..402a175 100644 --- a/src/main/java/org/ccalm/jwt/MainController.java +++ b/src/main/java/org/ccalm/jwt/MainController.java @@ -1,14 +1,16 @@ package org.ccalm.jwt; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; import com.warrenstrange.googleauth.GoogleAuthenticator; import com.warrenstrange.googleauth.GoogleAuthenticatorKey; import org.ccalm.jwt.models.*; import org.ccalm.jwt.tools.*; import com.zaxxer.hikari.HikariDataSource; import io.jsonwebtoken.*; -import io.jsonwebtoken.security.Keys; import jakarta.servlet.ServletContext; -import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import net.logicsquad.nanocaptcha.content.LatinContentProducer; @@ -20,10 +22,10 @@ import org.json.JSONArray; import org.json.JSONException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.io.ClassPathResource; import org.springframework.dao.DataAccessException; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseCookie; +import org.springframework.http.ResponseEntity; import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.stereotype.Controller; import org.springframework.lang.Nullable; @@ -36,16 +38,12 @@ 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 redis.clients.jedis.Jedis; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; -import java.nio.file.Files; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.PublicKey; -import javax.crypto.SecretKey; -import javax.crypto.spec.SecretKeySpec; import javax.imageio.ImageIO; import javax.mail.MessagingException; import java.awt.*; @@ -53,14 +51,11 @@ import java.awt.image.BufferedImage; import java.io.*; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; -import java.sql.*; import java.sql.Date; import java.time.Duration; import java.time.Instant; import java.util.*; import java.util.List; -import java.util.jar.Attributes; -import java.util.jar.JarFile; import java.util.regex.Pattern; import java.io.InputStream; import java.util.Properties; @@ -125,6 +120,7 @@ public class MainController implements ServletContextAware { this.jdbcTemplate = jdbcTemplate; } + //--------------------------------------------------------------------------- public String createStrJSONError(int code, String message, String setting, String marker) { JSONObject json = new JSONObject(); try { @@ -137,24 +133,24 @@ 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", Arrays.asList(setting)); + json.put("error_marker", marker); } catch (JSONException e) { logger.error(e); } return json; } - + //--------------------------------------------------------------------------- public String createHTMLError(int code, String message) { return ""; } - + //--------------------------------------------------------------------------- public static int countOccurrences(String str, char symbol) { int count = 0; @@ -245,7 +241,6 @@ public class MainController implements ServletContextAware { return true; } - /** * Create a Access Cookie */ @@ -270,9 +265,10 @@ public class MainController implements ServletContextAware { return true; } - @RequestMapping(value = "/",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json;charset=utf-8") + @Operation(summary = "Get API version(date) of build", description = "Returns the date and API name") + @RequestMapping(value = "/",method = RequestMethod.GET,produces = "application/json;charset=utf-8") @ResponseBody - public String index(Model model,@RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { + public ResponseEntity index() { JSONObject json = new JSONObject(); try { json.put("error_code",0); @@ -299,13 +295,10 @@ public class MainController implements ServletContextAware { } catch (JSONException e) { throw new RuntimeException(e); } - return json.toString(); + return ResponseEntity.ok(json.toString()); } - /* - @RequestMapping(value = "/get_settings/",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json;charset=utf-8") - @ResponseBody - public String get_settings(Model model, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a,@RequestBody ActionName action_name, @CookieValue(value = "lng", defaultValue = "1") String language_id) { - */ + + @Operation(summary = "Get user settings from the database by their ID from JWT", description = "Get user settings from the database by their ID from JWT") @RequestMapping(value = "/get_settings",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json;charset=utf-8") @ResponseBody public String get_settings(@CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { @@ -432,30 +425,44 @@ public class MainController implements ServletContextAware { return json.toString(); } - @RequestMapping(value = "/access",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json;charset=utf-8") + @Operation( + summary = "Get list of permissions", + description = "Get list of permissions for user by Access token", + responses = { + @ApiResponse( + responseCode = "200", + description = "Успешный ответ", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiResponseData.class) + ) + ) + } + ) + @RequestMapping(value = "/access",method = {RequestMethod.POST},produces = "application/json;charset=utf-8") @ResponseBody - public String access(Model model, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a,@Nullable @RequestBody ActionName action_name,@CookieValue(value = "lng",defaultValue = "1") String language_id) { - + public ApiResponseData access( + Model model, + @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, + @Nullable @RequestBody ActionNameModel action_name, + @CookieValue(value = "lng",defaultValue = "1") String language_id + ) { Translation trt = new Translation(language_id,jdbcTemplate); - String result=createStrJSONError(10000,trt.trt("Request_not_processed"), (String)null, (String)null); + ApiResponseData> result = null; try { if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) { - result=createStrJSONError(10000,trt.trt("Please_log_in"), (String)null, (String)null); - return result; + return ApiResponseData.error(10000, trt.trt("Please_log_in"),null,null); } - - //Connection conn = getConnection(); //Проверяю подпись токена Jws claims = null; - //SecretKey key_a = new SecretKeySpec(Base64.getDecoder().decode(key_a_txt), "HmacSHA256"); try { claims = Jwts.parserBuilder() - .setSigningKey(getPublicKey()) //.setSigningKey(key_a) + .setSigningKey(getPublicKey()) .build() .parseClaimsJws(jwt_a); } catch (Exception e) { - return createStrJSONError(10000, trt.trt("JWT_token_verification_error"),(String)null,(String)null); + return ApiResponseData.error(10000, trt.trt("JWT_token_verification_error"),null,null); } String sql = """ select @@ -474,24 +481,19 @@ public class MainController implements ServletContextAware { if(action_name == null) parameters.addValue("action_name", null); else - parameters.addValue("action_name", action_name.getActionName()); + parameters.addValue("action_name", action_name.getAction_name()); List ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); - JSONObject json = new JSONObject(); - json.put("error_code",0); - //json.put("error_message",""); - //json.put("error_marker",(String)null); - JSONArray data = new JSONArray(); - for (int i = 0; i < ret.size(); i++) { - data.put((new JSONObject(ret.get(i))).getString("name")); + List data = new ArrayList<>(); + for (String s : ret) { + data.add((new JSONObject(s)).getString("name")); } - json.put("data",data); - result = json.toString(); + result = ApiResponseData.success(data); } catch (Exception e) { String uuid = UUID.randomUUID().toString(); logger.error(uuid,e); - result=createStrJSONError(10000,trt.trt("Internal_Server_Error"), (String)null, uuid); + return ApiResponseData.error(10000, trt.trt("Internal_Server_Error"),(String)null,uuid); } - return result; + return (ApiResponseData) result; } @RequestMapping(value = "/captcha",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json;charset=utf-8") @@ -748,7 +750,8 @@ public class MainController implements ServletContextAware { return json.toString(); } - @RequestMapping(value = "/login",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json;charset=utf-8") + @Operation(summary = "Login and get JWT token", description = "Login and get JWT token") + @RequestMapping(value = "/login",method = RequestMethod.POST,produces = "application/json;charset=utf-8") @ResponseBody public String login(HttpServletResponse response, HttpServletRequest request, @RequestBody LoginModel loginModel, @CookieValue(value = "lng", defaultValue = "1") String language_id) { diff --git a/src/main/java/org/ccalm/jwt/models/ActionName.java b/src/main/java/org/ccalm/jwt/models/ActionName.java deleted file mode 100644 index 6e932af..0000000 --- a/src/main/java/org/ccalm/jwt/models/ActionName.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.ccalm.jwt.models; - -//import jakarta.persistence.Column; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class ActionName { - //@Column(name = "action_name", nullable = true) - @JsonProperty("action_name") - private String action_name; - public String getActionName() { - return action_name; - } - public void setActionName(String action_name) { - this.action_name = action_name; - } -} \ No newline at end of file diff --git a/src/main/java/org/ccalm/jwt/models/ActionNameModel.java b/src/main/java/org/ccalm/jwt/models/ActionNameModel.java new file mode 100644 index 0000000..621669d --- /dev/null +++ b/src/main/java/org/ccalm/jwt/models/ActionNameModel.java @@ -0,0 +1,17 @@ +package org.ccalm.jwt.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) +@Schema(description = "Model for getting actions by name") +public class ActionNameModel { + + @Schema(description = "Action name", example = "arm_") + @JsonProperty("action_name") + private String action_name; + +} diff --git a/src/main/java/org/ccalm/jwt/models/ApiResponseData.java b/src/main/java/org/ccalm/jwt/models/ApiResponseData.java new file mode 100644 index 0000000..0532c5f --- /dev/null +++ b/src/main/java/org/ccalm/jwt/models/ApiResponseData.java @@ -0,0 +1,87 @@ +package org.ccalm.jwt.models; + +import io.swagger.v3.oas.annotations.media.Schema; + +import java.util.Arrays; + +@Schema( + description = "Стандартный ответ API", + example = "{ \"error_code\": 0, \"error_message\": \"\", \"data\": [\"arm_accounting\", \"arm_carrier\", \"arm_hr\"] }" +) +public class ApiResponseData { + + @Schema(description = "Код ошибки", example = "0") + private int errorCode; + + @Schema(description = "Сообщение об ошибке", example = "") + private String errorMessage; + + @Schema(description = "Параметры для переводимого текста", example = "") + private String errorSetting; + + @Schema(description = "Уникальный идентификатор для поиска в базе", example = "") + private String errorMarker; + + @Schema(description = "Данные", example = "[\"arm_accounting\", \"arm_carrier\", \"arm_hr\"]") + private T data; + + public ApiResponseData() { + } + + public ApiResponseData(int errorCode, String errorMessage, String errorSetting, String errorMarker, T data) { + this.errorCode = errorCode; + this.errorMessage = errorMessage; + this.errorSetting = errorSetting; + this.errorMarker = errorMarker; + this.data = data; + } + + public static ApiResponseData success(T data) { + return new ApiResponseData<>(0, "","","", data); + } + + public static ApiResponseData error(int code, String message, String setting, String marker) { + return new ApiResponseData<>(code, message, setting, marker, null); + } + + // Геттеры и сеттеры + public int getErrorCode() { + return errorCode; + } + + public void setErrorCode(int errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public void setErrorSetting(String errorSetting) { + this.errorSetting = errorSetting; + } + + public String getErrorSetting() { + return errorSetting; + } + + public void setErrorMarker(String errorMarker) { + this.errorMarker = errorMarker; + } + + public String getErrorMarker() { + return errorMarker; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } +} \ No newline at end of file diff --git a/src/main/java/org/ccalm/jwt/models/EmailModel.java b/src/main/java/org/ccalm/jwt/models/EmailModel.java index 8126efe..e1f8e3b 100644 --- a/src/main/java/org/ccalm/jwt/models/EmailModel.java +++ b/src/main/java/org/ccalm/jwt/models/EmailModel.java @@ -1,14 +1,10 @@ package org.ccalm.jwt.models; +import lombok.Data; import com.fasterxml.jackson.annotation.JsonProperty; +@Data public class EmailModel { @JsonProperty("email") - String email; - public String getEmail() { - return email; - } - public void setEmail(String email) { - this.email = email; - } + private String email; } diff --git a/src/main/java/org/ccalm/jwt/models/ErrorModel.java b/src/main/java/org/ccalm/jwt/models/ErrorModel.java index 237d9fe..4cb2ff7 100644 --- a/src/main/java/org/ccalm/jwt/models/ErrorModel.java +++ b/src/main/java/org/ccalm/jwt/models/ErrorModel.java @@ -1,7 +1,9 @@ package org.ccalm.jwt.models; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +@Data public class ErrorModel { @JsonProperty("timestamp") private String timestamp; diff --git a/src/main/java/org/ccalm/jwt/models/LoginModel.java b/src/main/java/org/ccalm/jwt/models/LoginModel.java index 212ba3a..4b82f35 100644 --- a/src/main/java/org/ccalm/jwt/models/LoginModel.java +++ b/src/main/java/org/ccalm/jwt/models/LoginModel.java @@ -1,5 +1,8 @@ package org.ccalm.jwt.models; +import lombok.Data; + +@Data public class LoginModel { //@JsonProperty("login") private String login; @@ -8,29 +11,4 @@ public class LoginModel { //@JsonProperty("appid") private String totp; private String appid; - public String getLogin() { - return login; - } - public void setLogin(String login) { - this.login = login; - } - public String getPassword() { - return password; - } - public void setPassword(String password) { - this.password = password; - } - public String getTotp() { return totp; } - public void setTotp(String totp) { - this.totp = totp; - } - public String getAppid() { - return appid; - } - public void setAppid(String appid) { - this.appid = appid; - } - - - } diff --git a/src/main/java/org/ccalm/jwt/models/RestoreModel.java b/src/main/java/org/ccalm/jwt/models/RestoreModel.java index 86d71ee..3273658 100644 --- a/src/main/java/org/ccalm/jwt/models/RestoreModel.java +++ b/src/main/java/org/ccalm/jwt/models/RestoreModel.java @@ -1,25 +1,13 @@ package org.ccalm.jwt.models; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +@Data public class RestoreModel { @JsonProperty("code") String code; @JsonProperty("token") String token; - - public String getCode() { - return code; - } - public void setCode(String code) { - this.code = code; - } - - public String getToken() { - return token; - } - public void setToken(String token) { - this.token = token; - } } diff --git a/src/main/java/org/ccalm/jwt/models/SettingModel.java b/src/main/java/org/ccalm/jwt/models/SettingModel.java index 0419fc7..79d32c2 100644 --- a/src/main/java/org/ccalm/jwt/models/SettingModel.java +++ b/src/main/java/org/ccalm/jwt/models/SettingModel.java @@ -1,28 +1,13 @@ package org.ccalm.jwt.models; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +@Data public class SettingModel { @JsonProperty("identifier") private String identifier; @JsonProperty("value") private String value; - - public String getIdentifier() { - return identifier; - } - - public void setIdentifier(String identifier) { - this.identifier = identifier; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - } diff --git a/src/main/java/org/ccalm/jwt/models/UserModel.java b/src/main/java/org/ccalm/jwt/models/UserModel.java index 0bae762..62bb3d9 100644 --- a/src/main/java/org/ccalm/jwt/models/UserModel.java +++ b/src/main/java/org/ccalm/jwt/models/UserModel.java @@ -1,7 +1,9 @@ package org.ccalm.jwt.models; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +@Data public class UserModel { @JsonProperty("country_id") private Long countryId; @@ -21,76 +23,4 @@ public class UserModel { private String email; @JsonProperty("password") private String password; - - public Long getCountryId() { - return countryId; - } - - public void setCountryId(Long countryId) { - this.countryId = countryId; - } - - public String getCompanyName() { - return companyName; - } - - public void setCompanyName(String companyName) { - this.companyName = companyName; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSurname() { - return surname; - } - - public void setSurname(String surname) { - this.surname = surname; - } - - public String getPatronymic() { - return patronymic; - } - - public void setPatronymic(String patronymic) { - this.patronymic = patronymic; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } }