From 71818ed311fa992468382aab20f25b0ce3e00f47 Mon Sep 17 00:00:00 2001 From: taha Date: Wed, 24 Apr 2024 19:36:50 +0100 Subject: [PATCH 1/2] modification --- pom.xml | 7 +++++++ .../Stock/controllers/TransitionController.java | 10 ++++++---- src/main/java/com/allali/Stock/entitie/Article.java | 13 +++++++++---- src/main/java/com/allali/Stock/entitie/Users.java | 10 +++++++--- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index fb24291..1d47119 100644 --- a/pom.xml +++ b/pom.xml @@ -53,6 +53,13 @@ itextpdf 5.5.13.3 + + + com.itextpdf + kernel + 8.0.3 + + diff --git a/src/main/java/com/allali/Stock/controllers/TransitionController.java b/src/main/java/com/allali/Stock/controllers/TransitionController.java index a7d9178..8d36ce3 100644 --- a/src/main/java/com/allali/Stock/controllers/TransitionController.java +++ b/src/main/java/com/allali/Stock/controllers/TransitionController.java @@ -37,11 +37,13 @@ public ResponseEntity addTransitionClient(@RequestBody Transition tr @GetMapping("/all") public List getAllTransition() { - List transitions = transitionService.findAll(); - return transitions; + return transitionService.findAll(); } - //@DeleteMapping("/delete/{id}") + @DeleteMapping("/delete/{id}") public ResponseEntity deleteTransition(@PathVariable Long id) { transitionService.deleteTransition(id); return ResponseEntity.noContent().build(); - }} \ No newline at end of file + } + + +} diff --git a/src/main/java/com/allali/Stock/entitie/Article.java b/src/main/java/com/allali/Stock/entitie/Article.java index b665448..98465e1 100644 --- a/src/main/java/com/allali/Stock/entitie/Article.java +++ b/src/main/java/com/allali/Stock/entitie/Article.java @@ -18,13 +18,18 @@ public class Article { private String description ; private Double price ; private String brand ; - @ManyToOne + + // Lazy loading for category + @ManyToOne(fetch = FetchType.LAZY) @JsonIgnore private Category category ; - @ManyToMany + + // Lazy loading for list of fournisseurs + @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JsonIgnore private List list = new ArrayList<>() ; - @ManyToOne - private Transition transition ; + // Lazy loading for transition + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + private Transition transition ; } diff --git a/src/main/java/com/allali/Stock/entitie/Users.java b/src/main/java/com/allali/Stock/entitie/Users.java index 21f29fb..bb3874c 100644 --- a/src/main/java/com/allali/Stock/entitie/Users.java +++ b/src/main/java/com/allali/Stock/entitie/Users.java @@ -24,8 +24,12 @@ public class Users { private String address ; private String phoneNumber ; private Date dateNaissance ; - @ManyToMany + + // Lazy loading for list of roles + @ManyToMany(fetch = FetchType.LAZY) private List list = new ArrayList<>(); - @ManyToMany - private List notificationList = new ArrayList<>() ; + + // Lazy loading for list of notifications + @ManyToMany(fetch = FetchType.LAZY) + private List notificationList = new ArrayList<>(); } From 268e957ee49f96827dfffadeefe72bfd098a0912 Mon Sep 17 00:00:00 2001 From: taha Date: Wed, 8 May 2024 20:47:47 +0100 Subject: [PATCH 2/2] latest update --- pom.xml | 36 +++++++++---- .../com/allali/Stock/StockApplication.java | 4 +- .../Stock/config/SecurityConfiguration.java | 50 +++++++++++++++++++ .../Stock/controllers/MessageController.java | 16 ++++++ .../controllers/TransitionController.java | 2 +- .../java/com/allali/Stock/entitie/Client.java | 3 +- .../com/allali/Stock/entitie/Transition.java | 2 +- .../com/allali/Stock/service/Initiation.java | 8 +-- .../transition/TransitionServiceImpl.java | 22 ++++---- .../Stock/service/users/UserService.java | 2 +- src/main/resources/application.properties | 2 +- 11 files changed, 115 insertions(+), 32 deletions(-) create mode 100644 src/main/java/com/allali/Stock/config/SecurityConfiguration.java create mode 100644 src/main/java/com/allali/Stock/controllers/MessageController.java diff --git a/pom.xml b/pom.xml index 1d47119..f834c47 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.springframework.boot @@ -32,11 +32,7 @@ runtime true - - com.h2database - h2 - runtime - + org.projectlombok lombok @@ -57,11 +53,31 @@ com.itextpdf kernel - 8.0.3 + 8.0.4 + + + + com.itextpdf + layout + 8.0.4 + + + + org.postgresql + postgresql + 42.7.3 + + + org.springframework.boot + spring-boot-starter-security + + + com.h2database + h2 + runtime - - + @@ -80,4 +96,4 @@ - + \ No newline at end of file diff --git a/src/main/java/com/allali/Stock/StockApplication.java b/src/main/java/com/allali/Stock/StockApplication.java index 60779aa..ad087c2 100644 --- a/src/main/java/com/allali/Stock/StockApplication.java +++ b/src/main/java/com/allali/Stock/StockApplication.java @@ -23,4 +23,6 @@ CommandLineRunner start(Initiation initiation){ //initiation.initTransition2(); }; } -} + + } + diff --git a/src/main/java/com/allali/Stock/config/SecurityConfiguration.java b/src/main/java/com/allali/Stock/config/SecurityConfiguration.java new file mode 100644 index 0000000..b45a7b7 --- /dev/null +++ b/src/main/java/com/allali/Stock/config/SecurityConfiguration.java @@ -0,0 +1,50 @@ +package com.allali.Stock.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.web.SecurityFilterChain; + +import static org.springframework.security.config.Customizer.withDefaults; + +@Configuration +public class SecurityConfiguration { + + @Bean + public PasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + + @Bean + public UserDetailsService userDetailsService(){ + UserDetails user = User.builder() + .username("admin") + .password(passwordEncoder().encode("password")) + .roles("USER") + .build(); + return new InMemoryUserDetailsManager(user); + } + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + http + .authorizeHttpRequests(authorize -> authorize + .requestMatchers("/h2-console/**","/api/v1/**").permitAll() // Allow access to H2 console without authentication + .anyRequest().authenticated()) // All other requests require authentication + .formLogin(withDefaults()) // Enable form-based login with default configuration + .httpBasic(withDefaults()) // Enable HTTP Basic authentication with default configuration + .csrf(AbstractHttpConfigurer::disable) // Disable CSRF protection for H2 console + .headers(headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin)); // Disable frame options for H2 console + + return http.build(); + } + + +} diff --git a/src/main/java/com/allali/Stock/controllers/MessageController.java b/src/main/java/com/allali/Stock/controllers/MessageController.java new file mode 100644 index 0000000..d4aaaf8 --- /dev/null +++ b/src/main/java/com/allali/Stock/controllers/MessageController.java @@ -0,0 +1,16 @@ +package com.allali.Stock.controllers; + + + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class MessageController { + + @GetMapping("/ok") + public String getMessage() { + return "Hello, world!"; + } +} + diff --git a/src/main/java/com/allali/Stock/controllers/TransitionController.java b/src/main/java/com/allali/Stock/controllers/TransitionController.java index 8d36ce3..2c37362 100644 --- a/src/main/java/com/allali/Stock/controllers/TransitionController.java +++ b/src/main/java/com/allali/Stock/controllers/TransitionController.java @@ -39,7 +39,7 @@ public ResponseEntity addTransitionClient(@RequestBody Transition tr public List getAllTransition() { return transitionService.findAll(); } - @DeleteMapping("/delete/{id}") + @DeleteMapping("/{id}") public ResponseEntity deleteTransition(@PathVariable Long id) { transitionService.deleteTransition(id); return ResponseEntity.noContent().build(); diff --git a/src/main/java/com/allali/Stock/entitie/Client.java b/src/main/java/com/allali/Stock/entitie/Client.java index ccd92dc..98bc3df 100644 --- a/src/main/java/com/allali/Stock/entitie/Client.java +++ b/src/main/java/com/allali/Stock/entitie/Client.java @@ -1,6 +1,7 @@ package com.allali.Stock.entitie; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; @@ -15,7 +16,7 @@ @AllArgsConstructor @NoArgsConstructor public class Client extends Users { - + @JsonIgnore @OneToMany(mappedBy = "client" , fetch = FetchType.LAZY,cascade = CascadeType.ALL) private List transitionList = new ArrayList<>() ; } diff --git a/src/main/java/com/allali/Stock/entitie/Transition.java b/src/main/java/com/allali/Stock/entitie/Transition.java index d7fc3b4..d0dc0d7 100644 --- a/src/main/java/com/allali/Stock/entitie/Transition.java +++ b/src/main/java/com/allali/Stock/entitie/Transition.java @@ -27,7 +27,7 @@ public class Transition { private Fournisseur fournisseur ; @OneToMany(mappedBy = "transition" , fetch = FetchType.LAZY ,cascade = CascadeType.ALL, orphanRemoval = true) @JsonIgnore - private List
articleList = new ArrayList<>() ; + private List
article = new ArrayList<>() ; @OneToMany(mappedBy = "transition" , fetch = FetchType.LAZY,cascade = CascadeType.ALL) @JsonIgnore private List prixAchats ; diff --git a/src/main/java/com/allali/Stock/service/Initiation.java b/src/main/java/com/allali/Stock/service/Initiation.java index 3eec127..0767aa2 100644 --- a/src/main/java/com/allali/Stock/service/Initiation.java +++ b/src/main/java/com/allali/Stock/service/Initiation.java @@ -66,7 +66,7 @@ public void initTransition(){ transition.setStatus(TransactionStatus.COMPLETED); transition.setTransitionType(TransitionType.ACHAT); transition.setClient((Client) user); - transition.getArticleList().add(article); + transition.getArticle().add(article); ((Client) user).getTransitionList().add(transition); userRepository.save(user); transitionRepository.save(transition); @@ -75,7 +75,7 @@ public void initTransition(){ } public void initTransition2(){ userRepository.findAll().forEach(user -> { - if(user instanceof Fournisseur) { + if(user instanceof Fournisseur) { Article article = articleRepository.findById(2L).orElse(null); Transition transition1 = new Transition(); transition1.setTotalAmount(2004.5); @@ -83,7 +83,7 @@ public void initTransition2(){ transition1.setStatus(TransactionStatus.COMPLETED); transition1.setTransitionType(TransitionType.ACHAT); transition1.setFournisseur((Fournisseur)user); - transition1.getArticleList().add(article); + transition1.getArticle().add(article); ((Fournisseur) user).getTransitionList().add(transition1); article.setTransition(transition1); articleRepository.save(article); @@ -117,4 +117,4 @@ public void initClient(){ }); } -} +} \ No newline at end of file diff --git a/src/main/java/com/allali/Stock/service/transition/TransitionServiceImpl.java b/src/main/java/com/allali/Stock/service/transition/TransitionServiceImpl.java index 4623397..a82e818 100644 --- a/src/main/java/com/allali/Stock/service/transition/TransitionServiceImpl.java +++ b/src/main/java/com/allali/Stock/service/transition/TransitionServiceImpl.java @@ -8,6 +8,7 @@ import com.allali.Stock.repositorie.UserRepository; import com.allali.Stock.service.article.ArticleService; import com.allali.Stock.service.users.UserService; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -41,26 +42,23 @@ public Transition addTransitionClient(Transition transition, Long idClient, Long // Set transaction details in the transition entity transition.setTransactionDate(new Date()); transition.setTotalAmount(article.getPrice()); - client.getTransitionList().add(transition); - userRepository.save(client); - articleRepository.save(article); - - // Set client and article in the transition entity + // Set the client and article in the transition entity transition.setClient(client); - transition.getArticleList().add(article); - Transition transition1 =transitionRepository.save(transition); + transition.getArticle().add(article); - client.getTransitionList().add(transition1); - article.setTransition(transition); - userRepository.save(client); - articleRepository.save(article); + // Add the transition to the client's transition list + client.getTransitionList().add(transition); - return transition1 ; + // Save the client, which cascades to save the transition as well + userRepository.save(client); + return transition; } + @Override + @JsonIgnore public List findAll() { return transitionRepository.findAll(); } diff --git a/src/main/java/com/allali/Stock/service/users/UserService.java b/src/main/java/com/allali/Stock/service/users/UserService.java index d098920..8c25fbd 100644 --- a/src/main/java/com/allali/Stock/service/users/UserService.java +++ b/src/main/java/com/allali/Stock/service/users/UserService.java @@ -6,7 +6,7 @@ import java.util.List; -public interface UserService { +public interface UserService { public Fournisseur saveFournisseur(Fournisseur fournisseur); Users saveUser(Users users); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 23fc6b0..d4975a0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,4 @@ spring.application.name=Stock spring.datasource.url=jdbc:h2:mem:Stock spring.h2.console.enabled=true -server.port=2018 +server.port=2018 \ No newline at end of file