Commit 16791f79f0000eac469c5b3acafe56fc2ba824ed
1 parent
57e157a4
routage du site
Ajout de la gestion des différents roles utilisateurs \n Ajout des sécurités sur les pages en fonction du role \nModification des pages pour la visibilité et la cohérence du site
Showing
6 changed files
with
26 additions
and
18 deletions
Show diff stats
PFE06/src/main/java/com/PFE/ServerManager/Customer.java
1 | package com.PFE.ServerManager; | 1 | package com.PFE.ServerManager; |
2 | 2 | ||
3 | -import org.springframework.beans.factory.annotation.Autowired; | ||
4 | - | ||
5 | import javax.persistence.*; | 3 | import javax.persistence.*; |
6 | import java.util.Set; | 4 | import java.util.Set; |
7 | 5 | ||
@@ -34,6 +32,9 @@ public class Customer{ | @@ -34,6 +32,9 @@ public class Customer{ | ||
34 | public void setRoles(Set<Role> roles) { this.roles = roles; } | 32 | public void setRoles(Set<Role> roles) { this.roles = roles; } |
35 | public Set<Role> getRoles() { return roles; } | 33 | public Set<Role> getRoles() { return roles; } |
36 | 34 | ||
35 | + public String getRole(){ | ||
36 | + return roles.iterator().next().getRole(); | ||
37 | + } | ||
37 | public void setId(Integer id) { | 38 | public void setId(Integer id) { |
38 | this.customer_id = id; | 39 | this.customer_id = id; |
39 | } | 40 | } |
PFE06/src/main/java/com/PFE/ServerManager/MainController.java
@@ -36,6 +36,7 @@ public class MainController { | @@ -36,6 +36,7 @@ public class MainController { | ||
36 | Authentication auth = SecurityContextHolder.getContext().getAuthentication(); | 36 | Authentication auth = SecurityContextHolder.getContext().getAuthentication(); |
37 | Customer customer = customerRepository.findByPseudo(auth.getName()); | 37 | Customer customer = customerRepository.findByPseudo(auth.getName()); |
38 | modelAndView.addObject("customerName", customer.getPseudo()); | 38 | modelAndView.addObject("customerName", customer.getPseudo()); |
39 | + modelAndView.addObject("customerRole", customer.getRole()); | ||
39 | modelAndView.setViewName("home"); | 40 | modelAndView.setViewName("home"); |
40 | return modelAndView; | 41 | return modelAndView; |
41 | } | 42 | } |
@@ -51,7 +52,7 @@ public class MainController { | @@ -51,7 +52,7 @@ public class MainController { | ||
51 | } | 52 | } |
52 | 53 | ||
53 | @PostMapping(path="/registration") | 54 | @PostMapping(path="/registration") |
54 | - public ModelAndView addNewUser(@RequestParam String pseudo, @RequestParam String password) { | 55 | + public ModelAndView addNewUser(@RequestParam String pseudo, @RequestParam String password, @RequestParam String role) { |
55 | //Model map, ModelAndView ou l'utilisation direct comme dans la méthode précédente sont 3 méthodes qui permettent d'envoyer des informations et donc de changer l'apparence d'une page | 56 | //Model map, ModelAndView ou l'utilisation direct comme dans la méthode précédente sont 3 méthodes qui permettent d'envoyer des informations et donc de changer l'apparence d'une page |
56 | ModelAndView modelAndView = new ModelAndView(); // il n'est peut être pas utile d'utiliser ModelAndView | 57 | ModelAndView modelAndView = new ModelAndView(); // il n'est peut être pas utile d'utiliser ModelAndView |
57 | Customer n = new Customer(); | 58 | Customer n = new Customer(); |
@@ -60,12 +61,11 @@ public class MainController { | @@ -60,12 +61,11 @@ public class MainController { | ||
60 | n.setId((int)(customerRepository.count()+1)); | 61 | n.setId((int)(customerRepository.count()+1)); |
61 | n.setActive(1); | 62 | n.setActive(1); |
62 | Customer temp = customerRepository.findByPseudo(pseudo); | 63 | Customer temp = customerRepository.findByPseudo(pseudo); |
63 | - Role userRole = roleRepository.findByRole("ADMIN"); | 64 | + Role userRole = roleRepository.findByRole(role); |
64 | n.setRoles(new HashSet<Role>(Arrays.asList(userRole))); | 65 | n.setRoles(new HashSet<Role>(Arrays.asList(userRole))); |
65 | 66 | ||
66 | if(temp != null) { | 67 | if(temp != null) { |
67 | modelAndView.addObject("ok", "l'utilisateur existe déjà"); | 68 | modelAndView.addObject("ok", "l'utilisateur existe déjà"); |
68 | - //return "login?fail"; | ||
69 | } | 69 | } |
70 | else { | 70 | else { |
71 | modelAndView.addObject("ok", "l'utilisateur a bien été ajouté"); | 71 | modelAndView.addObject("ok", "l'utilisateur a bien été ajouté"); |
PFE06/src/main/java/com/PFE/ServerManager/SecurityConfig.java
@@ -34,15 +34,15 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { | @@ -34,15 +34,15 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { | ||
34 | protected void configure(HttpSecurity http) throws Exception { | 34 | protected void configure(HttpSecurity http) throws Exception { |
35 | http | 35 | http |
36 | .authorizeRequests() | 36 | .authorizeRequests() |
37 | - .antMatchers("/home").hasAuthority("ADMIN") | ||
38 | - .antMatchers("/registration").permitAll() | 37 | + .antMatchers("/home").hasAnyAuthority("USER","ADMIN") |
38 | + .antMatchers("/registration").hasAuthority("ADMIN") | ||
39 | .antMatchers("/login").permitAll() | 39 | .antMatchers("/login").permitAll() |
40 | .antMatchers("/denied").permitAll() | 40 | .antMatchers("/denied").permitAll() |
41 | .anyRequest().authenticated() | 41 | .anyRequest().authenticated() |
42 | .and() | 42 | .and() |
43 | .formLogin() | 43 | .formLogin() |
44 | .loginPage("/login").failureUrl("/login?error=true") | 44 | .loginPage("/login").failureUrl("/login?error=true") |
45 | - .defaultSuccessUrl("/success") | 45 | + .defaultSuccessUrl("/home") |
46 | .usernameParameter("pseudo") | 46 | .usernameParameter("pseudo") |
47 | .passwordParameter("password") | 47 | .passwordParameter("password") |
48 | .and() | 48 | .and() |
PFE06/src/main/resources/data.sql
1 | /* ce fichier doit être placé dans les ressources afin d'être utilisé */ | 1 | /* ce fichier doit être placé dans les ressources afin d'être utilisé */ |
2 | INSERT INTO "role" VALUES (1,'ADMIN'); | 2 | INSERT INTO "role" VALUES (1,'ADMIN'); |
3 | -INSERT INTO "customer" VALUES (1,1,'$2a$10$GflhaD2IYuErynuOlxS2W.Gp1kXksVdiSviYN/lDYCsuH.lVm6Ph2','admin'); | 3 | +INSERT INTO "role" VALUES (2,'USER'); |
4 | +INSERT INTO "customer" VALUES (1,1,'$2a$10$GflhaD2IYuErynuOlxS2W.Gp1kXksVdiSviYN/lDYCsuH.lVm6Ph2','admin'); /*pseudo : admin // password : admin // role : ADMIN*/ | ||
4 | INSERT INTO "customer_role" VALUES (1,1); | 5 | INSERT INTO "customer_role" VALUES (1,1); |
5 | -INSERT INTO "customer" VALUES (2,1,'$2a$10$GflhaD2IYuErynuOlxS2W.Gp1kXksVdiSviYN/lDYCsuH.lVm6Ph2','root'); | ||
6 | -INSERT INTO "customer_role" VALUES (2,1); | ||
7 | \ No newline at end of file | 6 | \ No newline at end of file |
7 | +INSERT INTO "customer" VALUES (2,1,'$2a$10$0Fnls/gTQS1zA6rj1ZlxfuyyKNpCBDA1tcCqQMroPDIj1fRyhgv/O','user'); /*pseudo : user // password : password // role : USER*/ | ||
8 | +INSERT INTO "customer_role" VALUES (2,2); | ||
8 | \ No newline at end of file | 9 | \ No newline at end of file |
PFE06/src/main/resources/templates/home.html
@@ -7,16 +7,15 @@ | @@ -7,16 +7,15 @@ | ||
7 | </head> | 7 | </head> |
8 | <body> | 8 | <body> |
9 | 9 | ||
10 | - <a th:href="@{/login}">Connexion</a> | ||
11 | - <a th:href="@{/registration}">Enregistrer des utilisateurs</a> | ||
12 | - | 10 | + <div th:switch="${customerRole}"> |
11 | + <div th:case="'ADMIN'"><a th:href="@{/registration}">Enregistrer des utilisateurs</a></div> | ||
12 | + <div th:case="'USER'"></div> | ||
13 | + </div> | ||
13 | <form th:action="@{/logout}" method="GET"> | 14 | <form th:action="@{/logout}" method="GET"> |
14 | <button type="Submit">Logout </button> | 15 | <button type="Submit">Logout </button> |
15 | </form> | 16 | </form> |
16 | 17 | ||
17 | - | ||
18 | - <h1 th:utext="${customerName}"> est connecté(e) !</h1> | ||
19 | - | 18 | + <h1><span th:text="${customerName}" th:remove="tag"></span> est connecté(e) !</h1> |
20 | 19 | ||
21 | </body> | 20 | </body> |
22 | </html> | 21 | </html> |
23 | \ No newline at end of file | 22 | \ No newline at end of file |
PFE06/src/main/resources/templates/registration.html
@@ -16,10 +16,17 @@ | @@ -16,10 +16,17 @@ | ||
16 | <label for="password">Password: </label> | 16 | <label for="password">Password: </label> |
17 | <input type="password" id="password" placeholder="Enter Password" name="password"/> | 17 | <input type="password" id="password" placeholder="Enter Password" name="password"/> |
18 | </div> | 18 | </div> |
19 | + <div class="form3"> | ||
20 | + <input type="radio" id="role1" name="role" value="ADMIN"> | ||
21 | + <label for="role1">Admin</label> | ||
22 | + | ||
23 | + <input type="radio" id="role2" name="role" value="USER" checked="checked"> <!-- "checked" empeche l'utilisateur de ne rien séléctionner --> | ||
24 | + <label for="role2">User</label> | ||
25 | + </div> | ||
19 | <button type="submit">Ajouter</button> | 26 | <button type="submit">Ajouter</button> |
20 | </form> | 27 | </form> |
21 | <span th:utext="${ok}"></span> | 28 | <span th:utext="${ok}"></span> |
22 | - <a href="/login">connexion</a> | 29 | + <a th:href="@{/home}">Accueil</a> |
23 | <!--<div th:if="${param.ok}"> | 30 | <!--<div th:if="${param.ok}"> |
24 | <span>L'utilisateur a été ajouté !</span> | 31 | <span>L'utilisateur a été ajouté !</span> |
25 | </div> | 32 | </div> |