Skip to content

Commit 8f6c8c6

Browse files
feature : can inject error messages from outside
1 parent bfaf16c commit 8f6c8c6

File tree

26 files changed

+198
-108
lines changed

26 files changed

+198
-108
lines changed

client/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
77
<modelVersion>4.0.0</modelVersion>
88
<groupId>com.patternknife.securityhelper.oauth2.client</groupId>
99
<artifactId>spring-security-oauth2-password-jpa-implementation-client</artifactId>
10-
<version>2.2.0</version>
10+
<version>2.3.0</version>
1111
<packaging>jar</packaging>
1212

1313
<properties>
@@ -41,7 +41,7 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
4141
<dependency>
4242
<groupId>com.patternknife.securityhelper.oauth2.api</groupId>
4343
<artifactId>spring-security-oauth2-password-jpa-implementation</artifactId>
44-
<version>2.2.0</version>
44+
<version>2.3.0</version>
4545
</dependency>
4646

4747
<!-- DB -->

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/response/error/GlobalExceptionHandler.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.patternknife.securityhelper.oauth2.client.config.response.error;
22

33

4-
import com.patternknife.securityhelper.oauth2.api.config.response.error.dto.ErrorResponsePayload;
5-
import com.patternknife.securityhelper.oauth2.api.config.response.error.exception.auth.KnifeOauth2AuthenticationException;
6-
import com.patternknife.securityhelper.oauth2.api.config.response.error.message.SecurityUserExceptionMessage;
74
import com.patternknife.securityhelper.oauth2.client.config.response.error.dto.CustomErrorResponsePayload;
85
import com.patternknife.securityhelper.oauth2.client.config.response.error.exception.auth.*;
96
import com.patternknife.securityhelper.oauth2.client.config.response.error.exception.data.*;
@@ -13,18 +10,9 @@
1310
import com.patternknife.securityhelper.oauth2.client.config.response.error.message.GeneralErrorMessage;
1411
import jakarta.servlet.http.HttpServletRequest;
1512
import jakarta.validation.ConstraintViolationException;
16-
import org.springframework.core.Ordered;
17-
import org.springframework.core.annotation.Order;
1813
import org.springframework.http.HttpStatus;
1914
import org.springframework.http.ResponseEntity;
2015
import org.springframework.http.converter.HttpMessageNotReadableException;
21-
import org.springframework.security.access.AccessDeniedException;
22-
import org.springframework.security.authentication.BadCredentialsException;
23-
import org.springframework.security.authentication.DisabledException;
24-
import org.springframework.security.authentication.InsufficientAuthenticationException;
25-
import org.springframework.security.core.AuthenticationException;
26-
import org.springframework.security.core.userdetails.UsernameNotFoundException;
27-
import org.springframework.transaction.HeuristicCompletionException;
2816
import org.springframework.validation.BindException;
2917
import org.springframework.validation.FieldError;
3018
import org.springframework.web.bind.MethodArgumentNotValidException;

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/response/error/exception/util/EncodingProcessException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.patternknife.securityhelper.oauth2.client.config.response.error.exception.util;
22

3-
import com.patternknife.securityhelper.oauth2.client.config.response.error.message.ExceptionMessageInterface;
3+
import com.patternknife.securityhelper.oauth2.api.config.security.message.ExceptionMessageInterface;
44
import org.springframework.http.HttpStatus;
55
import org.springframework.web.bind.annotation.ResponseStatus;
66

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/response/error/message/ExceptionMessageInterface.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/response/error/message/GeneralErrorMessage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.patternknife.securityhelper.oauth2.client.config.response.error.message;
22

3+
import com.patternknife.securityhelper.oauth2.api.config.security.message.ExceptionMessageInterface;
34
import lombok.Getter;
45
import org.springframework.http.HttpStatus;
56

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.patternknife.securityhelper.oauth2.client.config.securityimpl.message;
2+
3+
import com.patternknife.securityhelper.oauth2.api.config.security.message.ExceptionMessageInterface;
4+
5+
public enum CustomSecurityUserExceptionMessage implements ExceptionMessageInterface {
6+
7+
AUTHENTICATION_LOGIN_FAILURE("1Authentication information is not valid. Please check and try again."),
8+
AUTHENTICATION_LOGIN_ERROR("1An error occurred during authentication. If the problem persists, please contact customer service."),
9+
AUTHENTICATION_TOKEN_FAILURE("1The authentication token has expired. Please log in again."),
10+
AUTHENTICATION_TOKEN_ERROR("1There was a problem verifying the authentication token. Please log in again."),
11+
AUTHORIZATION_FAILURE("1You do not have access permissions. Please request this from the administrator."),
12+
AUTHORIZATION_ERROR("1An error occurred with access permissions. If the problem persists, please contact customer service."),
13+
14+
// ID PASSWORD
15+
AUTHENTICATION_ID_NO_EXISTS("1The specified ID does not exist."),
16+
AUTHENTICATION_WRONG_ID_PASSWORD("1User information could not be verified. Please check your ID or password. If the problem persists, please contact customer service."),
17+
AUTHENTICATION_PASSWORD_FAILED_EXCEEDED("1The number of password attempts has been exceeded."),
18+
19+
// CLIENT ID, SECRET
20+
AUTHENTICATION_WRONG_CLIENT_ID_SECRET("1Client information is not verified."),
21+
22+
// GRANT TYPE
23+
AUTHENTICATION_WRONG_GRANT_TYPE("1Wrong Grant Type detected.");
24+
25+
private String message;
26+
27+
@Override
28+
public String getMessage() {
29+
return message;
30+
}
31+
32+
CustomSecurityUserExceptionMessage(String message) {
33+
this.message = message;
34+
}
35+
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.patternknife.securityhelper.oauth2.client.config.securityimpl.message;
2+
3+
4+
import com.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
5+
import com.patternknife.securityhelper.oauth2.api.config.security.message.ISecurityUserExceptionMessageService;
6+
import org.springframework.context.annotation.Configuration;
7+
8+
@Configuration
9+
public class SecurityMessageServiceImpl implements ISecurityUserExceptionMessageService {
10+
11+
@Override
12+
public String getUserMessage(DefaultSecurityUserExceptionMessage defaultSecurityUserExceptionMessage) {
13+
try {
14+
CustomSecurityUserExceptionMessage customMessage = CustomSecurityUserExceptionMessage.valueOf(defaultSecurityUserExceptionMessage.name());
15+
return customMessage.getMessage();
16+
} catch (IllegalArgumentException e) {
17+
return defaultSecurityUserExceptionMessage.getMessage();
18+
}
19+
}
20+
21+
}

client/src/main/java/com/patternknife/securityhelper/oauth2/client/domain/admin/exception/PasswordFailedExceededOauth2AuthenticationException.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import com.patternknife.securityhelper.oauth2.api.config.response.error.dto.ErrorMessages;
44
import com.patternknife.securityhelper.oauth2.api.config.response.error.exception.auth.KnifeOauth2AuthenticationException;
5-
import com.patternknife.securityhelper.oauth2.api.config.response.error.message.SecurityUserExceptionMessage;
5+
import com.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
66

77
public class PasswordFailedExceededOauth2AuthenticationException extends KnifeOauth2AuthenticationException {
88
public PasswordFailedExceededOauth2AuthenticationException() {
9-
super(SecurityUserExceptionMessage.AUTHENTICATION_PASSWORD_FAILED_EXCEEDED.getMessage());
9+
super(DefaultSecurityUserExceptionMessage.AUTHENTICATION_PASSWORD_FAILED_EXCEEDED.getMessage());
1010
}
1111

1212
public PasswordFailedExceededOauth2AuthenticationException(String message) {

client/src/main/java/com/patternknife/securityhelper/oauth2/client/domain/traditionaloauth/api/v1/TraditionalOauthApi.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33

44
import com.patternknife.securityhelper.oauth2.api.config.response.error.exception.auth.KnifeOauth2AuthenticationException;
5-
import com.patternknife.securityhelper.oauth2.api.config.response.error.message.SecurityUserExceptionMessage;
5+
import com.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
66

7+
import com.patternknife.securityhelper.oauth2.api.config.security.message.ISecurityUserExceptionMessageService;
78
import com.patternknife.securityhelper.oauth2.api.domain.traditionaloauth.dto.SpringSecurityTraditionalOauthDTO;
89
import com.patternknife.securityhelper.oauth2.api.domain.traditionaloauth.service.TraditionalOauthService;
910
import lombok.RequiredArgsConstructor;
@@ -17,18 +18,19 @@
1718
public class TraditionalOauthApi {
1819

1920
private final TraditionalOauthService traditionalOauthService;
21+
private final ISecurityUserExceptionMessageService iSecurityUserExceptionMessageService;
2022

2123
@PostMapping("/traditional-oauth/token")
2224
public SpringSecurityTraditionalOauthDTO.TokenResponse createAccessToken(
2325
@ModelAttribute SpringSecurityTraditionalOauthDTO.TokenRequest tokenRequest,
24-
@RequestHeader("Authorization") String authorizationHeader) throws IOException {
26+
@RequestHeader("Authorization") String authorizationHeader){
2527
switch(tokenRequest.getGrant_type()) {
2628
case "password":
2729
return traditionalOauthService.createAccessToken(tokenRequest, authorizationHeader);
2830
case "refresh_token":
2931
return traditionalOauthService.refreshAccessToken(tokenRequest, authorizationHeader);
3032
default:
31-
throw new KnifeOauth2AuthenticationException(SecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE.getMessage());
33+
throw new KnifeOauth2AuthenticationException(iSecurityUserExceptionMessageService.getUserMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE));
3234
}
3335
}
3436

client/src/test/java/com/patternknife/securityhelper/oauth2/client/integration/auth/CustomerIntegrationTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.patternknife.securityhelper.oauth2.client.integration.auth;
22

33

4-
import com.patternknife.securityhelper.oauth2.api.config.response.error.message.SecurityUserExceptionMessage;
54
import com.patternknife.securityhelper.oauth2.api.config.security.KnifeHttpHeaders;
5+
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.message.CustomSecurityUserExceptionMessage;
66
import jakarta.xml.bind.DatatypeConverter;
77
import lombok.SneakyThrows;
88
import org.codehaus.jackson.map.ObjectMapper;
@@ -470,7 +470,7 @@ public void testLoginWithInvalidCredentials_ORIGINAL() throws Exception {
470470
JSONObject jsonResponse = new JSONObject(responseString);
471471
String userMessage = jsonResponse.getString("userMessage");
472472

473-
assertEquals(userMessage, SecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE.getMessage());
473+
assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE.getMessage());
474474

475475

476476

@@ -500,7 +500,7 @@ public void testLoginWithInvalidCredentials_ORIGINAL() throws Exception {
500500
jsonResponse = new JSONObject(responseString);
501501
userMessage = jsonResponse.getString("userMessage");
502502

503-
assertEquals(userMessage, SecurityUserExceptionMessage.AUTHENTICATION_WRONG_CLIENT_ID_SECRET.getMessage());
503+
assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_WRONG_CLIENT_ID_SECRET.getMessage());
504504

505505

506506

@@ -530,7 +530,7 @@ public void testLoginWithInvalidCredentials_ORIGINAL() throws Exception {
530530
jsonResponse = new JSONObject(responseString);
531531
userMessage = jsonResponse.getString("userMessage");
532532

533-
assertEquals(userMessage, SecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE.getMessage());
533+
assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE.getMessage());
534534
}
535535

536536

@@ -563,7 +563,7 @@ public void testLoginWithInvalidCredentials_EXPOSE() throws Exception {
563563
JSONObject jsonResponse = new JSONObject(responseString);
564564
String userMessage = jsonResponse.getString("userMessage");
565565

566-
assertEquals(userMessage, SecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE.getMessage());
566+
assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE.getMessage());
567567

568568

569569

@@ -593,7 +593,7 @@ public void testLoginWithInvalidCredentials_EXPOSE() throws Exception {
593593
jsonResponse = new JSONObject(responseString);
594594
userMessage = jsonResponse.getString("userMessage");
595595

596-
assertEquals(userMessage, SecurityUserExceptionMessage.AUTHENTICATION_WRONG_CLIENT_ID_SECRET.getMessage());
596+
assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_WRONG_CLIENT_ID_SECRET.getMessage());
597597

598598

599599
result = mockMvc.perform(RestDocumentationRequestBuilders.post("/api/v1/traditional-oauth/token")
@@ -622,7 +622,7 @@ public void testLoginWithInvalidCredentials_EXPOSE() throws Exception {
622622
jsonResponse = new JSONObject(responseString);
623623
userMessage = jsonResponse.getString("userMessage");
624624

625-
assertEquals(userMessage, SecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE.getMessage());
625+
assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE.getMessage());
626626
}
627627

628628

0 commit comments

Comments
 (0)