Files
thymecrunch/src/main/java/com/example/demo/controller/EmailController.java
T
2026-04-30 00:04:52 -06:00

58 lines
1.6 KiB
Java

package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import com.example.demo.service.EmailService;
import com.example.demo.service.OtpStore;
@RestController
@RequestMapping("/api/email")
public class EmailController {
@Autowired
private OtpStore otpStore;
@Autowired
private EmailService emailService;
@PostMapping("/check")
public ResponseEntity<?> check(@RequestParam String email){
if (emailService.isValidEmail(email) == false) {
return ResponseEntity.status(429).body("Invalid Email Detected.");
}
if (emailService.isEmailTaken(email)) {
return ResponseEntity.status(409).body("An account with this email already exists.");
}
return ResponseEntity.ok().build();
}
@PostMapping("/send")
public ResponseEntity<?> send(@RequestParam String email) {
try {
emailService.sendOtpEmail(email);
return ResponseEntity.ok().build();
} catch (RuntimeException e) {
return ResponseEntity.status(500).body("Failed to send verification email.");
}
}
@PostMapping("/verify")
public ResponseEntity<String> verify(@RequestParam String email, @RequestParam String otp) {
if (otpStore.validate(email, otp)) {
otpStore.clear(email);
return ResponseEntity.ok("Verified!");
} else {
return ResponseEntity.status(400).body("Invalid or expired code.");
}
}
}