aboutsummaryrefslogtreecommitdiff
path: root/ufund-api
diff options
context:
space:
mode:
Diffstat (limited to 'ufund-api')
-rw-r--r--ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java24
-rw-r--r--ufund-api/src/main/java/com/ufund/api/ufundapi/service/AuthService.java38
2 files changed, 49 insertions, 13 deletions
diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java
index aa27e3f..b9c8ed3 100644
--- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java
+++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java
@@ -3,22 +3,25 @@ package com.ufund.api.ufundapi.controller;
import com.ufund.api.ufundapi.model.UserAuth;
import com.ufund.api.ufundapi.persistence.UserAuthDAO;
import com.ufund.api.ufundapi.persistence.UserDAO;
+import com.ufund.api.ufundapi.service.AuthService;
+import com.ufund.api.ufundapi.service.UserService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
+import javax.net.ssl.HttpsURLConnection;
import java.io.IOException;
import java.util.Map;
@RestController
@RequestMapping("auth")
public class AuthController {
- private final UserDAO userDAO;
- private final UserAuthDAO userAuthDAO;
+ private final UserService userService;
+ private final AuthService authService;
- public AuthController(UserDAO userDAO, UserAuthDAO userAuthDAO) {
- this.userDAO = userDAO;
- this.userAuthDAO = userAuthDAO;
+ public AuthController(UserService userService, AuthService authService) {
+ this.userService = userService;
+ this.authService = authService;
}
/**
@@ -31,15 +34,12 @@ public class AuthController {
String username = params.get("username");
String password = params.get("password");
try {
- var usr = userDAO.getUser(username);
- if (usr == null || !usr.verifyPassword(password)) {
- return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
- }
- var userAuth = UserAuth.generate(username);
- userAuthDAO.addUserAuth(userAuth);
- return new ResponseEntity<>(userAuth.getKey(), HttpStatus.OK);
+ String key = authService.login(username, password);
+ return new ResponseEntity<>(key, HttpStatus.OK);
} catch (IOException ex) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ } catch (IllegalAccessException e) {
+ return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
}
}
diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/service/AuthService.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/service/AuthService.java
index caf1edd..2e644ee 100644
--- a/ufund-api/src/main/java/com/ufund/api/ufundapi/service/AuthService.java
+++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/service/AuthService.java
@@ -1,5 +1,41 @@
package com.ufund.api.ufundapi.service;
+import com.ufund.api.ufundapi.model.UserAuth;
+import com.ufund.api.ufundapi.persistence.UserAuthDAO;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+@Component
public class AuthService {
-
+
+ private final UserAuthDAO userAuthDAO;
+ private final UserService userService;
+
+ public AuthService(UserAuthDAO userAuthDAO, UserService userService) {
+ this.userAuthDAO = userAuthDAO;
+ this.userService = userService;
+ }
+
+ public UserAuth getUserAuth(String key) {
+ return userAuthDAO.getUserAuth(key);
+ }
+
+ public void authenticate(String username, String key) throws IllegalAccessException {
+ var userAuth = getUserAuth(key);
+ if (userAuth == null || !userAuth.getUsername().equals(username)) {
+ throw new IllegalAccessException("Unauthorized");
+ }
+ }
+
+ public String login(String username, String password) throws IllegalAccessException, IOException {
+ var usr = userService.getUser(username);
+ if (usr == null || !usr.verifyPassword(password)) {
+ throw new IllegalAccessException("Unauthorized");
+ }
+ var userAuth = UserAuth.generate(username);
+ userAuthDAO.addUserAuth(userAuth);
+ return userAuth.getKey();
+ }
+
}