| 
						
						
						
						 |  | @ -1,10 +1,7 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | package ovh.herisson.Clyde.EndPoints; |  |  |  | package ovh.herisson.Clyde.EndPoints; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import jakarta.servlet.http.HttpServletRequest; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.http.HttpStatus; |  |  |  | import org.springframework.http.HttpStatus; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.http.MediaType; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.http.ResponseEntity; |  |  |  | import org.springframework.http.ResponseEntity; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.web.bind.annotation.*; |  |  |  | import org.springframework.web.bind.annotation.*; | 
			
		
	
		
		
			
				
					
					|  |  |  | import ovh.herisson.Clyde.Responses.UnauthorizedResponse; |  |  |  | import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -13,7 +10,7 @@ import ovh.herisson.Clyde.Services.UserService; | 
			
		
	
		
		
			
				
					
					|  |  |  | import ovh.herisson.Clyde.Tables.Role; |  |  |  | import ovh.herisson.Clyde.Tables.Role; | 
			
		
	
		
		
			
				
					
					|  |  |  | import ovh.herisson.Clyde.Tables.User; |  |  |  | import ovh.herisson.Clyde.Tables.User; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.io.IOException; |  |  |  | import java.security.Key; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | import java.util.ArrayList; |  |  |  | import java.util.ArrayList; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.HashMap; |  |  |  | import java.util.HashMap; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.Map; |  |  |  | import java.util.Map; | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -43,7 +40,7 @@ public class UserController { | 
			
		
	
		
		
			
				
					
					|  |  |  |     @PostMapping("/user") |  |  |  |     @PostMapping("/user") | 
			
		
	
		
		
			
				
					
					|  |  |  |     public ResponseEntity<String> postUser(@RequestBody User user,@RequestHeader("Authorization") String authorization){ |  |  |  |     public ResponseEntity<String> postUser(@RequestBody User user,@RequestHeader("Authorization") String authorization){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (!isSecretaryOrAdmin(authorization)) |  |  |  |         if (authServ.isNotSecretaryOrAdmin(authorization)) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             return new UnauthorizedResponse<>(null); |  |  |  |             return new UnauthorizedResponse<>(null); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         userService.save(user); |  |  |  |         userService.save(user); | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -53,7 +50,7 @@ public class UserController { | 
			
		
	
		
		
			
				
					
					|  |  |  |     @GetMapping("/users") |  |  |  |     @GetMapping("/users") | 
			
		
	
		
		
			
				
					
					|  |  |  |     public ResponseEntity<Iterable<HashMap<String,Object>>> getAllUsers(@RequestHeader("Authorization") String authorization){ |  |  |  |     public ResponseEntity<Iterable<HashMap<String,Object>>> getAllUsers(@RequestHeader("Authorization") String authorization){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (!isSecretaryOrAdmin(authorization)) |  |  |  |         if (authServ.isNotSecretaryOrAdmin(authorization)) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             return new UnauthorizedResponse<>(null); |  |  |  |             return new UnauthorizedResponse<>(null); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         Iterable<User> users = userService.getAll(); |  |  |  |         Iterable<User> users = userService.getAll(); | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -78,6 +75,39 @@ public class UserController { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return new ResponseEntity<>("data modified", HttpStatus.OK); |  |  |  |         return new ResponseEntity<>("data modified", HttpStatus.OK); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @GetMapping("/teachers") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     public ResponseEntity<Iterable<HashMap<String,Object>>> getAllTeachers(@RequestHeader("Authorization") String token){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (authServ.getUserFromToken(token) == null) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return new UnauthorizedResponse<>(null); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         Iterable<User> teachers = userService.getAllTeachers(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ArrayList<HashMap<String, Object>> withoutPassword = new ArrayList<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         for (User t: teachers){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             withoutPassword.add(userWithoutPassword(t)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return new ResponseEntity<>(withoutPassword, HttpStatus.OK); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @GetMapping("/students") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     public ResponseEntity<Iterable<HashMap<String,Object>>> getAllStudent(@RequestHeader("Authorization") String token){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (authServ.getUserFromToken(token) == null) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return new UnauthorizedResponse<>(null); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         Iterable<User> teachers = userService.getAllStudents(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ArrayList<HashMap<String, Object>> withoutPassword = new ArrayList<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         for (User t: teachers){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             withoutPassword.add(userWithoutPassword(t)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return new ResponseEntity<>(withoutPassword, HttpStatus.OK); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         /** return user's data except password |  |  |  |         /** return user's data except password | 
			
		
	
		
		
			
				
					
					|  |  |  |          * @param user the user to return |  |  |  |          * @param user the user to return | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -85,7 +115,6 @@ public class UserController { | 
			
		
	
		
		
			
				
					
					|  |  |  |          */ |  |  |  |          */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private HashMap<String,Object> userWithoutPassword(User user){ |  |  |  |     private HashMap<String,Object> userWithoutPassword(User user){ | 
			
		
	
		
		
			
				
					
					|  |  |  |         HashMap<String,Object> toReturn = new HashMap<>(); |  |  |  |         HashMap<String,Object> toReturn = new HashMap<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         toReturn.put("regNo",user.getRegNo()); |  |  |  |         toReturn.put("regNo",user.getRegNo()); | 
			
		
	
		
		
			
				
					
					|  |  |  |         toReturn.put("firstName",user.getFirstName()); |  |  |  |         toReturn.put("firstName",user.getFirstName()); | 
			
		
	
		
		
			
				
					
					|  |  |  |         toReturn.put("lastName",user.getLastName()); |  |  |  |         toReturn.put("lastName",user.getLastName()); | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -93,18 +122,7 @@ public class UserController { | 
			
		
	
		
		
			
				
					
					|  |  |  |         toReturn.put("country",user.getCountry()); |  |  |  |         toReturn.put("country",user.getCountry()); | 
			
		
	
		
		
			
				
					
					|  |  |  |         toReturn.put("address",user.getAddress()); |  |  |  |         toReturn.put("address",user.getAddress()); | 
			
		
	
		
		
			
				
					
					|  |  |  |         toReturn.put("role",user.getRole()); |  |  |  |         toReturn.put("role",user.getRole()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         return toReturn; |  |  |  |         return toReturn; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     private boolean isSecretaryOrAdmin(String authorization){ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (authorization ==null) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             return false; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         User poster = authServ.getUserFromToken(authorization); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (poster == null) return false; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         return poster.getRole() == Role.Secretary || poster.getRole() == Role.Admin; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
	
		
		
			
				
					
					| 
						
						
						
						 |  | 
 |