autocomit
This commit is contained in:
@@ -2,6 +2,8 @@ package com.ldpv2.security;
|
||||
|
||||
import com.ldpv2.domain.entity.User;
|
||||
import com.ldpv2.repository.UserRepository;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
@@ -14,18 +16,32 @@ import java.util.Collections;
|
||||
@Service
|
||||
public class UserDetailsServiceImpl implements UserDetailsService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(UserDetailsServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
logger.debug("Attempting to load user: {}", username);
|
||||
|
||||
User user = userRepository.findByUsername(username)
|
||||
.orElseThrow(() -> new UsernameNotFoundException("User not found: " + username));
|
||||
.orElseThrow(() -> {
|
||||
logger.error("User not found: {}", username);
|
||||
return new UsernameNotFoundException("User not found: " + username);
|
||||
});
|
||||
|
||||
return org.springframework.security.core.userdetails.User.builder()
|
||||
logger.debug("User found: {}, role: {}", user.getUsername(), user.getRole());
|
||||
logger.debug("Password hash starts with: {}", user.getPassword().substring(0, 10));
|
||||
|
||||
UserDetails userDetails = org.springframework.security.core.userdetails.User.builder()
|
||||
.username(user.getUsername())
|
||||
.password(user.getPassword())
|
||||
.authorities(Collections.singletonList(new SimpleGrantedAuthority("ROLE_" + user.getRole())))
|
||||
.build();
|
||||
|
||||
logger.debug("UserDetails created successfully for: {}", username);
|
||||
|
||||
return userDetails;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,11 @@ import com.ldpv2.dto.response.UserResponse;
|
||||
import com.ldpv2.exception.BadRequestException;
|
||||
import com.ldpv2.repository.UserRepository;
|
||||
import com.ldpv2.security.JwtTokenProvider;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.authentication.AuthenticationManager;
|
||||
import org.springframework.security.authentication.BadCredentialsException;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
@@ -20,6 +23,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
@Service
|
||||
public class AuthService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(AuthService.class);
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
@@ -34,13 +39,17 @@ public class AuthService {
|
||||
|
||||
@Transactional
|
||||
public AuthResponse register(RegisterRequest request) {
|
||||
logger.debug("Registration attempt for username: {}", request.getUsername());
|
||||
|
||||
// Check if username exists
|
||||
if (userRepository.existsByUsername(request.getUsername())) {
|
||||
logger.warn("Registration failed: Username already exists: {}", request.getUsername());
|
||||
throw new BadRequestException("Username already exists");
|
||||
}
|
||||
|
||||
// Check if email exists
|
||||
if (userRepository.existsByEmail(request.getEmail())) {
|
||||
logger.warn("Registration failed: Email already exists: {}", request.getEmail());
|
||||
throw new BadRequestException("Email already exists");
|
||||
}
|
||||
|
||||
@@ -52,6 +61,7 @@ public class AuthService {
|
||||
user.setRole("USER");
|
||||
|
||||
user = userRepository.save(user);
|
||||
logger.info("User registered successfully: {}", user.getUsername());
|
||||
|
||||
// Authenticate the user
|
||||
Authentication authentication = authenticationManager.authenticate(
|
||||
@@ -65,17 +75,33 @@ public class AuthService {
|
||||
}
|
||||
|
||||
public AuthResponse login(LoginRequest request) {
|
||||
Authentication authentication = authenticationManager.authenticate(
|
||||
new UsernamePasswordAuthenticationToken(request.getUsername(), request.getPassword())
|
||||
);
|
||||
logger.debug("Login attempt for username: {}", request.getUsername());
|
||||
|
||||
try {
|
||||
// This will call UserDetailsService.loadUserByUsername()
|
||||
Authentication authentication = authenticationManager.authenticate(
|
||||
new UsernamePasswordAuthenticationToken(request.getUsername(), request.getPassword())
|
||||
);
|
||||
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
String token = tokenProvider.generateToken(authentication);
|
||||
logger.debug("Authentication successful for: {}", request.getUsername());
|
||||
|
||||
User user = userRepository.findByUsername(request.getUsername())
|
||||
.orElseThrow(() -> new BadRequestException("User not found"));
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
String token = tokenProvider.generateToken(authentication);
|
||||
|
||||
return new AuthResponse(token, mapToUserResponse(user));
|
||||
User user = userRepository.findByUsername(request.getUsername())
|
||||
.orElseThrow(() -> new BadRequestException("User not found"));
|
||||
|
||||
logger.info("Login successful for user: {}", user.getUsername());
|
||||
|
||||
return new AuthResponse(token, mapToUserResponse(user));
|
||||
|
||||
} catch (BadCredentialsException e) {
|
||||
logger.error("Login failed for username: {} - Bad credentials", request.getUsername());
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
logger.error("Login failed for username: {} - {}", request.getUsername(), e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private UserResponse mapToUserResponse(User user) {
|
||||
|
||||
Reference in New Issue
Block a user