feat: add Google login support

This commit is contained in:
Tim
2025-07-05 14:36:52 +08:00
parent 11611dbeb5
commit 20337e0501
5 changed files with 96 additions and 0 deletions

View File

@@ -5,6 +5,7 @@ import com.openisle.service.EmailSender;
import com.openisle.service.JwtService;
import com.openisle.service.UserService;
import com.openisle.service.CaptchaService;
import com.openisle.service.GoogleAuthService;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
@@ -21,6 +22,7 @@ public class AuthController {
private final JwtService jwtService;
private final EmailSender emailService;
private final CaptchaService captchaService;
private final GoogleAuthService googleAuthService;
@Value("${app.captcha.enabled:false}")
private boolean captchaEnabled;
@@ -63,6 +65,15 @@ public class AuthController {
}
}
@PostMapping("/google")
public ResponseEntity<?> loginWithGoogle(@RequestBody GoogleLoginRequest req) {
Optional<User> user = googleAuthService.authenticate(req.getIdToken());
if (user.isPresent()) {
return ResponseEntity.ok(Map.of("token", jwtService.generateToken(user.get().getUsername())));
}
return ResponseEntity.badRequest().body(Map.of("error", "Invalid google token"));
}
@GetMapping("/check")
public ResponseEntity<?> checkToken() {
return ResponseEntity.ok(Map.of("valid", true));
@@ -83,6 +94,11 @@ public class AuthController {
private String captcha;
}
@Data
private static class GoogleLoginRequest {
private String idToken;
}
@Data
private static class VerifyRequest {
private String username;