Skip to content

Commit bba1160

Browse files
Merge pull request #41 from Stephenson-Software/copilot/identify-spring-security-opportunities
Better utilize Spring Security — remove reinvented wheel patterns
2 parents 189ba01 + b4eafd9 commit bba1160

File tree

5 files changed

+8
-36
lines changed

5 files changed

+8
-36
lines changed

backend/src/main/java/com/accordion/controller/UserController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.springframework.security.authentication.AuthenticationManager;
1414
import org.springframework.security.authentication.BadCredentialsException;
1515
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
16+
import org.springframework.security.core.Authentication;
1617
import org.springframework.web.bind.annotation.*;
1718

1819
import java.util.Map;
@@ -103,11 +104,11 @@ public ResponseEntity<?> login(@RequestBody LoginRequest request) {
103104
}
104105

105106
try {
106-
authenticationManager.authenticate(
107+
Authentication authentication = authenticationManager.authenticate(
107108
new UsernamePasswordAuthenticationToken(username.trim(), password)
108109
);
109110

110-
User user = userService.findByUsername(username.trim())
111+
User user = userService.findByUsername(authentication.getName())
111112
.orElseThrow(() -> new BadCredentialsException("Invalid credentials"));
112113

113114
String token = jwtUtil.generateToken(user.getUsername());

backend/src/main/java/com/accordion/security/WebSocketAuthInterceptor.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.springframework.messaging.support.ChannelInterceptor;
1111
import org.springframework.messaging.support.MessageHeaderAccessor;
1212
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
13-
import org.springframework.security.core.context.SecurityContextHolder;
1413
import org.springframework.security.core.userdetails.UserDetails;
1514
import org.springframework.stereotype.Component;
1615

@@ -55,7 +54,6 @@ public Message<?> preSend(Message<?> message, MessageChannel channel) {
5554
UsernamePasswordAuthenticationToken authentication =
5655
new UsernamePasswordAuthenticationToken(
5756
userDetails, null, userDetails.getAuthorities());
58-
SecurityContextHolder.getContext().setAuthentication(authentication);
5957
accessor.setUser(authentication);
6058

6159
logger.debug("WebSocket CONNECT authenticated for user '{}'", username);

backend/src/main/java/com/accordion/service/UserService.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,4 @@ public boolean userExists(String username) {
4444
public Optional<User> findByUsername(String username) {
4545
return userRepository.findByUsername(username);
4646
}
47-
48-
public boolean verifyPassword(String rawPassword, String encodedPassword) {
49-
return passwordEncoder.matches(rawPassword, encodedPassword);
50-
}
5147
}

backend/src/test/java/com/accordion/controller/UserControllerTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.springframework.security.authentication.AuthenticationManager;
1818
import org.springframework.security.authentication.BadCredentialsException;
1919
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
20+
import org.springframework.security.core.Authentication;
2021
import org.springframework.test.context.TestPropertySource;
2122
import org.springframework.test.web.servlet.MockMvc;
2223

@@ -125,9 +126,11 @@ void testRegister_UsernameExists() throws Exception {
125126
@Test
126127
void testLogin_Success() throws Exception {
127128
LoginRequest request = new LoginRequest("testuser", "Password1");
128-
129+
130+
Authentication mockAuthentication = mock(Authentication.class);
131+
when(mockAuthentication.getName()).thenReturn("testuser");
129132
when(authenticationManager.authenticate(any(UsernamePasswordAuthenticationToken.class)))
130-
.thenReturn(null);
133+
.thenReturn(mockAuthentication);
131134
when(userService.findByUsername("testuser")).thenReturn(Optional.of(testUser));
132135
when(jwtUtil.generateToken("testuser")).thenReturn("test.jwt.token");
133136

backend/src/test/java/com/accordion/service/UserServiceTest.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -96,32 +96,6 @@ void testRegisterUser_UsernameExists() {
9696
verify(userRepository, never()).save(any(User.class));
9797
}
9898

99-
@Test
100-
void testVerifyPassword_Correct() {
101-
String rawPassword = "Password123";
102-
String encodedPassword = "$2a$10$encodedPasswordHash";
103-
104-
when(passwordEncoder.matches(rawPassword, encodedPassword)).thenReturn(true);
105-
106-
boolean result = userService.verifyPassword(rawPassword, encodedPassword);
107-
108-
assertTrue(result);
109-
verify(passwordEncoder, times(1)).matches(rawPassword, encodedPassword);
110-
}
111-
112-
@Test
113-
void testVerifyPassword_Incorrect() {
114-
String rawPassword = "WrongPassword";
115-
String encodedPassword = "$2a$10$encodedPasswordHash";
116-
117-
when(passwordEncoder.matches(rawPassword, encodedPassword)).thenReturn(false);
118-
119-
boolean result = userService.verifyPassword(rawPassword, encodedPassword);
120-
121-
assertFalse(result);
122-
verify(passwordEncoder, times(1)).matches(rawPassword, encodedPassword);
123-
}
124-
12599
@Test
126100
void testUserExists_True() {
127101
when(userRepository.existsByUsername("testuser")).thenReturn(true);

0 commit comments

Comments
 (0)