package se.bilhalsning.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import se.bilhalsning.dto.AuthResponse; import se.bilhalsning.dto.LoginRequest; import se.bilhalsning.dto.RegisterRequest; import se.bilhalsning.entity.User; import se.bilhalsning.security.JwtService; import se.bilhalsning.service.UserService; @RestController @RequestMapping("/api/auth") @RequiredArgsConstructor public class AuthController { private final UserService userService; private final JwtService jwtService; @PostMapping("/register") public ResponseEntity register(@Valid @RequestBody RegisterRequest request) { userService.createUser(request.email(), request.password()); String token = jwtService.generateToken(request.email().toLowerCase().trim(), "user"); return ResponseEntity.status(HttpStatus.CREATED).body(new AuthResponse(token)); } @PostMapping("/login") public ResponseEntity login(@Valid @RequestBody LoginRequest request) { User user = userService.authenticate(request.email(), request.password()); String token = jwtService.generateToken(user.getEmail(), user.getRole()); return ResponseEntity.ok(new AuthResponse(token)); } }