Compare commits
	
		
			5 Commits
		
	
	
		
			ec2b975467
			...
			Leo/Backen
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 49b99e14c9 | |||
| 9328601d2d | |||
| 79f4b84b70 | |||
| 0c73f6f44d | |||
| a1bdae9e83 | 
| @ -15,7 +15,7 @@ import java.util.Date; | |||||||
|  |  | ||||||
| public class MockController { | public class MockController { | ||||||
|     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); |     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); | ||||||
|  |     public final UserService userService; | ||||||
|     public final UserRepository userRepo; |     public final UserRepository userRepo; | ||||||
|     public final TokenRepository tokenRepo; |     public final TokenRepository tokenRepo; | ||||||
|     public final TokenService tokenService; |     public final TokenService tokenService; | ||||||
| @ -27,7 +27,8 @@ public class MockController { | |||||||
|     ArrayList<User> mockUsers; |     ArrayList<User> mockUsers; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){ |     public MockController(UserService userService, UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){ | ||||||
|  |         this.userService = userService; | ||||||
|         this.tokenRepo = tokenRepo; |         this.tokenRepo = tokenRepo; | ||||||
|         this.userRepo = userRepo; |         this.userRepo = userRepo; | ||||||
|         this.tokenService = tokenService; |         this.tokenService = tokenService; | ||||||
| @ -45,19 +46,19 @@ public class MockController { | |||||||
|  |  | ||||||
|     @PostMapping("/mock") |     @PostMapping("/mock") | ||||||
|     public void postMock(){ |     public void postMock(){ | ||||||
|  |  | ||||||
|         // user part |         // user part | ||||||
|  |  | ||||||
|  |  | ||||||
|         User herobrine = new User("brine","hero","admin@admin.com","behind","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin")); |         User herobrine = new User("brine","hero","admin@admin.com","behind","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin")); | ||||||
|         User joe = new User("Mama","Joe","student@student.com","roundabout","England",new Date(0), null,Role.Student,passwordEncoder.encode("student")); |         User joe = new User("Mama","Joe","student@student.com","roundabout","England",new Date(0), null,Role.Student,passwordEncoder.encode("student")); | ||||||
|         User meh = new User("Polo","Marco","secretary@secretary.com","a Box","Monaco",new Date(0), null,Role.Secretary,passwordEncoder.encode("secretary")); |         User meh = new User("Polo","Marco","secretary@secretary.com","a Box","Monaco",new Date(0), null,Role.Secretary,passwordEncoder.encode("secretary")); | ||||||
|         User joke = new User("Gaillard","Corentin","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher")); |         User joke = new User("Gaillard","Corentin","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher")); | ||||||
|         User jojo = new User("Bridoux","Justin","teacher2@teacher2.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher")); |         User jojo = new User("Bridoux","Justin","teacher2@teacher2.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher")); | ||||||
|         User lena = new User("Louille","Lena","inscriptionService@InscriptionService.com","no","yes",new Date(0), null,Role.InscriptionService,passwordEncoder.encode("inscriptionService")); |         User lena = new User("Louille","Lena","inscriptionService@InscriptionService.com","no","yes",new Date(0), null,Role.InscriptionService,passwordEncoder.encode("inscriptionService")); | ||||||
|         mockUsers = new ArrayList<>(Arrays.asList(herobrine,joe,meh,joke,lena,jojo)); |  | ||||||
|  |  | ||||||
|         userRepo.saveAll(mockUsers); |         mockUsers = new ArrayList<>(Arrays.asList(joke, herobrine, joe, meh, jojo)); | ||||||
|  |         userService.saveAll(mockUsers); | ||||||
|  |         userService.save(lena); | ||||||
|  |  | ||||||
|  |  | ||||||
|         //Course / Curriculum part |         //Course / Curriculum part | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										43
									
								
								backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | package ovh.herisson.Clyde; | ||||||
|  |  | ||||||
|  | import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess; | ||||||
|  | import org.hibernate.engine.spi.SharedSessionContractImplementor; | ||||||
|  | import org.hibernate.id.IdentifierGenerator; | ||||||
|  |  | ||||||
|  | import java.sql.*; | ||||||
|  | import java.util.Calendar; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.GregorianCalendar; | ||||||
|  |  | ||||||
|  | public class RegNoGenerator implements IdentifierGenerator { | ||||||
|  |     private final UserSaveCounter usv = UserSaveCounter.getInstance(); | ||||||
|  |     @Override | ||||||
|  |     public Object generate(SharedSessionContractImplementor session, Object object) { | ||||||
|  |         try{ | ||||||
|  |             JdbcConnectionAccess jdbccon = session.getJdbcConnectionAccess(); | ||||||
|  |             Connection conn = jdbccon.obtainConnection(); | ||||||
|  |  | ||||||
|  |             Statement statement = conn.createStatement(); | ||||||
|  |  | ||||||
|  |             int n = usv.getCount(); | ||||||
|  |             Calendar c = new GregorianCalendar(); | ||||||
|  |             int y = c.get(Calendar.YEAR); | ||||||
|  |             String query = "select count(reg_no) + "+n+" from Users where reg_no/10000 = " + y%1000; | ||||||
|  |  | ||||||
|  |             ResultSet set = statement.executeQuery(query); | ||||||
|  |             long resp = 0; | ||||||
|  |             if(set.next()){ | ||||||
|  |                 resp = set.getLong(1)+((y%1000)*10000); | ||||||
|  |                 usv.increment(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             conn.close(); | ||||||
|  |             statement.close(); | ||||||
|  |  | ||||||
|  |             return resp; | ||||||
|  |  | ||||||
|  |         } catch (SQLException e) { | ||||||
|  |             throw new RuntimeException(e); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -5,13 +5,10 @@ import org.springframework.data.repository.CrudRepository; | |||||||
| import ovh.herisson.Clyde.Tables.User; | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
| public interface UserRepository extends CrudRepository<User, Long> { | public interface UserRepository extends CrudRepository<User, Long> { | ||||||
|  |  | ||||||
|     User findById(long id); |     User findById(long id); | ||||||
|  |  | ||||||
|     User findByEmail(String email); |     User findByEmail(String email); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Query("select u from User u where u.role = ovh.herisson.Clyde.Tables.Role.Teacher") |     @Query("select u from User u where u.role = ovh.herisson.Clyde.Tables.Role.Teacher") | ||||||
|     Iterable<User> findAllTeachers(); |     Iterable<User> findAllTeachers(); | ||||||
|  |  | ||||||
|  | |||||||
| @ -5,13 +5,15 @@ import org.springframework.stereotype.Service; | |||||||
| import ovh.herisson.Clyde.Repositories.UserRepository; | import ovh.herisson.Clyde.Repositories.UserRepository; | ||||||
| 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 ovh.herisson.Clyde.UserSaveCounter; | ||||||
|  |  | ||||||
| import java.util.*; | import java.util.*; | ||||||
|  |  | ||||||
| @Service | @Service | ||||||
| public class UserService { | public class UserService { | ||||||
|     private final UserRepository userRepo; |     private final UserRepository userRepo; | ||||||
|     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); |     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); | ||||||
|  |     private final UserSaveCounter usc = UserSaveCounter.getInstance(); | ||||||
|     public UserService(UserRepository userRepo){ |     public UserService(UserRepository userRepo){ | ||||||
|         this.userRepo = userRepo; |         this.userRepo = userRepo; | ||||||
|     } |     } | ||||||
| @ -106,10 +108,19 @@ public class UserService { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     public User save(User  user){ |     public User save(User  user){ | ||||||
|  |         usc.reset(); | ||||||
|         user.setPassword(passwordEncoder.encode(user.getPassword())); |         user.setPassword(passwordEncoder.encode(user.getPassword())); | ||||||
|         return userRepo.save(user); |         return userRepo.save(user); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void saveAll(ArrayList<User> list){ | ||||||
|  |         //S'assure que le compteur est bien a 0 | ||||||
|  |         usc.reset(); | ||||||
|  |         userRepo.saveAll(list); | ||||||
|  |         //Reset le compteur a zero pour les futurs ajouts | ||||||
|  |         usc.reset(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public Iterable<User> getAll(){ |     public Iterable<User> getAll(){ | ||||||
|         return userRepo.findAll(); |         return userRepo.findAll(); | ||||||
|     } |     } | ||||||
| @ -131,4 +142,5 @@ public class UserService { | |||||||
|     public void delete(User user) { |     public void delete(User user) { | ||||||
|         userRepo.delete(user); |         userRepo.delete(user); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,6 +1,8 @@ | |||||||
| package ovh.herisson.Clyde.Tables; | package ovh.herisson.Clyde.Tables; | ||||||
|  |  | ||||||
| import jakarta.persistence.*; | import jakarta.persistence.*; | ||||||
|  | import org.hibernate.annotations.GenericGenerator; | ||||||
|  |  | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -8,7 +10,8 @@ import java.util.Date; | |||||||
| @Table(name = "Users") | @Table(name = "Users") | ||||||
| public class User { | public class User { | ||||||
|     @Id |     @Id | ||||||
|     @GeneratedValue(strategy = GenerationType.AUTO) |     @GenericGenerator(name = "userGen", type = ovh.herisson.Clyde.RegNoGenerator.class) | ||||||
|  |     @GeneratedValue(generator = "userGen") | ||||||
|     private Long regNo; |     private Long regNo; | ||||||
|     private String lastName; |     private String lastName; | ||||||
|     private String firstName; |     private String firstName; | ||||||
|  | |||||||
| @ -0,0 +1,25 @@ | |||||||
|  | package ovh.herisson.Clyde; | ||||||
|  |  | ||||||
|  | public final class UserSaveCounter { | ||||||
|  |     private static UserSaveCounter instance; | ||||||
|  |     private int count = 0; | ||||||
|  |  | ||||||
|  |     public void increment() { | ||||||
|  |         this.count+=1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public int getCount() { | ||||||
|  |         return count; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void reset(){ | ||||||
|  |         this.count = 0; | ||||||
|  |     } | ||||||
|  |     public static UserSaveCounter getInstance(){ | ||||||
|  |         if (instance == null){ | ||||||
|  |             instance = new UserSaveCounter(); | ||||||
|  |             return instance; | ||||||
|  |         } | ||||||
|  |         return instance; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,3 +1,2 @@ | |||||||
| spring.jpa.hibernate.ddl-auto=create-drop | spring.jpa.hibernate.ddl-auto=create-drop | ||||||
| spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect | spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect | ||||||
| spring.sql.init.mode=always |  | ||||||
| @ -23,6 +23,7 @@ import ovh.herisson.Clyde.Repositories.TokenRepository; | |||||||
| import ovh.herisson.Clyde.Repositories.UserRepository; | import ovh.herisson.Clyde.Repositories.UserRepository; | ||||||
| import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | ||||||
| import ovh.herisson.Clyde.Services.TokenService; | import ovh.herisson.Clyde.Services.TokenService; | ||||||
|  | import ovh.herisson.Clyde.Services.UserService; | ||||||
| import ovh.herisson.Clyde.Tables.Role; | import ovh.herisson.Clyde.Tables.Role; | ||||||
| import ovh.herisson.Clyde.Tables.Token; | import ovh.herisson.Clyde.Tables.Token; | ||||||
| import ovh.herisson.Clyde.Tables.User; | import ovh.herisson.Clyde.Tables.User; | ||||||
| @ -47,6 +48,8 @@ public class UserControllerTest { | |||||||
|     @Autowired |     @Autowired | ||||||
|     private TokenService tokenService; |     private TokenService tokenService; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     private UserService userService; | ||||||
|     @Autowired |     @Autowired | ||||||
|     private UserRepository userRepository; |     private UserRepository userRepository; | ||||||
|     @Autowired |     @Autowired | ||||||
| @ -79,12 +82,13 @@ public class UserControllerTest { | |||||||
|         tokenRepository.deleteAll(); |         tokenRepository.deleteAll(); | ||||||
|         userRepository.deleteAll(); |         userRepository.deleteAll(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
|     //Verifie qu'un user qui n'a pas les permissions admin ou secretaire ne peut pas post |     //Verifie qu'un user qui n'a pas les permissions admin ou secretaire ne peut pas post | ||||||
|     public void userPostTest(){ |     public void userPostTest(){ | ||||||
|         User god = new User("god","god","admin@admin.com","everywhere","every",new Date(0), null, Role.Admin,"goddoesntneedpassword"); |         User god = new User("god","god","admin@admin.com","everywhere","every",new Date(0), null, Role.Admin,"goddoesntneedpassword"); | ||||||
|         Token godToken = new Token(god, tokenService.generateNewToken(), new Date()); |         Token godToken = new Token(god, tokenService.generateNewToken(), new Date()); | ||||||
|         userRepository.save(god); |         userService.save(god); | ||||||
|         tokenService.saveToken(godToken); |         tokenService.saveToken(godToken); | ||||||
|  |  | ||||||
|         //Can god post herobrine himself ? |         //Can god post herobrine himself ? | ||||||
| @ -97,7 +101,7 @@ public class UserControllerTest { | |||||||
|         //Can noob post herobrine without authorizations (no) |         //Can noob post herobrine without authorizations (no) | ||||||
|         User noob = new User("boon","noob","noob@student.com","everywhere","every",new Date(0), null, Role.Student,"noob"); |         User noob = new User("boon","noob","noob@student.com","everywhere","every",new Date(0), null, Role.Student,"noob"); | ||||||
|         Token noobToken = new Token(noob, tokenService.generateNewToken(), new Date()); |         Token noobToken = new Token(noob, tokenService.generateNewToken(), new Date()); | ||||||
|         userRepository.save(noob); |         userService.save(noob); | ||||||
|         tokenService.saveToken(noobToken); |         tokenService.saveToken(noobToken); | ||||||
|  |  | ||||||
|         with().body(herobrine).contentType(ContentType.JSON).header("Authorization", noobToken.getToken()).when().request("POST", "/user").then().statusCode(401); |         with().body(herobrine).contentType(ContentType.JSON).header("Authorization", noobToken.getToken()).when().request("POST", "/user").then().statusCode(401); | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ import org.junit.jupiter.api.Test; | |||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; | import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; | ||||||
| import org.springframework.test.context.TestPropertySource; | import org.springframework.test.context.TestPropertySource; | ||||||
|  | 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; | ||||||
|  |  | ||||||
| @ -24,6 +25,7 @@ public class UserRepoTest { | |||||||
|  |  | ||||||
|     @BeforeEach |     @BeforeEach | ||||||
|     public void setup(){ |     public void setup(){ | ||||||
|  |         userRepo.deleteAll(); | ||||||
|         User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand", new GregorianCalendar(2005, 4, 3).getTime(), null, Role.Admin,"admin"); |         User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand", new GregorianCalendar(2005, 4, 3).getTime(), null, Role.Admin,"admin"); | ||||||
|         userRepo.save(herobrine); |         userRepo.save(herobrine); | ||||||
|     } |     } | ||||||
| @ -34,8 +36,8 @@ public class UserRepoTest { | |||||||
|     } |     } | ||||||
|     @Test |     @Test | ||||||
|     public void usertest(){ |     public void usertest(){ | ||||||
|         Assert.assertEquals("brine", userRepo.findById(1).getLastName()); |         Assert.assertEquals("brine", userRepo.findByEmail("admin@admin.com").getLastName()); | ||||||
|         Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findById(1).getBirthDate())); |         Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findByEmail("admin@admin.com").getBirthDate())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user