aboutsummaryrefslogtreecommitdiff
path: root/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java
diff options
context:
space:
mode:
Diffstat (limited to 'ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java')
-rw-r--r--ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java54
1 files changed, 54 insertions, 0 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
new file mode 100644
index 0000000..aa27e3f
--- /dev/null
+++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/AuthController.java
@@ -0,0 +1,54 @@
+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 org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.Map;
+
+@RestController
+@RequestMapping("auth")
+public class AuthController {
+ private final UserDAO userDAO;
+ private final UserAuthDAO userAuthDAO;
+
+ public AuthController(UserDAO userDAO, UserAuthDAO userAuthDAO) {
+ this.userDAO = userDAO;
+ this.userAuthDAO = userAuthDAO;
+ }
+
+ /**
+ * Attempts to log in as a user
+ * @param params A map/json object in the format {username: string, password: string}
+ * @return An api key if the auth was successful, null otherwise
+ */
+ @PostMapping("")
+ public ResponseEntity<String> login(@RequestBody Map<String, String> params) {
+ 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);
+ } catch (IOException ex) {
+ return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * TODO
+ * @return
+ */
+ @DeleteMapping("")
+ public ResponseEntity<Object> logout() {
+ return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
+ }
+}