From 7e51af9a4ca237f962cab6ea24a4c99551adf9e6 Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 14:57:37 +0200 Subject: [PATCH 01/10] connexion done --- build.gradle | 1 + .../java/fr/eni/enchere/bll/UserService.java | 1 + .../fr/eni/enchere/bll/UserServiceImpl.java | 5 +++ .../controllers/AccueilController.java | 5 --- .../enchere/controllers/LoginController.java | 40 ++++++++++++++++++ .../fr/eni/enchere/controllers/MvcConfig.java | 12 ++++++ .../eni/enchere/dal/UserRepositoryImpl.java | 41 +++++++++++-------- .../fr/eni/enchere/security/LoginService.java | 27 +++++------- .../eni/enchere/security/SecurityConfig.java | 8 ++-- .../enchere/security/WebSecurityConfig.java | 21 ++++++++-- src/main/resources/templates/modele-page.html | 1 + .../templates/{ => security}/login.html | 10 ++++- 12 files changed, 123 insertions(+), 49 deletions(-) create mode 100644 src/main/java/fr/eni/enchere/controllers/LoginController.java create mode 100644 src/main/java/fr/eni/enchere/controllers/MvcConfig.java rename src/main/resources/templates/{ => security}/login.html (72%) diff --git a/build.gradle b/build.gradle index f4815e9..7d769d9 100644 --- a/build.gradle +++ b/build.gradle @@ -16,6 +16,7 @@ repositories { } dependencies { + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' developmentOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/src/main/java/fr/eni/enchere/bll/UserService.java b/src/main/java/fr/eni/enchere/bll/UserService.java index b3b55ec..dfccef9 100644 --- a/src/main/java/fr/eni/enchere/bll/UserService.java +++ b/src/main/java/fr/eni/enchere/bll/UserService.java @@ -7,6 +7,7 @@ import java.util.List; public interface UserService { List listeUtilisateurs(); UserProfil utilisateur(int id); + UserProfil userByName(String username); void setUtilisateur(UserProfil utilisateur); void deleteUtilisateur(int id); } diff --git a/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java b/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java index dec1e94..6430758 100644 --- a/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java +++ b/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java @@ -25,6 +25,11 @@ public class UserServiceImpl implements UserService { return userRepository.findById(id); } + @Override + public UserProfil userByName(String username) { + return userRepository.findByUsername(username); + } + @Override public void setUtilisateur(UserProfil utilisateur) { userRepository.save(utilisateur); diff --git a/src/main/java/fr/eni/enchere/controllers/AccueilController.java b/src/main/java/fr/eni/enchere/controllers/AccueilController.java index b577289..f32b30e 100644 --- a/src/main/java/fr/eni/enchere/controllers/AccueilController.java +++ b/src/main/java/fr/eni/enchere/controllers/AccueilController.java @@ -25,9 +25,4 @@ public class AccueilController { return "accueil"; } - @GetMapping("/login") - public String login(Model modele) { - return "login"; - } - } diff --git a/src/main/java/fr/eni/enchere/controllers/LoginController.java b/src/main/java/fr/eni/enchere/controllers/LoginController.java new file mode 100644 index 0000000..d938a43 --- /dev/null +++ b/src/main/java/fr/eni/enchere/controllers/LoginController.java @@ -0,0 +1,40 @@ +package fr.eni.enchere.controllers; + +import fr.eni.enchere.bll.UserService; +import fr.eni.enchere.bo.UserProfil; +import fr.eni.enchere.dal.UserRepository; +import jakarta.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +public class LoginController { + + @Autowired + private UserService userService; + + public LoginController(UserService userService) { + super(); + this.userService = userService; + } + + @GetMapping("/login") + public String login(Model modele) { + return "security/login"; + } + + @PostMapping("/login") + public String login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { + UserProfil user = userService.userByName(username); + System.out.println("test"); + if (user != null && user.getPassword().equals(password)) { + return "redirect:/accueil"; + } else { + return "redirect:/security/login?error"; + } + } +} diff --git a/src/main/java/fr/eni/enchere/controllers/MvcConfig.java b/src/main/java/fr/eni/enchere/controllers/MvcConfig.java new file mode 100644 index 0000000..43263e9 --- /dev/null +++ b/src/main/java/fr/eni/enchere/controllers/MvcConfig.java @@ -0,0 +1,12 @@ +package fr.eni.enchere.controllers; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class MvcConfig implements WebMvcConfigurer { + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/login").setViewName("security/login"); + } +} diff --git a/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java b/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java index b0fcda9..7083441 100644 --- a/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java +++ b/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java @@ -3,6 +3,7 @@ package fr.eni.enchere.dal; import fr.eni.enchere.bo.UserProfil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Primary; +import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @@ -43,26 +44,30 @@ public class UserRepositoryImpl implements UserRepository { @Override public UserProfil findByUsername(String username) { - String sql = "SELECT * FROM UTILISATEURS WHERE pseudo = :username OR email = :username"; + String sql = "SELECT * FROM UTILISATEURS WHERE pseudo = :username"; Map params = new HashMap<>(); params.put("username", username); - UserProfil user = namedParameterJdbcTemplate.queryForObject(sql, params, (rs, rowNum) -> { - UserProfil userProfile = new UserProfil(); - userProfile.setId(rs.getInt("no_utilisateur")); - userProfile.setPrenom(rs.getString("prenom")); - userProfile.setNom(rs.getString("nom")); - userProfile.setPseudo(rs.getString("pseudo")); - userProfile.setEmail(rs.getString("email")); - userProfile.setTelephone(rs.getString("telephone")); - userProfile.setRue(rs.getString("rue")); - userProfile.setCode_postal(rs.getString("code_postal")); - userProfile.setVille(rs.getString("ville")); - userProfile.setPassword(rs.getString("mot_de_passe")); - userProfile.setCredit(rs.getFloat("credit")); - userProfile.setAdmin(rs.getBoolean("administrateur")); - return userProfile; - }); - return user; + try { + UserProfil user = namedParameterJdbcTemplate.queryForObject(sql, params, (rs, rowNum) -> { + UserProfil userProfile = new UserProfil(); + userProfile.setId(rs.getInt("no_utilisateur")); + userProfile.setPrenom(rs.getString("prenom")); + userProfile.setNom(rs.getString("nom")); + userProfile.setPseudo(rs.getString("pseudo")); + userProfile.setEmail(rs.getString("email")); + userProfile.setTelephone(rs.getString("telephone")); + userProfile.setRue(rs.getString("rue")); + userProfile.setCode_postal(rs.getString("code_postal")); + userProfile.setVille(rs.getString("ville")); + userProfile.setPassword(rs.getString("mot_de_passe")); + userProfile.setCredit(rs.getFloat("credit")); + userProfile.setAdmin(rs.getBoolean("administrateur")); + return userProfile; + }); + return user; + } catch (EmptyResultDataAccessException err) { + return null; + } } @Override diff --git a/src/main/java/fr/eni/enchere/security/LoginService.java b/src/main/java/fr/eni/enchere/security/LoginService.java index dab7dde..cf8cedc 100644 --- a/src/main/java/fr/eni/enchere/security/LoginService.java +++ b/src/main/java/fr/eni/enchere/security/LoginService.java @@ -2,13 +2,10 @@ package fr.eni.enchere.security; import fr.eni.enchere.bo.UserProfil; import fr.eni.enchere.dal.UserRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.User.UserBuilder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; @Component @@ -16,7 +13,6 @@ public class LoginService implements UserDetailsService { private UserRepository userRep; - @Autowired public LoginService(UserRepository userRep) { this.userRep = userRep; } @@ -24,20 +20,19 @@ public class LoginService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // Charger l'utilisateur depuis la base de données - UserProfil utilisateur = userRep.findByUsername(username); + UserProfil utilisateur = this.userRep.findByUsername(username); + UserDetails userDetails = null; // Créer un nouvel objet UserBuilder - UserBuilder userBuilder = User.builder() - .username(utilisateur.getPseudo()) - .password(utilisateur.getPassword()); - // Ajouter les rôles en fonction de isAdmin() - if(utilisateur.isAdmin()) { - userBuilder.roles("ADMIN", "MEMBRE"); + if (utilisateur != null) { + userDetails = User.builder() + .username(utilisateur.getPseudo()) + .password(utilisateur.getPassword()) + .roles(utilisateur.isAdmin() ? "ADMIN" : "MEMBRE") + .build(); } else { - userBuilder.roles("MEMBRE"); + throw new UsernameNotFoundException("Les identifiants sont incorrect !"); } - - // Retourner l'utilisateur UserDetails construit - return userBuilder.build(); + return userDetails; } -} +} \ No newline at end of file diff --git a/src/main/java/fr/eni/enchere/security/SecurityConfig.java b/src/main/java/fr/eni/enchere/security/SecurityConfig.java index 8597d7c..1410db7 100644 --- a/src/main/java/fr/eni/enchere/security/SecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/SecurityConfig.java @@ -8,9 +8,9 @@ import org.springframework.security.crypto.password.PasswordEncoder; @Configuration public class SecurityConfig { - @Bean - public PasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } +// @Bean +// public PasswordEncoder passwordEncoder() { +// return new BCryptPasswordEncoder(); +// } } diff --git a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java index 79e0542..e866dc1 100644 --- a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java @@ -4,26 +4,39 @@ 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.configuration.EnableWebSecurity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.factory.PasswordEncoderFactories; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @Configuration @EnableWebSecurity -public class WebSecurityConfig { +public class WebSecurityConfig{ @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests((requests) -> requests.requestMatchers("/", "/accueil").permitAll() - .requestMatchers("/accueil", "/login", "/inscription").permitAll() + .requestMatchers("/login").permitAll() .requestMatchers("/css/**", "/images/**", "/assets/**", "/img/**", "/js/**").permitAll() .requestMatchers("/admin").hasRole("ADMIN") .anyRequest().authenticated()) .formLogin((form) -> form.loginPage("/login").defaultSuccessUrl("/", true)) - .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true) - .deleteCookies("JSESSIONID").logoutSuccessUrl("/filmLogout") + .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true).deleteCookies("JSESSIONID").logoutSuccessUrl("/filmLogout") .logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll()); return http.build(); } + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + + } + +// @Bean +// public PasswordEncoder passwordEncoder() { +// return PasswordEncoderFactories.createDelegatingPasswordEncoder(); +// } + } diff --git a/src/main/resources/templates/modele-page.html b/src/main/resources/templates/modele-page.html index 635630d..94e2d68 100644 --- a/src/main/resources/templates/modele-page.html +++ b/src/main/resources/templates/modele-page.html @@ -85,6 +85,7 @@ © 2024 Copyright: + \ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/security/login.html similarity index 72% rename from src/main/resources/templates/login.html rename to src/main/resources/templates/security/login.html index 432314d..9fdbcb1 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/security/login.html @@ -8,8 +8,14 @@

Pour se Connecter :


-
-
+
+ + +
+
+ + +
Mot de passe oublié
From 38fdf680d92fa7705d8aa32ebd86926db9bcd671 Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:08:25 +0200 Subject: [PATCH 02/10] conflict done --- build.gradle | 1 + .../java/fr/eni/enchere/bll/UserService.java | 4 +- .../fr/eni/enchere/bll/UserServiceImpl.java | 4 +- .../enchere/controllers/LoginController.java | 40 +++++++++++++++++++ .../fr/eni/enchere/controllers/MvcConfig.java | 12 ++++++ .../fr/eni/enchere/security/LoginService.java | 27 +++++-------- .../eni/enchere/security/SecurityConfig.java | 8 ++-- .../enchere/security/WebSecurityConfig.java | 24 ++++++++--- src/main/resources/templates/modele-page.html | 1 + .../templates/{ => security}/login.html | 10 ++++- 10 files changed, 99 insertions(+), 32 deletions(-) create mode 100644 src/main/java/fr/eni/enchere/controllers/LoginController.java create mode 100644 src/main/java/fr/eni/enchere/controllers/MvcConfig.java rename src/main/resources/templates/{ => security}/login.html (72%) diff --git a/build.gradle b/build.gradle index f4815e9..7d769d9 100644 --- a/build.gradle +++ b/build.gradle @@ -16,6 +16,7 @@ repositories { } dependencies { + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' developmentOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/src/main/java/fr/eni/enchere/bll/UserService.java b/src/main/java/fr/eni/enchere/bll/UserService.java index 1a258d1..dfccef9 100644 --- a/src/main/java/fr/eni/enchere/bll/UserService.java +++ b/src/main/java/fr/eni/enchere/bll/UserService.java @@ -6,8 +6,8 @@ import java.util.List; public interface UserService { List listeUtilisateurs(); - UserProfil utilisateurById(int id); - UserProfil utilisateurByName(String username); + UserProfil utilisateur(int id); + UserProfil userByName(String username); void setUtilisateur(UserProfil utilisateur); void deleteUtilisateur(int id); } diff --git a/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java b/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java index 9938c0e..6430758 100644 --- a/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java +++ b/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java @@ -21,12 +21,12 @@ public class UserServiceImpl implements UserService { } @Override - public UserProfil utilisateurById(int id) { + public UserProfil utilisateur(int id) { return userRepository.findById(id); } @Override - public UserProfil utilisateurByName(String username) { + public UserProfil userByName(String username) { return userRepository.findByUsername(username); } diff --git a/src/main/java/fr/eni/enchere/controllers/LoginController.java b/src/main/java/fr/eni/enchere/controllers/LoginController.java new file mode 100644 index 0000000..d938a43 --- /dev/null +++ b/src/main/java/fr/eni/enchere/controllers/LoginController.java @@ -0,0 +1,40 @@ +package fr.eni.enchere.controllers; + +import fr.eni.enchere.bll.UserService; +import fr.eni.enchere.bo.UserProfil; +import fr.eni.enchere.dal.UserRepository; +import jakarta.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +public class LoginController { + + @Autowired + private UserService userService; + + public LoginController(UserService userService) { + super(); + this.userService = userService; + } + + @GetMapping("/login") + public String login(Model modele) { + return "security/login"; + } + + @PostMapping("/login") + public String login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { + UserProfil user = userService.userByName(username); + System.out.println("test"); + if (user != null && user.getPassword().equals(password)) { + return "redirect:/accueil"; + } else { + return "redirect:/security/login?error"; + } + } +} diff --git a/src/main/java/fr/eni/enchere/controllers/MvcConfig.java b/src/main/java/fr/eni/enchere/controllers/MvcConfig.java new file mode 100644 index 0000000..43263e9 --- /dev/null +++ b/src/main/java/fr/eni/enchere/controllers/MvcConfig.java @@ -0,0 +1,12 @@ +package fr.eni.enchere.controllers; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class MvcConfig implements WebMvcConfigurer { + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/login").setViewName("security/login"); + } +} diff --git a/src/main/java/fr/eni/enchere/security/LoginService.java b/src/main/java/fr/eni/enchere/security/LoginService.java index dab7dde..cf8cedc 100644 --- a/src/main/java/fr/eni/enchere/security/LoginService.java +++ b/src/main/java/fr/eni/enchere/security/LoginService.java @@ -2,13 +2,10 @@ package fr.eni.enchere.security; import fr.eni.enchere.bo.UserProfil; import fr.eni.enchere.dal.UserRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.User.UserBuilder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; @Component @@ -16,7 +13,6 @@ public class LoginService implements UserDetailsService { private UserRepository userRep; - @Autowired public LoginService(UserRepository userRep) { this.userRep = userRep; } @@ -24,20 +20,19 @@ public class LoginService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // Charger l'utilisateur depuis la base de données - UserProfil utilisateur = userRep.findByUsername(username); + UserProfil utilisateur = this.userRep.findByUsername(username); + UserDetails userDetails = null; // Créer un nouvel objet UserBuilder - UserBuilder userBuilder = User.builder() - .username(utilisateur.getPseudo()) - .password(utilisateur.getPassword()); - // Ajouter les rôles en fonction de isAdmin() - if(utilisateur.isAdmin()) { - userBuilder.roles("ADMIN", "MEMBRE"); + if (utilisateur != null) { + userDetails = User.builder() + .username(utilisateur.getPseudo()) + .password(utilisateur.getPassword()) + .roles(utilisateur.isAdmin() ? "ADMIN" : "MEMBRE") + .build(); } else { - userBuilder.roles("MEMBRE"); + throw new UsernameNotFoundException("Les identifiants sont incorrect !"); } - - // Retourner l'utilisateur UserDetails construit - return userBuilder.build(); + return userDetails; } -} +} \ No newline at end of file diff --git a/src/main/java/fr/eni/enchere/security/SecurityConfig.java b/src/main/java/fr/eni/enchere/security/SecurityConfig.java index 8597d7c..1410db7 100644 --- a/src/main/java/fr/eni/enchere/security/SecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/SecurityConfig.java @@ -8,9 +8,9 @@ import org.springframework.security.crypto.password.PasswordEncoder; @Configuration public class SecurityConfig { - @Bean - public PasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } +// @Bean +// public PasswordEncoder passwordEncoder() { +// return new BCryptPasswordEncoder(); +// } } diff --git a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java index c8a3ee5..e866dc1 100644 --- a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java @@ -4,27 +4,39 @@ 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.configuration.EnableWebSecurity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.factory.PasswordEncoderFactories; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @Configuration @EnableWebSecurity -public class WebSecurityConfig { +public class WebSecurityConfig{ @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { - http.authorizeHttpRequests((requests) -> requests - .requestMatchers("/", "/accueil").permitAll() - .requestMatchers("/accueil", "/login", "/inscription/**", "/searchArticle", "/profile/**").permitAll() + http.authorizeHttpRequests((requests) -> requests.requestMatchers("/", "/accueil").permitAll() + .requestMatchers("/login").permitAll() .requestMatchers("/css/**", "/images/**", "/assets/**", "/img/**", "/js/**").permitAll() .requestMatchers("/admin").hasRole("ADMIN") .anyRequest().authenticated()) .formLogin((form) -> form.loginPage("/login").defaultSuccessUrl("/", true)) - .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true) - .deleteCookies("JSESSIONID").logoutSuccessUrl("/logout") + .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true).deleteCookies("JSESSIONID").logoutSuccessUrl("/filmLogout") .logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll()); return http.build(); } + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + + } + +// @Bean +// public PasswordEncoder passwordEncoder() { +// return PasswordEncoderFactories.createDelegatingPasswordEncoder(); +// } + } diff --git a/src/main/resources/templates/modele-page.html b/src/main/resources/templates/modele-page.html index 481cc90..081eae0 100644 --- a/src/main/resources/templates/modele-page.html +++ b/src/main/resources/templates/modele-page.html @@ -88,6 +88,7 @@ © 2024 Copyright: + \ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/security/login.html similarity index 72% rename from src/main/resources/templates/login.html rename to src/main/resources/templates/security/login.html index 432314d..9fdbcb1 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/security/login.html @@ -8,8 +8,14 @@

Pour se Connecter :


-
-
+
+ + +
+
+ + +
From ad35505b44e78d2c3387cf5878ffb0e693358640 Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:12:10 +0200 Subject: [PATCH 03/10] alloooooo --- .../java/fr/eni/enchere/bll/UserService.java | 4 ++-- .../fr/eni/enchere/bll/UserServiceImpl.java | 4 ++-- .../enchere/controllers/LoginController.java | 2 +- .../enchere/security/WebSecurityConfig.java | 24 +++++-------------- 4 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/main/java/fr/eni/enchere/bll/UserService.java b/src/main/java/fr/eni/enchere/bll/UserService.java index dfccef9..1a258d1 100644 --- a/src/main/java/fr/eni/enchere/bll/UserService.java +++ b/src/main/java/fr/eni/enchere/bll/UserService.java @@ -6,8 +6,8 @@ import java.util.List; public interface UserService { List listeUtilisateurs(); - UserProfil utilisateur(int id); - UserProfil userByName(String username); + UserProfil utilisateurById(int id); + UserProfil utilisateurByName(String username); void setUtilisateur(UserProfil utilisateur); void deleteUtilisateur(int id); } diff --git a/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java b/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java index 6430758..9938c0e 100644 --- a/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java +++ b/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java @@ -21,12 +21,12 @@ public class UserServiceImpl implements UserService { } @Override - public UserProfil utilisateur(int id) { + public UserProfil utilisateurById(int id) { return userRepository.findById(id); } @Override - public UserProfil userByName(String username) { + public UserProfil utilisateurByName(String username) { return userRepository.findByUsername(username); } diff --git a/src/main/java/fr/eni/enchere/controllers/LoginController.java b/src/main/java/fr/eni/enchere/controllers/LoginController.java index d938a43..cbe15e2 100644 --- a/src/main/java/fr/eni/enchere/controllers/LoginController.java +++ b/src/main/java/fr/eni/enchere/controllers/LoginController.java @@ -29,7 +29,7 @@ public class LoginController { @PostMapping("/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { - UserProfil user = userService.userByName(username); + UserProfil user = userService.utilisateurByName(username); System.out.println("test"); if (user != null && user.getPassword().equals(password)) { return "redirect:/accueil"; diff --git a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java index e866dc1..c8a3ee5 100644 --- a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java @@ -4,39 +4,27 @@ 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.configuration.EnableWebSecurity; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.factory.PasswordEncoderFactories; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @Configuration @EnableWebSecurity -public class WebSecurityConfig{ +public class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { - http.authorizeHttpRequests((requests) -> requests.requestMatchers("/", "/accueil").permitAll() - .requestMatchers("/login").permitAll() + http.authorizeHttpRequests((requests) -> requests + .requestMatchers("/", "/accueil").permitAll() + .requestMatchers("/accueil", "/login", "/inscription/**", "/searchArticle", "/profile/**").permitAll() .requestMatchers("/css/**", "/images/**", "/assets/**", "/img/**", "/js/**").permitAll() .requestMatchers("/admin").hasRole("ADMIN") .anyRequest().authenticated()) .formLogin((form) -> form.loginPage("/login").defaultSuccessUrl("/", true)) - .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true).deleteCookies("JSESSIONID").logoutSuccessUrl("/filmLogout") + .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true) + .deleteCookies("JSESSIONID").logoutSuccessUrl("/logout") .logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll()); return http.build(); } - @Bean - public PasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - - } - -// @Bean -// public PasswordEncoder passwordEncoder() { -// return PasswordEncoderFactories.createDelegatingPasswordEncoder(); -// } - } From dd000d7183cab64174bffe4c6cc644c2f1b1d652 Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:17:40 +0200 Subject: [PATCH 04/10] test --- .../java/fr/eni/enchere/controllers/ProfileController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/eni/enchere/controllers/ProfileController.java b/src/main/java/fr/eni/enchere/controllers/ProfileController.java index 392eccd..88f2476 100644 --- a/src/main/java/fr/eni/enchere/controllers/ProfileController.java +++ b/src/main/java/fr/eni/enchere/controllers/ProfileController.java @@ -31,7 +31,7 @@ public class ProfileController { // Obtenez les détails de l'utilisateur authentifié String username = authentication.getName(); // Utilisez le service approprié pour récupérer les informations de l'utilisateur à partir du nom d'utilisateur - UserProfil userProfile = userService.utilisateurByName("Jojo"); + UserProfil userProfile = userService.userByName("Jojo"); // Ajoutez les informations du profil à l'objet Model pour les afficher dans la page HTML model.addAttribute("user", new UserProfil()); model.addAttribute("userProfile", userProfile); @@ -47,7 +47,7 @@ public class ProfileController { // Obtenez les détails de l'utilisateur authentifié String username = authentication.getName(); // Utilisez le service approprié pour récupérer les informations de l'utilisateur à partir du nom d'utilisateur - UserProfil userProfile = userService.utilisateurByName("Jojo"); + UserProfil userProfile = userService.userByName("Jojo"); System.out.println(userProfile.getId()); //Supprimer le compte userService.deleteUtilisateur(userProfile.getId()); From e622b4ed69786c4d32ee9bdd976c28f222f680d3 Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:19:13 +0200 Subject: [PATCH 05/10] =?UTF-8?q?zoigbheuiohbuioebh=C3=A7o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/eni/enchere/controllers/AccueilController.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/fr/eni/enchere/controllers/AccueilController.java b/src/main/java/fr/eni/enchere/controllers/AccueilController.java index c79871c..6753d1c 100644 --- a/src/main/java/fr/eni/enchere/controllers/AccueilController.java +++ b/src/main/java/fr/eni/enchere/controllers/AccueilController.java @@ -38,9 +38,4 @@ public class AccueilController { return "accueil"; } - @GetMapping("/login") - public String login(Model modele) { - return "login"; - } - } From 74ac33bf5f1bfdd2059bd654946b5c18a480b5cb Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:22:45 +0200 Subject: [PATCH 06/10] securityConfig --- .../enchere/security/WebSecurityConfig.java | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java index e866dc1..32724f7 100644 --- a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java @@ -4,39 +4,28 @@ 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.configuration.EnableWebSecurity; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.factory.PasswordEncoderFactories; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @Configuration @EnableWebSecurity -public class WebSecurityConfig{ +public class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { - http.authorizeHttpRequests((requests) -> requests.requestMatchers("/", "/accueil").permitAll() - .requestMatchers("/login").permitAll() + http.authorizeHttpRequests((requests) -> requests + .requestMatchers("/", "/accueil").permitAll() + .requestMatchers("/accueil", "/login", "/inscription/**", "/searchArticle", "/profile/**").permitAll() .requestMatchers("/css/**", "/images/**", "/assets/**", "/img/**", "/js/**").permitAll() + .requestMatchers("/newArticle").authenticated() .requestMatchers("/admin").hasRole("ADMIN") .anyRequest().authenticated()) .formLogin((form) -> form.loginPage("/login").defaultSuccessUrl("/", true)) - .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true).deleteCookies("JSESSIONID").logoutSuccessUrl("/filmLogout") + .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true) + .deleteCookies("JSESSIONID").logoutSuccessUrl("/logout") .logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll()); return http.build(); } - @Bean - public PasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - - } - -// @Bean -// public PasswordEncoder passwordEncoder() { -// return PasswordEncoderFactories.createDelegatingPasswordEncoder(); -// } - } From c1d0ccf39e2189f50cf812d380f99b91a1070103 Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:23:39 +0200 Subject: [PATCH 07/10] securityConfig --- src/main/java/fr/eni/enchere/security/WebSecurityConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java index 32724f7..548cc21 100644 --- a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java @@ -17,7 +17,7 @@ public class WebSecurityConfig { .requestMatchers("/", "/accueil").permitAll() .requestMatchers("/accueil", "/login", "/inscription/**", "/searchArticle", "/profile/**").permitAll() .requestMatchers("/css/**", "/images/**", "/assets/**", "/img/**", "/js/**").permitAll() - .requestMatchers("/newArticle").authenticated() + .requestMatchers("/article/**").authenticated() .requestMatchers("/admin").hasRole("ADMIN") .anyRequest().authenticated()) .formLogin((form) -> form.loginPage("/login").defaultSuccessUrl("/", true)) @@ -28,4 +28,4 @@ public class WebSecurityConfig { return http.build(); } -} +} \ No newline at end of file From 13ea5c03672db9b960a889a1ac7403c44338f2a9 Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:41:20 +0200 Subject: [PATCH 08/10] patch --- .../java/fr/eni/enchere/controllers/ProfileController.java | 2 +- src/main/java/fr/eni/enchere/security/WebSecurityConfig.java | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/fr/eni/enchere/controllers/ProfileController.java b/src/main/java/fr/eni/enchere/controllers/ProfileController.java index 88f2476..41d8cea 100644 --- a/src/main/java/fr/eni/enchere/controllers/ProfileController.java +++ b/src/main/java/fr/eni/enchere/controllers/ProfileController.java @@ -31,7 +31,7 @@ public class ProfileController { // Obtenez les détails de l'utilisateur authentifié String username = authentication.getName(); // Utilisez le service approprié pour récupérer les informations de l'utilisateur à partir du nom d'utilisateur - UserProfil userProfile = userService.userByName("Jojo"); + UserProfil userProfile = userService.utilisateurByName(username); // Ajoutez les informations du profil à l'objet Model pour les afficher dans la page HTML model.addAttribute("user", new UserProfil()); model.addAttribute("userProfile", userProfile); diff --git a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java index 0241ab9..1f4e974 100644 --- a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java @@ -35,9 +35,4 @@ public class WebSecurityConfig{ } -// @Bean -// public PasswordEncoder passwordEncoder() { -// return PasswordEncoderFactories.createDelegatingPasswordEncoder(); -// } - } From cb79bb38a64cd09e7d730a1fed2e595edb9e4cab Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:42:04 +0200 Subject: [PATCH 09/10] patch --- src/main/java/fr/eni/enchere/controllers/ProfileController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/eni/enchere/controllers/ProfileController.java b/src/main/java/fr/eni/enchere/controllers/ProfileController.java index 41d8cea..e6e3985 100644 --- a/src/main/java/fr/eni/enchere/controllers/ProfileController.java +++ b/src/main/java/fr/eni/enchere/controllers/ProfileController.java @@ -47,7 +47,7 @@ public class ProfileController { // Obtenez les détails de l'utilisateur authentifié String username = authentication.getName(); // Utilisez le service approprié pour récupérer les informations de l'utilisateur à partir du nom d'utilisateur - UserProfil userProfile = userService.userByName("Jojo"); + UserProfil userProfile = userService.utilisateurByName(username); System.out.println(userProfile.getId()); //Supprimer le compte userService.deleteUtilisateur(userProfile.getId()); From 1cd8012fc0372635754df6717bc13a459d51e997 Mon Sep 17 00:00:00 2001 From: Parpaillax Date: Tue, 23 Apr 2024 15:47:24 +0200 Subject: [PATCH 10/10] profile page --- src/main/java/fr/eni/enchere/controllers/ProfileController.java | 2 +- src/main/resources/templates/modele-page.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/eni/enchere/controllers/ProfileController.java b/src/main/java/fr/eni/enchere/controllers/ProfileController.java index e6e3985..1a5d887 100644 --- a/src/main/java/fr/eni/enchere/controllers/ProfileController.java +++ b/src/main/java/fr/eni/enchere/controllers/ProfileController.java @@ -27,7 +27,7 @@ public class ProfileController { // Obtenez l'authentification actuelle Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); // Vérifiez si l'utilisateur est authentifié - if (!authentication.getName().equals("anonymousUser") || true) { //Retirer le true pour le bon fonctionnement + if (!authentication.getName().equals("anonymousUser")) { //Retirer le true pour le bon fonctionnement // Obtenez les détails de l'utilisateur authentifié String username = authentication.getName(); // Utilisez le service approprié pour récupérer les informations de l'utilisateur à partir du nom d'utilisateur diff --git a/src/main/resources/templates/modele-page.html b/src/main/resources/templates/modele-page.html index 081eae0..8980238 100644 --- a/src/main/resources/templates/modele-page.html +++ b/src/main/resources/templates/modele-page.html @@ -25,7 +25,7 @@ Vendre un article