From 4342c7937b3c146b37955b8478f7d6de4224e16f Mon Sep 17 00:00:00 2001 From: Tim <47184194+imgde@users.noreply.github.com> Date: Fri, 23 May 2025 15:43:55 +0200 Subject: [PATCH] Add missing CRUD --- .../webshop/controller/AccountController.java | 51 +++++++++++++++++-- .../webshop/controller/ArticleController.java | 15 +++++- .../controller/CustomerController.java | 15 ++++++ .../webshop/controller/ImageController.java | 18 ++++++- .../webshop/repository/ArticleRepository.java | 2 + .../webshop/service/AccountService.java | 3 +- .../webshop/service/ArticleService.java | 2 + .../htwsaar/webshop/service/ImageService.java | 2 + .../service/impl/AccountServiceImpl.java | 11 ++-- .../service/impl/ArticleServiceImpl.java | 5 ++ .../service/impl/ImageServiceImpl.java | 5 ++ 11 files changed, 114 insertions(+), 15 deletions(-) diff --git a/00-backend/src/main/java/de/htwsaar/webshop/controller/AccountController.java b/00-backend/src/main/java/de/htwsaar/webshop/controller/AccountController.java index dce295e..446b922 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/controller/AccountController.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/controller/AccountController.java @@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.*; import static de.htwsaar.webshop.config.ControllerPathConfig.ACCOUNT_BASE; import static de.htwsaar.webshop.config.ControllerPathConfig.EMAIL_BASE; import static de.htwsaar.webshop.config.ParameterConfig.PARAM_EMAIL; +import static de.htwsaar.webshop.config.ParameterConfig.PARAM_PASSWORD; import static de.htwsaar.webshop.util.LoggerUtil.logRequest; @RestController @@ -28,8 +29,8 @@ public class AccountController { } @RequestMapping(path = EMAIL_BASE, method = RequestMethod.GET, produces = "application/json") - public ResponseEntity isEmailValid(HttpServletRequest request, - @RequestParam(PARAM_EMAIL) String email) { + public ResponseEntity isEmailUsed(HttpServletRequest request, + @RequestParam(PARAM_EMAIL) String email) { logRequest(request); return accountService.existsWithEmail(email) ? ResponseEntity.ok(true) : @@ -38,7 +39,7 @@ public class AccountController { @RequestMapping(path = ACCOUNT_BASE, method = RequestMethod.POST, produces = "application/json") public ResponseEntity createAccount(HttpServletRequest request, - @RequestBody Account account) { + @RequestBody Account account) { logRequest(request); if (validatorService.isInvalid(account)) { log.warn("[{}] failed Validation, sending bad request", request.getRequestURI()); @@ -71,4 +72,48 @@ public class AccountController { return ResponseEntity.ok().build(); } + @RequestMapping(path = ACCOUNT_BASE, method = RequestMethod.GET, produces = "application/json") + public ResponseEntity getAccount(HttpServletRequest request, + @RequestParam(PARAM_EMAIL) String email, + @RequestParam(PARAM_PASSWORD) String password) { + logRequest(request); + if(!accountService.existsWithEmail(email)) { + log.warn("[{}] Account doesn't exist", request.getRequestURI()); + return ResponseEntity.badRequest().build(); + } + Account acc = accountService.isValidLogin(email, password); + if(acc == null) { + log.warn("[{}] Invalid Credentials", request.getRequestURI()); + return ResponseEntity.badRequest().build(); + } + return ResponseEntity.ok(acc); + } + + @RequestMapping(path = ACCOUNT_BASE, method = RequestMethod.PUT, produces = "application/json") + public ResponseEntity updateAccount(HttpServletRequest request, + @RequestParam(PARAM_EMAIL) String email, + @RequestParam(PARAM_PASSWORD) String password, + @RequestBody Account account) { + logRequest(request); + if(validatorService.isInvalid(account)) { + log.warn("[{}] failed Validation, sending bad request", request.getRequestURI()); + return ResponseEntity.badRequest().build(); + } + if(!accountService.existsWithEmail(email)) { + log.warn("[{}] Account doesn't exist", request.getRequestURI()); + return ResponseEntity.badRequest().build(); + } + Account loggedIn = accountService.isValidLogin(email, password); + if(loggedIn == null) { + log.warn("[{}] Invalid Credentials", request.getRequestURI()); + return ResponseEntity.badRequest().build(); + } + account.setId(loggedIn.getId()); + Account saved = accountService.save(account); + if(saved == null) { + return ResponseEntity.internalServerError().build(); + } + return ResponseEntity.ok(saved); + } + } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/controller/ArticleController.java b/00-backend/src/main/java/de/htwsaar/webshop/controller/ArticleController.java index 679cddb..e9edf46 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/controller/ArticleController.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/controller/ArticleController.java @@ -54,7 +54,7 @@ public class ArticleController { return ResponseEntity.ok(a != null); } - @RequestMapping(path = ARTICLE_BASE, method = RequestMethod.DELETE, produces = "application/json") + @RequestMapping(path = ARTICLE_BASE, method = RequestMethod.PUT, produces = "application/json") public ResponseEntity update(HttpServletRequest request, @RequestParam(value = PARAM_UUID) UUID uuid, @RequestBody Article article) { @@ -66,4 +66,17 @@ public class ArticleController { return ResponseEntity.ok(articleService.save(article) != null); } + + @RequestMapping(path = ARTICLE_BASE, method = RequestMethod.DELETE, produces = "application/json") + public ResponseEntity delete(HttpServletRequest request, + @RequestParam(value = PARAM_UUID) UUID uuid) { + logRequest(request); + if (uuid == null || uuid.toString().isEmpty() || articleService.findByUUID(uuid) == null) { + log.warn("[{}] got invalid UUID {}", request.getRequestURI(), uuid); + return ResponseEntity.badRequest().body(false); + } + articleService.delete(uuid); + + return ResponseEntity.ok().build(); + } } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/controller/CustomerController.java b/00-backend/src/main/java/de/htwsaar/webshop/controller/CustomerController.java index eba4056..89fa650 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/controller/CustomerController.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/controller/CustomerController.java @@ -26,6 +26,21 @@ public class CustomerController { this.customerService = customerService; } + @RequestMapping(path = CUSTOMER_BASE, method = RequestMethod.GET, produces = "application/json") + public ResponseEntity getCustomerById(HttpServletRequest request, + @RequestParam(PARAM_ID) Long customerId) { + logRequest(request); + if (customerId == null) { + log.warn("[{}] failed Validation, sending bad request", request.getRequestURI()); + return ResponseEntity.badRequest().build(); + } + Customer customer = customerService.findById(customerId); + if (customer == null) { + return ResponseEntity.notFound().build(); + } + return ResponseEntity.ok(customer); + } + @RequestMapping(path = CUSTOMER_BASE, method = RequestMethod.POST, produces = "application/json") public ResponseEntity createCustomer(HttpServletRequest request, @RequestBody Customer customer) { diff --git a/00-backend/src/main/java/de/htwsaar/webshop/controller/ImageController.java b/00-backend/src/main/java/de/htwsaar/webshop/controller/ImageController.java index 4acfc64..f91f827 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/controller/ImageController.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/controller/ImageController.java @@ -67,7 +67,7 @@ public class ImageController { return ResponseEntity.ok(a != null); } - @RequestMapping(path = IMAGE_BASE, method = RequestMethod.DELETE, produces = "application/json") + @RequestMapping(path = IMAGE_BASE, method = RequestMethod.PUT, produces = "application/json") public ResponseEntity update(HttpServletRequest request, @RequestParam(value = PARAM_IMAGE_ID) Long imageId, @RequestBody Image image) { @@ -78,4 +78,20 @@ public class ImageController { image.setId(imageService.getImageById(imageId).getId()); return ResponseEntity.ok(imageService.save(image) != null); } + + @RequestMapping(path = IMAGE_BASE, method = RequestMethod.DELETE, produces = "application/json") + public ResponseEntity delete(HttpServletRequest request, + @RequestParam(value = PARAM_IMAGE_ID) Long imageId) { + logRequest(request); + if (imageId == null) { + log.warn("[{}] got invalid imageId", request.getRequestURI()); + return ResponseEntity.badRequest().body(false); + } + if (imageService.getImageById(imageId) != null) { + log.warn("[{}] got invalid imageId", request.getRequestURI()); + return ResponseEntity.badRequest().body(false); + } + imageService.deleteById(imageId); + return ResponseEntity.ok().build(); + } } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/ArticleRepository.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/ArticleRepository.java index eae2fbc..3e99a36 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/ArticleRepository.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/ArticleRepository.java @@ -16,4 +16,6 @@ public interface ArticleRepository extends JpaRepository { Optional
findArticleByName(@NonNull String Name); Optional
findArticleByUuid(@NonNull UUID uuid); + + void deleteByUuid(UUID uuid); } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/AccountService.java b/00-backend/src/main/java/de/htwsaar/webshop/service/AccountService.java index 5e4b700..d23d46c 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/AccountService.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/AccountService.java @@ -6,7 +6,6 @@ public interface AccountService { Account saveNew(Account account); Account save(Account account); boolean deleteIfExists(Account account); - Account getAccountByEmail(String email); - boolean isValidLogin(String email, String password); + Account isValidLogin(String email, String password); boolean existsWithEmail(String email); } \ No newline at end of file diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/ArticleService.java b/00-backend/src/main/java/de/htwsaar/webshop/service/ArticleService.java index be72c57..6cc2c48 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/ArticleService.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/ArticleService.java @@ -18,6 +18,8 @@ public interface ArticleService { void delete(Long id); + void delete(UUID uuid); + Article save(Article article); double getRating(Long id); diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/ImageService.java b/00-backend/src/main/java/de/htwsaar/webshop/service/ImageService.java index 72467a8..6de0fc5 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/ImageService.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/ImageService.java @@ -14,6 +14,8 @@ public interface ImageService { Image save(Image image); + void deleteById(Long imageId); + ImageModel from(Image image); /** diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/AccountServiceImpl.java b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/AccountServiceImpl.java index 9ab6e97..32419d0 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/AccountServiceImpl.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/AccountServiceImpl.java @@ -40,17 +40,12 @@ public class AccountServiceImpl implements AccountService { } @Override - public Account getAccountByEmail(String email) { - return accountRepository.getAccountByEmail(email); - } - - @Override - public boolean isValidLogin(String email, String password) { + public Account isValidLogin(String email, String password) { Account acc = accountRepository.getAccountByEmail(email); if(acc == null) { - return false; + return null; } - return passwordService.verifyPassword(password, acc.getPassword()); + return passwordService.verifyPassword(password, acc.getPassword()) ? acc : null; } @Override diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ArticleServiceImpl.java b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ArticleServiceImpl.java index bf2265e..7232b90 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ArticleServiceImpl.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ArticleServiceImpl.java @@ -50,6 +50,11 @@ public class ArticleServiceImpl implements ArticleService { articleRepository.deleteById(id); } + @Override + public void delete(UUID uuid) { + articleRepository.deleteByUuid(uuid); + } + @Override public Article save(Article article) { return articleRepository.save(article); diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ImageServiceImpl.java b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ImageServiceImpl.java index 9d2be28..307b5c3 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ImageServiceImpl.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ImageServiceImpl.java @@ -41,6 +41,11 @@ public class ImageServiceImpl implements ImageService { return imageRepository.save(image); } + @Override + public void deleteById(Long imageId) { + imageRepository.deleteById(imageId); + } + @Override public ImageModel from(Image image) { return new ImageModel(image.getArticle().getUuid(), image.getUri());