Skip to content

Commit 2235a3a

Browse files
Improve KnifeErrorMessages && UserNameNotFoundException Message Management
1) Renamed ErrorMessages to KnifeErrorMessages, now capable of holding the UserDetails object. 2) The displayed message (userMessage) of UserNameNotFoundException is exclusively managed by the UserDetailsService implementation.
1 parent c72d9a9 commit 2235a3a

File tree

16 files changed

+77
-93
lines changed

16 files changed

+77
-93
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.patternknife.securityhelper.oauth2.client.config.response.error.exception;
22

3-
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.ErrorMessages;
3+
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.KnifeErrorMessages;
44

55
public abstract class ErrorMessagesContainedException extends RuntimeException {
66

7-
protected ErrorMessages errorMessages;
7+
protected KnifeErrorMessages knifeErrorMessages;
88

99
public ErrorMessagesContainedException(){
1010

@@ -15,10 +15,10 @@ public ErrorMessagesContainedException(String message){
1515
public ErrorMessagesContainedException(String message, Throwable cause) {
1616
super(message, cause);
1717
}
18-
public ErrorMessagesContainedException(ErrorMessages errorMessages){
19-
this.errorMessages = errorMessages;
18+
public ErrorMessagesContainedException(KnifeErrorMessages knifeErrorMessages){
19+
this.knifeErrorMessages = knifeErrorMessages;
2020
}
21-
public ErrorMessages getErrorMessages() {
22-
return errorMessages;
21+
public KnifeErrorMessages getErrorMessages() {
22+
return knifeErrorMessages;
2323
}
2424
}

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/response/error/exception/data/ResourceNotFoundException.java

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

3-
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.ErrorMessages;
3+
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.KnifeErrorMessages;
44
import com.patternknife.securityhelper.oauth2.client.config.response.error.exception.ErrorMessagesContainedException;
55
import org.springframework.http.HttpStatus;
66
import org.springframework.web.bind.annotation.ResponseStatus;
@@ -18,7 +18,7 @@ public ResourceNotFoundException(String message, Throwable cause) {
1818
super(message, cause);
1919
}
2020

21-
public ResourceNotFoundException(ErrorMessages errorMessages) {
22-
super(errorMessages);
21+
public ResourceNotFoundException(KnifeErrorMessages knifeErrorMessages) {
22+
super(knifeErrorMessages);
2323
}
2424
}

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/securityimpl/response/CustomAuthenticationSuccessHandlerImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
55
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.ISecurityUserExceptionMessageService;
6-
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.ErrorMessages;
6+
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.KnifeErrorMessages;
77
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.exception.KnifeOauth2AuthenticationException;
88
import jakarta.servlet.http.HttpServletRequest;
99
import jakarta.servlet.http.HttpServletResponse;
@@ -16,7 +16,6 @@
1616
import org.springframework.security.oauth2.core.OAuth2AccessToken;
1717
import org.springframework.security.oauth2.core.OAuth2RefreshToken;
1818
import org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse;
19-
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationResponse;
2019
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
2120
import org.springframework.security.oauth2.core.http.converter.OAuth2AccessTokenResponseHttpMessageConverter;
2221
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AccessTokenAuthenticationToken;
@@ -88,7 +87,7 @@ public void onAuthenticationSuccess(final HttpServletRequest request, final Http
8887
response.getWriter().write(jsonResponse);
8988

9089
} else {
91-
throw new KnifeOauth2AuthenticationException(ErrorMessages.builder()
90+
throw new KnifeOauth2AuthenticationException(KnifeErrorMessages.builder()
9291
.message("Wrong grant type from Req : " + (String) additionalParameters.get("grant_type"))
9392
.userMessage(iSecurityUserExceptionMessageService.getUserMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE))
9493
.build());

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.patternknife.securityhelper.oauth2.client.domain.admin.exception;
22

3-
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.ErrorMessages;
3+
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.KnifeErrorMessages;
44
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.exception.KnifeOauth2AuthenticationException;
55
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
66

@@ -13,7 +13,7 @@ public PasswordFailedExceededOauth2AuthenticationException(String message) {
1313
super(message);
1414
}
1515

16-
public PasswordFailedExceededOauth2AuthenticationException(ErrorMessages errorMessages) {
17-
super(errorMessages);
16+
public PasswordFailedExceededOauth2AuthenticationException(KnifeErrorMessages knifeErrorMessages) {
17+
super(knifeErrorMessages);
1818
}
1919
}

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -476,8 +476,8 @@ public void testLoginWithInvalidCredentials_ORIGINAL() throws Exception {
476476
JSONObject jsonResponse = new JSONObject(responseString);
477477
String userMessage = jsonResponse.getString("userMessage");
478478

479-
assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE.getMessage());
480-
479+
//assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE.getMessage());
480+
assertTrue(userMessage.contains("NOT Found"));
481481

482482

483483
result = mockMvc.perform(RestDocumentationRequestBuilders.post("/oauth2/token")
@@ -569,9 +569,8 @@ public void testLoginWithInvalidCredentials_EXPOSE() throws Exception {
569569
JSONObject jsonResponse = new JSONObject(responseString);
570570
String userMessage = jsonResponse.getString("userMessage");
571571

572-
assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE.getMessage());
573-
574-
572+
// assertEquals(userMessage, CustomSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE.getMessage());
573+
assertTrue(userMessage.contains("NOT Found"));
575574

576575
result = mockMvc.perform(RestDocumentationRequestBuilders.post("/api/v1/traditional-oauth/token")
577576
.header(HttpHeaders.AUTHORIZATION, "Basic " + DatatypeConverter.printBase64Binary((appUserClientId + "wrongcred:" + appUserClientSecret).getBytes("UTF-8")))

lib/src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/provider/auth/endpoint/KnifeOauth2AuthenticationProvider.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.exception.KnifeOauth2AuthenticationException;
55
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.userdetail.ConditionalDetailsService;
6-
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.ErrorMessages;
6+
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.KnifeErrorMessages;
77
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
88
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.ISecurityUserExceptionMessageService;
99
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.CommonOAuth2AuthorizationSaver;
@@ -24,7 +24,6 @@
2424
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationCode;
2525
import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
2626
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AccessTokenAuthenticationToken;
27-
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationCodeAuthenticationToken;
2827
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2ClientAuthenticationToken;
2928
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
3029

@@ -138,11 +137,11 @@ else if (((String) knifeGrantAuthenticationToken.getAdditionalParameters().get("
138137
throw new KnifeOauth2AuthenticationException();
139138
}
140139
}catch (UsernameNotFoundException e){
141-
throw new KnifeOauth2AuthenticationException(ErrorMessages.builder().message(e.getMessage()).userMessage(iSecurityUserExceptionMessageService.getUserMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE)).build());
140+
throw new KnifeOauth2AuthenticationException(KnifeErrorMessages.builder().message(e.getMessage()).userMessage(e.getMessage()).build());
142141
}catch (KnifeOauth2AuthenticationException e){
143142
throw e;
144143
} catch (Exception e){
145-
throw new KnifeOauth2AuthenticationException(ErrorMessages.builder().message(e.getMessage()).userMessage(iSecurityUserExceptionMessageService.getUserMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_ERROR)).build());
144+
throw new KnifeOauth2AuthenticationException(KnifeErrorMessages.builder().message(e.getMessage()).userMessage(iSecurityUserExceptionMessageService.getUserMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_ERROR)).build());
146145
}
147146

148147
}

lib/src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/response/auth/authentication/DefaultAuthenticationSuccessHandlerImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.github.patternknife.securityhelper.oauth2.api.config.security.response.auth.authentication;
22

33

4-
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.ErrorMessages;
4+
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.KnifeErrorMessages;
55
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.exception.KnifeOauth2AuthenticationException;
66
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
77
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.ISecurityUserExceptionMessageService;
@@ -64,7 +64,7 @@ public void onAuthenticationSuccess(final HttpServletRequest request, final Http
6464
builder.expiresIn(ChronoUnit.SECONDS.between(Instant.now(), refreshToken.getExpiresAt()));
6565
}
6666
}else{
67-
throw new KnifeOauth2AuthenticationException(ErrorMessages.builder().message("Wrong grant type from Req : " + (String)additionalParameters.get("grant_type")).userMessage(iSecurityUserExceptionMessageService.getUserMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE)).build());
67+
throw new KnifeOauth2AuthenticationException(KnifeErrorMessages.builder().message("Wrong grant type from Req : " + (String)additionalParameters.get("grant_type")).userMessage(iSecurityUserExceptionMessageService.getUserMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_WRONG_GRANT_TYPE)).build());
6868
}
6969

7070

lib/src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/response/error/dto/ErrorMessages.java

Lines changed: 0 additions & 33 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto;
2+
3+
import lombok.*;
4+
import org.springframework.security.core.userdetails.UserDetails;
5+
6+
import java.util.Map;
7+
8+
@Getter
9+
@Setter
10+
@ToString
11+
@Builder
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
public class KnifeErrorMessages {
15+
16+
private String message;
17+
private String userMessage;
18+
private Map<String, String> userValidationMessage;
19+
private UserDetails userDetails;
20+
21+
}

lib/src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/response/error/dto/SecurityKnifeErrorResponsePayload.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ public class SecurityKnifeErrorResponsePayload {
2626
private String cause;
2727

2828

29-
public SecurityKnifeErrorResponsePayload(ErrorMessages errorMessages, Exception e, String details, String stackTrace, String userMessage, Map<String, String> userValidationMessage) {
29+
public SecurityKnifeErrorResponsePayload(KnifeErrorMessages knifeErrorMessages, Exception e, String details, String stackTrace, String userMessage, Map<String, String> userValidationMessage) {
3030
this.timestamp = TimestampUtil.getPayloadTimestamp();
31-
this.message = !StringUtils.isEmpty(errorMessages.getMessage()) ? errorMessages.getMessage() : e.getMessage() ;
31+
this.message = !StringUtils.isEmpty(knifeErrorMessages.getMessage()) ? knifeErrorMessages.getMessage() : e.getMessage() ;
3232
this.details = details;
33-
this.userMessage = !StringUtils.isEmpty(errorMessages.getUserMessage()) ? errorMessages.getUserMessage() : userMessage;
33+
this.userMessage = !StringUtils.isEmpty(knifeErrorMessages.getUserMessage()) ? knifeErrorMessages.getUserMessage() : userMessage;
3434
this.stackTrace = stackTrace;
35-
this.userValidationMessage = errorMessages.getUserValidationMessage() != null && !errorMessages.getUserValidationMessage().isEmpty() ? errorMessages.getUserValidationMessage() : userValidationMessage;
35+
this.userValidationMessage = knifeErrorMessages.getUserValidationMessage() != null && !knifeErrorMessages.getUserValidationMessage().isEmpty() ? knifeErrorMessages.getUserValidationMessage() : userValidationMessage;
3636
}
3737

3838
public SecurityKnifeErrorResponsePayload(String message, String details, String userMessage, String stackTrace) {

0 commit comments

Comments
 (0)