From e19b32e4bf7270de54175b41fd417e41d65bbe30 Mon Sep 17 00:00:00 2001 From: mepiphana2023 Date: Wed, 16 Jul 2025 16:23:44 +0200 Subject: [PATCH] search code barre --- .../java/fr/eni/demo/bll/UserService.java | 11 ++++++ .../java/fr/eni/demo/bll/UserServiceImpl.java | 39 +++++++++++++++++++ .../eni/demo/controller/UserController.java | 35 +++++++++++++++++ .../java/fr/eni/demo/dal/UserRepository.java | 12 ++++++ 4 files changed, 97 insertions(+) create mode 100644 src/main/java/fr/eni/demo/bll/UserService.java create mode 100644 src/main/java/fr/eni/demo/bll/UserServiceImpl.java create mode 100644 src/main/java/fr/eni/demo/controller/UserController.java create mode 100644 src/main/java/fr/eni/demo/dal/UserRepository.java diff --git a/src/main/java/fr/eni/demo/bll/UserService.java b/src/main/java/fr/eni/demo/bll/UserService.java new file mode 100644 index 0000000..2482d21 --- /dev/null +++ b/src/main/java/fr/eni/demo/bll/UserService.java @@ -0,0 +1,11 @@ +package fr.eni.demo.bll; + +import fr.eni.demo.bo.User; +import java.util.Optional; +import java.util.List; + +public interface UserService { + void addUser(User user); + Optional findByUsername(String username); + List findAll(); +} \ No newline at end of file diff --git a/src/main/java/fr/eni/demo/bll/UserServiceImpl.java b/src/main/java/fr/eni/demo/bll/UserServiceImpl.java new file mode 100644 index 0000000..a977054 --- /dev/null +++ b/src/main/java/fr/eni/demo/bll/UserServiceImpl.java @@ -0,0 +1,39 @@ +package fr.eni.demo.bll; + +import fr.eni.demo.bo.User; +import fr.eni.demo.dal.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class UserServiceImpl implements UserService { + + private final UserRepository userRepository; + private final PasswordEncoder passwordEncoder; + + @Autowired + public UserServiceImpl(UserRepository userRepository, PasswordEncoder passwordEncoder) { + this.userRepository = userRepository; + this.passwordEncoder = passwordEncoder; + } + + @Override + public void addUser(User user) { + user.setPassword(passwordEncoder.encode(user.getPassword())); + userRepository.save(user); + } + + @Override + public Optional findByUsername(String username) { + return userRepository.findByUsername(username); + } + + @Override + public List findAll() { + return userRepository.findAll(); + } +} \ No newline at end of file diff --git a/src/main/java/fr/eni/demo/controller/UserController.java b/src/main/java/fr/eni/demo/controller/UserController.java new file mode 100644 index 0000000..fda549f --- /dev/null +++ b/src/main/java/fr/eni/demo/controller/UserController.java @@ -0,0 +1,35 @@ +package fr.eni.demo.controller; + +import fr.eni.demo.bll.UserService; +import fr.eni.demo.bo.User; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/users") +@RequiredArgsConstructor +public class UserController { + + private final UserService userService; + + @PostMapping + public ResponseEntity createUser(@RequestBody User user) { + userService.addUser(user); + return ResponseEntity.ok(user); + } + + @GetMapping + public ResponseEntity> getAllUsers() { + return ResponseEntity.ok(userService.findAll()); + } + + @GetMapping("/{username}") + public ResponseEntity getUserByUsername(@PathVariable String username) { + return userService.findByUsername(username) + .map(ResponseEntity::ok) + .orElse(ResponseEntity.notFound().build()); + } +} \ No newline at end of file diff --git a/src/main/java/fr/eni/demo/dal/UserRepository.java b/src/main/java/fr/eni/demo/dal/UserRepository.java new file mode 100644 index 0000000..f077a77 --- /dev/null +++ b/src/main/java/fr/eni/demo/dal/UserRepository.java @@ -0,0 +1,12 @@ +package fr.eni.demo.dal; + +import fr.eni.demo.bo.User; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface UserRepository extends MongoRepository { + Optional findByUsername(String username); +} \ No newline at end of file