Spaces:
Sleeping
Sleeping
| package com.rods.backtestingstrategies.controller; | |
| import com.rods.backtestingstrategies.dto.AuthRequest; | |
| import com.rods.backtestingstrategies.dto.AuthResponse; | |
| import com.rods.backtestingstrategies.entity.User; | |
| import com.rods.backtestingstrategies.repository.UserRepository; | |
| import com.rods.backtestingstrategies.security.JwtUtils; | |
| import lombok.RequiredArgsConstructor; | |
| import org.springframework.http.ResponseEntity; | |
| import org.springframework.security.authentication.AuthenticationManager; | |
| import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; | |
| import org.springframework.security.core.userdetails.UserDetails; | |
| import org.springframework.security.core.userdetails.UserDetailsService; | |
| import org.springframework.security.crypto.password.PasswordEncoder; | |
| import org.springframework.web.bind.annotation.*; | |
| public class AuthController { | |
| private final AuthenticationManager authenticationManager; | |
| private final UserRepository userRepository; | |
| private final PasswordEncoder passwordEncoder; | |
| private final JwtUtils jwtUtils; | |
| private final UserDetailsService userDetailsService; | |
| public ResponseEntity<?> register( AuthRequest request) { | |
| if (userRepository.findByUsername(request.getUsername()).isPresent()) { | |
| return ResponseEntity.badRequest().body("Username already exists"); | |
| } | |
| User user = User.builder() | |
| .username(request.getUsername()) | |
| .password(passwordEncoder.encode(request.getPassword())) | |
| .role("USER") | |
| .build(); | |
| userRepository.save(user); | |
| UserDetails userDetails = userDetailsService.loadUserByUsername(request.getUsername()); | |
| String jwtToken = jwtUtils.generateToken(userDetails); | |
| return ResponseEntity.ok(AuthResponse.builder().token(jwtToken).build()); | |
| } | |
| public ResponseEntity<?> login( AuthRequest request) { | |
| authenticationManager.authenticate( | |
| new UsernamePasswordAuthenticationToken(request.getUsername(), request.getPassword()) | |
| ); | |
| UserDetails userDetails = userDetailsService.loadUserByUsername(request.getUsername()); | |
| String jwtToken = jwtUtils.generateToken(userDetails); | |
| return ResponseEntity.ok(AuthResponse.builder().token(jwtToken).build()); | |
| } | |
| } |