diff --git a/pom.xml b/pom.xml
index ee2a1cb..e0ef644 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,6 +44,11 @@
runtime
true
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-resource-server
+ 2.4.12
+
org.postgresql
postgresql
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/controller/AuthController.java b/src/main/java/_11/asktpk/artisanconnectbackend/controller/AuthController.java
index 2a7f5e2..231f1df 100644
--- a/src/main/java/_11/asktpk/artisanconnectbackend/controller/AuthController.java
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/controller/AuthController.java
@@ -6,12 +6,12 @@ import _11.asktpk.artisanconnectbackend.security.JwtUtil;
import _11.asktpk.artisanconnectbackend.service.ClientService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
-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 org.springframework.http.*;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
@Slf4j
@RestController
@@ -35,7 +35,7 @@ public class AuthController {
String token = jwtUtil.generateToken(client.getEmail(), userRole, userId);
- log.info("Logged in as " + client.getEmail());
+ log.info("User logged in with {}", client.getEmail());
return ResponseEntity.status(HttpStatus.OK)
.body(new AuthResponseDTO(userId, userRole, token));
} else {
@@ -57,7 +57,7 @@ public class AuthController {
savedClient.getId()
);
- log.info("Registered as " + savedClient.getEmail());
+ log.info("New user registered with {}", savedClient.getEmail());
return ResponseEntity.status(HttpStatus.CREATED)
.body(new AuthResponseDTO(
@@ -79,4 +79,48 @@ public class AuthController {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new RequestResponseDTO("Invalid token"));
}
+
+ @PostMapping("/google")
+ public ResponseEntity> authenticateWithGoogle(@RequestBody GoogleAuthRequestDTO dto) {
+ try {
+ String accessToken = dto.getGoogleToken();
+ String googleUserInfoUrl = "https://www.googleapis.com/oauth2/v3/userinfo";
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.setBearerAuth(accessToken);
+ HttpEntity entity = new HttpEntity<>(headers);
+
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity