diff --git a/pom.xml b/pom.xml index 7292095..32a259f 100644 --- a/pom.xml +++ b/pom.xml @@ -108,6 +108,12 @@ spring-boot-starter-test test + + + cn.apiclub.tool + simplecaptcha + 1.2.2 + diff --git a/src/main/java/com/example/spring_boot_project/Security/CaptchaUtil.java b/src/main/java/com/example/spring_boot_project/Security/CaptchaUtil.java new file mode 100644 index 0000000..13f2eb6 --- /dev/null +++ b/src/main/java/com/example/spring_boot_project/Security/CaptchaUtil.java @@ -0,0 +1,28 @@ +package com.example.spring_boot_project.Security; + +import cn.apiclub.captcha.Captcha; + +import javax.imageio.ImageIO; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Base64; + +public class CaptchaUtil { + public static Captcha createCaptcha(int width, int height){ + return new Captcha.Builder(width, height) + .addText() + .addBackground() + .addNoise() + .build(); + } + + public static String encodeCaptcha(Captcha c){ + try(ByteArrayOutputStream o = new ByteArrayOutputStream()){ + ImageIO.write(c.getImage(), "jpg", o); + return Base64.getEncoder().encodeToString(o.toByteArray()); + } catch (IOException e){ + throw new RuntimeException("error encoding Captcha", e); + } + } + +} diff --git a/src/main/java/com/example/spring_boot_project/controller/AuthController.java b/src/main/java/com/example/spring_boot_project/controller/AuthController.java index 9aff4d0..7884be3 100644 --- a/src/main/java/com/example/spring_boot_project/controller/AuthController.java +++ b/src/main/java/com/example/spring_boot_project/controller/AuthController.java @@ -28,14 +28,17 @@ public AuthController(UserService userService, BCryptPasswordEncoder passwordEnc @PostMapping("/register") public ResponseEntity registerUser(@RequestBody RegisterRequest request) { Optional existingUser = userService.findByUsername(request.getUsername()); + if (existingUser.isPresent()) { return ResponseEntity.badRequest().body("Username already exists."); } + User user = new User(); user.setUsername(request.getUsername()); user.setPassword(passwordEncoder.encode(request.getPassword())); user.setRole("USER"); userService.save(user); + return ResponseEntity.ok().body("User registered successfully"); } @@ -53,6 +56,7 @@ public ResponseEntity loginUser(@RequestBody Map request) { passwordEncoder.matches(rawPassword, userOptional.get().getPassword())) { String token = jwtUtil.generateToken(userOptional.get().getUsername()); + return ResponseEntity.ok(Map.of("token", token)); } diff --git a/src/main/java/com/example/spring_boot_project/service/UserServiceImpl.java b/src/main/java/com/example/spring_boot_project/service/UserServiceImpl.java deleted file mode 100644 index e69de29..0000000