diff --git a/pom.xml b/pom.xml index 2eabc5f..3b01274 100644 --- a/pom.xml +++ b/pom.xml @@ -134,7 +134,7 @@ 2.22.2 - file:kz_mcp_jwt.properties + file:org_ccalm_jwt.properties diff --git a/src/main/java/org/ccalm/jwt/MainController.java b/src/main/java/org/ccalm/jwt/MainController.java index 5b01968..fb9d72d 100644 --- a/src/main/java/org/ccalm/jwt/MainController.java +++ b/src/main/java/org/ccalm/jwt/MainController.java @@ -127,19 +127,27 @@ public class MainController implements ServletContextAware { public String createStrJSONError(int code, String message, String setting, String marker) { JSONObject json = new JSONObject(); - json.put("error_code", code); - json.put("error_message", Arrays.asList(message)); - json.put("error_setting", Arrays.asList(setting)); - json.put("error_marker", marker); + 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) { + return "{}"; + } return json.toString(); } public JSONObject createJSONError(int code, String message, String setting, String marker) { JSONObject json = new JSONObject(); - 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)); + 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)); + } catch (JSONException e) { + logger.error(e); + } return json; } @@ -266,27 +274,31 @@ public class MainController implements ServletContextAware { @ResponseBody public String index(Model model,@RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { JSONObject json = new JSONObject(); - json.put("error_code",0); - json.put("error_message",""); - json.put("error_marker",(String)null); - String buildDate=""; - //String buildVersion=""; try { - InputStream inputStream = MainController.class.getClassLoader().getResourceAsStream("META-INF/build-info.properties"); - if (inputStream != null) { - Properties properties = new Properties(); - properties.load(inputStream); - buildDate = properties.getProperty("build.time"); - //buildVersion = properties.getProperty("build.version"); + json.put("error_code",0); + json.put("error_message",""); + json.put("error_marker",(String)null); + String buildDate=""; + //String buildVersion=""; + try { + InputStream inputStream = MainController.class.getClassLoader().getResourceAsStream("META-INF/build-info.properties"); + if (inputStream != null) { + Properties properties = new Properties(); + properties.load(inputStream); + buildDate = properties.getProperty("build.time"); + //buildVersion = properties.getProperty("build.version"); + } + } catch (Exception e) { + e.printStackTrace(); } - } catch (Exception e) { - e.printStackTrace(); + json.put("build_date",buildDate); + //json.put("build_version",buildVersion); + json.put("name",application_name); + //json.put("active_connections",dataSource.getHikariPoolMXBean().getActiveConnections()); + //json.put("idle_connections",dataSource.getHikariPoolMXBean().getIdleConnections()); + } catch (JSONException e) { + throw new RuntimeException(e); } - json.put("build_date",buildDate); - //json.put("build_version",buildVersion); - json.put("name",application_name); - //json.put("active_connections",dataSource.getHikariPoolMXBean().getActiveConnections()); - //json.put("idle_connections",dataSource.getHikariPoolMXBean().getIdleConnections()); return json.toString(); } /* @@ -299,10 +311,11 @@ public class MainController implements ServletContextAware { public String 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); JSONObject json = new JSONObject(); - json.put("error_code",0); - //json.put("error_message",""); - //json.put("error_marker",(String)null); try{ + json.put("error_code",0); + //json.put("error_message",""); + //json.put("error_marker",(String)null); + if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) { throw new CustomException(10000, trt.trt("Please_send_a_valid_JWT_token"),null); @@ -355,10 +368,11 @@ public class MainController implements ServletContextAware { public String set_settings(SettingModel setting, @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); JSONObject json = new JSONObject(); - json.put("error_code",0); - //json.put("error_message",""); - //json.put("error_marker",(String)null); try{ + json.put("error_code",0); + //json.put("error_message",""); + //json.put("error_marker",(String)null); + if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) { throw new CustomException(10000, trt.trt("Please_send_a_valid_JWT_token"),null); @@ -423,56 +437,60 @@ public class MainController implements ServletContextAware { 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) { Translation trt = new Translation(language_id,jdbcTemplate); - String result=createStrJSONError(10000,trt.trt("Request_not_processed"), (String)null, (String)null); - if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) - { - result=createStrJSONError(10000,trt.trt("Please_send_a_valid_JWT_token"), (String)null, (String)null); - return result; - } - - //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) - .build() - .parseClaimsJws(jwt_a); + if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) + { + result=createStrJSONError(10000,trt.trt("Please_send_a_valid_JWT_token"), (String)null, (String)null); + return result; + } + + //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) + .build() + .parseClaimsJws(jwt_a); + } catch (Exception e) { + return createStrJSONError(10000, trt.trt("JWT_token_verification_error"),(String)null,(String)null); + } + String sql = """ + select + name + from + main.get_access_list(:user_id) + where + allow=true + and (:action_name::text is null or name ilike '%'|| :action_name::text ||'%') + order by name + """; + + + MapSqlParameterSource parameters = new MapSqlParameterSource(); + parameters.addValue("user_id", claims.getBody().get("user_id")); + if(action_name == null) + parameters.addValue("action_name", null); + else + parameters.addValue("action_name", action_name.getActionName()); + 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")); + } + json.put("data",data); + result = json.toString(); } catch (Exception e) { - return createStrJSONError(10000, trt.trt("JWT_token_verification_error"),(String)null,(String)null); + String uuid = UUID.randomUUID().toString(); + logger.error(uuid,e); + result=createStrJSONError(10000,trt.trt("Internal_Server_Error"), (String)null, uuid); } - String sql = """ - select - name - from - main.get_access_list(:user_id) - where - allow=true - and (:action_name::text is null or name ilike '%'|| :action_name::text ||'%') - order by name - """; - - - MapSqlParameterSource parameters = new MapSqlParameterSource(); - parameters.addValue("user_id", claims.getBody().get("user_id")); - if(action_name == null) - parameters.addValue("action_name", null); - else - parameters.addValue("action_name", action_name.getActionName()); - 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")); - } - json.put("data",data); - result = json.toString(); - return result; } @@ -481,9 +499,10 @@ public class MainController implements ServletContextAware { public String captcha(Model model, @RequestBody EmailModel email_model, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { Translation trt = new Translation(language_id,jdbcTemplate); JSONObject json = new JSONObject(); - json.put("error_code",0); - json.put("error_message",""); try{ + json.put("error_code",0); + json.put("error_message",""); + //Генерю Captcha ImageCaptcha imageCaptcha = new ImageCaptcha.Builder(400, 100) .addContent(new LatinContentProducer(7), @@ -532,9 +551,10 @@ public class MainController implements ServletContextAware { public String create(@RequestBody NewUserModel newUserModel,@RequestParam(required=false,name="lng",defaultValue="1") String language_id) { Translation trt = new Translation(language_id,jdbcTemplate); JSONObject json = new JSONObject(); - json.put("error_code",0); - json.put("error_message",""); try{ + json.put("error_code",0); + json.put("error_message",""); + if(newUserModel.getName().length()<3) { throw new CustomException(10000, trt.trt("The_name_field_is_empty"),null); } @@ -665,9 +685,10 @@ public class MainController implements ServletContextAware { public String info(Model model, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @CookieValue(value = "lng",defaultValue="1") String language_id) { Translation trt = new Translation(language_id,jdbcTemplate); JSONObject json = new JSONObject(); - json.put("error_code",0); - json.put("error_message",""); try { + json.put("error_code",0); + json.put("error_message",""); + if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) { throw new CustomException(10000, trt.trt("Please_send_a_valid_JWT_token"),null); @@ -733,9 +754,10 @@ public class MainController implements ServletContextAware { Translation trt = new Translation(language_id,jdbcTemplate); JSONObject json = new JSONObject(); - json.put("error_code",0); - json.put("error_message",""); try { + json.put("error_code",0); + json.put("error_message",""); + if(loginModel.getLogin().isEmpty()) throw new CustomException(10000,trt.trt("The_login_field_is_empty"),null); if(!Tools.isValidEmail(loginModel.getLogin())) @@ -1032,6 +1054,10 @@ public class MainController implements ServletContextAware { java.lang.String uuid = UUID.randomUUID().toString(); logger.error("Error executing SQL query", uuid, ex); throw new CustomException(10000, trt.trt("Error_executing_SQL_query"),uuid); + }catch (Exception e) { + String uuid = UUID.randomUUID().toString(); + logger.error(uuid,e); + throw new CustomException(10000, trt.trt("Internal_Server_Error"),uuid); } Map result = new HashMap<>(); @@ -1047,9 +1073,10 @@ public class MainController implements ServletContextAware { public String newtotp(HttpServletRequest request, @RequestBody LoginModel loginModel, @RequestParam(required=false,name="lng",defaultValue="1") String language_id) { Translation trt = new Translation(language_id,jdbcTemplate); JSONObject json = new JSONObject(); - json.put("error_code",0); - json.put("error_message",""); try { + json.put("error_code",0); + json.put("error_message",""); + if(loginModel.getLogin().isEmpty()) throw new CustomException(10000,trt.trt("The_login_field_is_empty"),null); if(!Tools.isValidEmail(loginModel.getLogin())) @@ -1219,9 +1246,9 @@ public class MainController implements ServletContextAware { Translation trt = new Translation(language_id,jdbcTemplate); JSONObject json = new JSONObject(); - json.put("error_code",0); - json.put("error_message",""); try { + json.put("error_code",0); + json.put("error_message",""); if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2 || jwt_r.equals("") || countOccurrences(jwt_r, '.')!=2 ) { @@ -1317,50 +1344,53 @@ public class MainController implements ServletContextAware { Translation trt = new Translation(language_id,jdbcTemplate); String result=createHTMLError(1,trt.trt("Request_not_processed")); + try { + int index = token.indexOf("."); + if (index < 0) + return createHTMLError(10000, trt.trt("Please_send_a_valid_token")); - int index = token.indexOf("."); - if(index<0) - return createHTMLError(10000,trt.trt("Please_send_a_valid_token")); + String payload = token.substring(0, index); + String signature1 = token.substring(index + 1); - String payload = token.substring(0, index); - String signature1 = token.substring(index+1); + String signature2 = Tools.generateSignature(captchaKey, payload); + if (!signature1.equals(signature2)) { + return createHTMLError(1, trt.trt("The_signature_did_not_match")); + } - String signature2 = Tools.generateSignature(captchaKey,payload); - if(! signature1.equals(signature2)) - { - return createHTMLError(1,trt.trt("The_signature_did_not_match")); + //расшифровываю + JSONObject jToken = new JSONObject(Tools.decryptText(captchaKey, payload)); + if (jToken == null) + return createHTMLError(10000, trt.trt("Please_send_a_valid_JSON_string_in_your_token")); + if (jToken.getLong("exp") < Instant.now().getEpochSecond()) { + return createHTMLError(10000, trt.trt("Captcha_is_outdated")); + } + if (!Tools.isValidEmail(jToken.getString("email"))) { + return createHTMLError(10000, trt.trt("The_email_field_is_incorrect")); + } + + //Проверяю на то что не нажали много раз на востановление пароля + long id = 0; + String sql = "select id from main._users where del=false and password_new=:password_new and email=:email"; + MapSqlParameterSource parameters = new MapSqlParameterSource(); + parameters.addValue("password_new", jToken.getString("password")); + parameters.addValue("email", jToken.getString("email")); + List ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); + for (int i = 0; i < ret.size(); i++) { + id = (new JSONObject(ret.get(i))).getLong("id"); + } + if (id == 0) + return createHTMLError(10000, trt.trt("The_password_update_request_has_expired")); + + //Теперь обновляем пароль в базе + sql = "update main._users set password=crypt(password_new, gen_salt('bf')),password_new = null,expiration='1970-01-01' where password_new is not null and email=:email"; + parameters = new MapSqlParameterSource(); + parameters.addValue("email", jToken.getString("email")); + int cnt = jdbcTemplate.update(sql, parameters); + } catch (Exception e) { + String uuid = UUID.randomUUID().toString(); + logger.error(uuid,e); + return createHTMLError(10000,trt.trt("Internal_Server_Error")); } - - //расшифровываю - JSONObject jToken = new JSONObject(Tools.decryptText(captchaKey,payload)); - if(jToken==null) - return createHTMLError(10000,trt.trt("Please_send_a_valid_JSON_string_in_your_token")); - if(jToken.getLong("exp") ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); - for (int i = 0; i < ret.size(); i++) { - id = (new JSONObject(ret.get(i))).getLong("id"); - } - if(id==0) - return createHTMLError(10000, trt.trt("The_password_update_request_has_expired")); - - //Теперь обновляем пароль в базе - sql = "update main._users set password=crypt(password_new, gen_salt('bf')),password_new = null,expiration='1970-01-01' where password_new is not null and email=:email"; - parameters = new MapSqlParameterSource(); - parameters.addValue("email", jToken.getString("email")); - int cnt = jdbcTemplate.update(sql, parameters); - return createHTMLError(0,trt.trt("The_password_has_been_changed_and_you_will_be_redirected_to_the_main_page")); } @@ -1369,91 +1399,96 @@ public class MainController implements ServletContextAware { public String restore(Model model, @RequestBody RestoreModel restore, @RequestParam(required=false,name="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); - //Connection conn = getConnection(); + try{ + //Connection conn = getConnection(); - int index = restore.getToken().indexOf("."); - String payload = restore.getToken().substring(0, index); - String signature1 = restore.getToken().substring(index+1); + int index = restore.getToken().indexOf("."); + String payload = restore.getToken().substring(0, index); + String signature1 = restore.getToken().substring(index+1); - System.out.println("signature1: " + signature1); - System.out.println("payload: " + payload); + System.out.println("signature1: " + signature1); + System.out.println("payload: " + payload); - String signature2 = Tools.generateSignature(captchaKey,payload); - if(! signature1.equals(signature2)) - { - result=createStrJSONError(10000,trt.trt("The_signature_did_not_match"), (String)null, (String)null); - } + String signature2 = Tools.generateSignature(captchaKey,payload); + if(! signature1.equals(signature2)) + { + result=createStrJSONError(10000,trt.trt("The_signature_did_not_match"), (String)null, (String)null); + } - System.out.println("signature2: " + signature2); + System.out.println("signature2: " + signature2); - //расшифровываю - JSONObject token = new JSONObject(Tools.decryptText(captchaKey,payload)); + //расшифровываю + JSONObject token = new JSONObject(Tools.decryptText(captchaKey,payload)); - if(token==null) - return createStrJSONError(10000,trt.trt("Please_send_a_valid_JSON_string_in_your_token"), (String)null,(String)null); - if(!restore.getCode().equals(token.getString("code"))){ - return createStrJSONError(10000,trt.trt("The_code_did_not_match"),(String)null,(String)null); - } + if(token==null) + return createStrJSONError(10000,trt.trt("Please_send_a_valid_JSON_string_in_your_token"), (String)null,(String)null); + if(!restore.getCode().equals(token.getString("code"))){ + return createStrJSONError(10000,trt.trt("The_code_did_not_match"),(String)null,(String)null); + } - if(token.getLong("exp") ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); - for (int i = 0; i < ret.size(); i++) { - id = (new JSONObject(ret.get(i))).getLong("id"); - } - if(id==0) - return createStrJSONError(10000, trt.trt("User_with_this_email_was_not_found"),(String)null,(String)null); + //Проверяю есть ли в базе пользователь если есть отправляю ему почту для востановления + long id=0; + String sql = "select id from main._users where del=false and email=:email"; + MapSqlParameterSource parameters = new MapSqlParameterSource(); + parameters.addValue("email", token.getString("email")); + List ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); + for (int i = 0; i < ret.size(); i++) { + id = (new JSONObject(ret.get(i))).getLong("id"); + } + if(id==0) + return createStrJSONError(10000, trt.trt("User_with_this_email_was_not_found"),(String)null,(String)null); - String password_new = Tools.generatePassword(6); + String password_new = Tools.generatePassword(6); - sql = "update main._users set password_new=:password_new where email=:email"; - parameters = new MapSqlParameterSource(); - parameters.addValue("password_new", password_new); - parameters.addValue("email", token.getString("email")); - int cnt = jdbcTemplate.update(sql, parameters); + sql = "update main._users set password_new=:password_new where email=:email"; + parameters = new MapSqlParameterSource(); + parameters.addValue("password_new", password_new); + parameters.addValue("email", token.getString("email")); + int cnt = jdbcTemplate.update(sql, parameters); - //Создаю новый токен, кодирую, шифрую, подписываю и затем отправляю на почту - JSONObject jTokenNew = new JSONObject(); - jTokenNew.put("exp", Instant.now().getEpochSecond()+(60*60)); //+60 минут - jTokenNew.put("password",password_new); - jTokenNew.put("email",token.getString("email")); - String token_new = jTokenNew.toString(); - token_new = Tools.encryptText(captchaKey,token_new); - token_new = token_new+"."+Tools.generateSignature(captchaKey, token_new); //Подпись для как бы токена + //Создаю новый токен, кодирую, шифрую, подписываю и затем отправляю на почту + JSONObject jTokenNew = new JSONObject(); + jTokenNew.put("exp", Instant.now().getEpochSecond()+(60*60)); //+60 минут + jTokenNew.put("password",password_new); + jTokenNew.put("email",token.getString("email")); + String token_new = jTokenNew.toString(); + token_new = Tools.encryptText(captchaKey,token_new); + token_new = token_new+"."+Tools.generateSignature(captchaKey, token_new); //Подпись для как бы токена - //token_new = token_new.replace("+", "-") - // .replace("/", "_") - // .replace("=", "^"); //Убираем спец символы для передачи через URL - try { - token_new = URLEncoder.encode(token_new, StandardCharsets.UTF_8.toString()); - } catch (UnsupportedEncodingException e) { - return createStrJSONError(10000, trt.trt("Internal_Server_Error"), (String)null, (String)null); - } + //token_new = token_new.replace("+", "-") + // .replace("/", "_") + // .replace("=", "^"); //Убираем спец символы для передачи через URL + try { + token_new = URLEncoder.encode(token_new, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException e) { + return createStrJSONError(10000, trt.trt("Internal_Server_Error"), (String)null, (String)null); + } - //Формирую ссылку для отправки на почту для сброса пароля - String html = ""+trt.trt("Password_recovery")+""; - html += "

"+trt.trt("To_reset_your_password_click_on_the_link")+":

"; - html += ""+trt.trt("Reset_the_password")+"

"; - html += trt.trt("After_clicking_on_the_link_the_new_password_will_be")+": \"" + password_new + "\""; - html += ""; - try { - EmailUtility.sendEmail(mail_host, mail_port, mail_login, mail_password, token.getString("email"), trt.trt("Password_recovery"), html); - } catch (Exception ex) { + //Формирую ссылку для отправки на почту для сброса пароля + String html = ""+trt.trt("Password_recovery")+""; + html += "

"+trt.trt("To_reset_your_password_click_on_the_link")+":

"; + html += ""+trt.trt("Reset_the_password")+"

"; + html += trt.trt("After_clicking_on_the_link_the_new_password_will_be")+": \"" + password_new + "\""; + html += ""; + try { + EmailUtility.sendEmail(mail_host, mail_port, mail_login, mail_password, token.getString("email"), trt.trt("Password_recovery"), html); + } catch (Exception ex) { + String uuid = UUID.randomUUID().toString(); + logger.error(uuid, ex); + return createStrJSONError(10000,trt.trt("Failed_send_mail_to_s"), token.getString("email"),uuid); + } + } catch (Exception e) { String uuid = UUID.randomUUID().toString(); - logger.error(uuid, ex); - return createStrJSONError(10000,trt.trt("Failed_send_mail_to_s"), token.getString("email"),uuid); + logger.error(uuid,e); + return createStrJSONError(10000,trt.trt("Internal_Server_Error"), (String)null,uuid); } return createStrJSONError(0, trt.trt("A_recovery_link_has_been_sent_to_your_email"),(String)null,(String)null); } @@ -1464,9 +1499,10 @@ public class MainController implements ServletContextAware { Translation trt = new Translation(language_id,jdbcTemplate); JSONObject json = new JSONObject(); - json.put("error_code",0); - json.put("error_message",""); try { + json.put("error_code",0); + json.put("error_message",""); + if(update==null) throw new CustomException(10000,trt.trt("Please_send_a_valid_JSON_string_in_your_request"),null); if(update.getLogin().equals("")) @@ -1547,6 +1583,10 @@ public class MainController implements ServletContextAware { } catch (CustomException e) { json = e.getJson(); + } catch (Exception e) { + String uuid = UUID.randomUUID().toString(); + logger.error(uuid,e); + return createStrJSONError(10000,trt.trt("Internal_Server_Error"), (String)null,uuid); } finally { } return json.toString(); diff --git a/src/main/java/org/ccalm/jwt/tools/CustomException.java b/src/main/java/org/ccalm/jwt/tools/CustomException.java index 5c7612c..2cfcba7 100644 --- a/src/main/java/org/ccalm/jwt/tools/CustomException.java +++ b/src/main/java/org/ccalm/jwt/tools/CustomException.java @@ -1,11 +1,15 @@ package org.ccalm.jwt.tools; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.json.JSONException; import org.json.JSONObject; import java.util.Arrays; import java.util.List; public class CustomException extends Exception { + private static final Logger logger = LogManager.getLogger(CustomException.class); private int errorCode; private String marker; private List errorMessages; @@ -59,10 +63,14 @@ public class CustomException extends Exception { public JSONObject getJson() { JSONObject json = new JSONObject(); - json.put("error_code", this.getErrorCode()); - json.put("error_message", this.getErrorMessages()); - json.put("error_setting", this.getErrorSettings()); - json.put("error_marker", this.getErrorMarker()); + try { + json.put("error_code", this.getErrorCode()); + json.put("error_message", this.getErrorMessages()); + json.put("error_setting", this.getErrorSettings()); + json.put("error_marker", this.getErrorMarker()); + } catch (JSONException e) { + logger.error("Error", e); + } return json; } } diff --git a/src/main/java/org/ccalm/jwt/tools/Storage.java b/src/main/java/org/ccalm/jwt/tools/Storage.java index 3019fcc..587ec46 100644 --- a/src/main/java/org/ccalm/jwt/tools/Storage.java +++ b/src/main/java/org/ccalm/jwt/tools/Storage.java @@ -80,6 +80,8 @@ public class Storage implements AutoCloseable { } } catch (SQLException e) { logger.error("An error occurred", e); + } catch (Exception e) { + logger.error("An error occurred", e); } return result; }