Compare commits
	
		
			5 Commits
		
	
	
		
			1f66ac5a4d
			...
			Leo/Backen
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 49b99e14c9 | |||
| 9328601d2d | |||
| 79f4b84b70 | |||
| 0c73f6f44d | |||
| a1bdae9e83 | 
| @ -15,7 +15,7 @@ import java.util.Date; | ||||
|  | ||||
| public class MockController { | ||||
|     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); | ||||
|  | ||||
|     public final UserService userService; | ||||
|     public final UserRepository userRepo; | ||||
|     public final TokenRepository tokenRepo; | ||||
|     public final TokenService tokenService; | ||||
| @ -27,7 +27,8 @@ public class MockController { | ||||
|     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.userRepo = userRepo; | ||||
|         this.tokenService = tokenService; | ||||
| @ -45,21 +46,21 @@ public class MockController { | ||||
|  | ||||
|     @PostMapping("/mock") | ||||
|     public void postMock(){ | ||||
|  | ||||
|         // user part | ||||
|  | ||||
|  | ||||
|         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 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 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")); | ||||
|         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 | ||||
|  | ||||
|         Curriculum infoBab1 = new Curriculum(1,"info"); | ||||
|         Curriculum chemistryBab1 = new Curriculum(1,"chemistry"); | ||||
|  | ||||
							
								
								
									
										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; | ||||
|  | ||||
| public interface UserRepository extends CrudRepository<User, Long> { | ||||
|  | ||||
|     User findById(long id); | ||||
|  | ||||
|     User findByEmail(String email); | ||||
|  | ||||
|  | ||||
|  | ||||
|     @Query("select u from User u where u.role = ovh.herisson.Clyde.Tables.Role.Teacher") | ||||
|     Iterable<User> findAllTeachers(); | ||||
|  | ||||
|  | ||||
| @ -5,13 +5,15 @@ import org.springframework.stereotype.Service; | ||||
| import ovh.herisson.Clyde.Repositories.UserRepository; | ||||
| import ovh.herisson.Clyde.Tables.Role; | ||||
| import ovh.herisson.Clyde.Tables.User; | ||||
| import ovh.herisson.Clyde.UserSaveCounter; | ||||
|  | ||||
| import java.util.*; | ||||
|  | ||||
| @Service | ||||
| public class UserService { | ||||
|     private final UserRepository userRepo; | ||||
|     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); | ||||
|  | ||||
|     private final UserSaveCounter usc = UserSaveCounter.getInstance(); | ||||
|     public UserService(UserRepository userRepo){ | ||||
|         this.userRepo = userRepo; | ||||
|     } | ||||
| @ -106,10 +108,19 @@ public class UserService { | ||||
|     } | ||||
|  | ||||
|     public User save(User  user){ | ||||
|         usc.reset(); | ||||
|         user.setPassword(passwordEncoder.encode(user.getPassword())); | ||||
|         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(){ | ||||
|         return userRepo.findAll(); | ||||
|     } | ||||
| @ -131,4 +142,5 @@ public class UserService { | ||||
|     public void delete(User user) { | ||||
|         userRepo.delete(user); | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -1,6 +1,8 @@ | ||||
| package ovh.herisson.Clyde.Tables; | ||||
|  | ||||
| import jakarta.persistence.*; | ||||
| import org.hibernate.annotations.GenericGenerator; | ||||
|  | ||||
| import java.util.Date; | ||||
|  | ||||
|  | ||||
| @ -8,7 +10,8 @@ import java.util.Date; | ||||
| @Table(name = "Users") | ||||
| public class User { | ||||
|     @Id | ||||
|     @GeneratedValue(strategy = GenerationType.AUTO) | ||||
|     @GenericGenerator(name = "userGen", type = ovh.herisson.Clyde.RegNoGenerator.class) | ||||
|     @GeneratedValue(generator = "userGen") | ||||
|     private Long regNo; | ||||
|     private String lastName; | ||||
|     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.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.Responses.UnauthorizedResponse; | ||||
| import ovh.herisson.Clyde.Services.TokenService; | ||||
| import ovh.herisson.Clyde.Services.UserService; | ||||
| import ovh.herisson.Clyde.Tables.Role; | ||||
| import ovh.herisson.Clyde.Tables.Token; | ||||
| import ovh.herisson.Clyde.Tables.User; | ||||
| @ -47,6 +48,8 @@ public class UserControllerTest { | ||||
|     @Autowired | ||||
|     private TokenService tokenService; | ||||
|  | ||||
|     @Autowired | ||||
|     private UserService userService; | ||||
|     @Autowired | ||||
|     private UserRepository userRepository; | ||||
|     @Autowired | ||||
| @ -79,12 +82,13 @@ public class UserControllerTest { | ||||
|         tokenRepository.deleteAll(); | ||||
|         userRepository.deleteAll(); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     //Verifie qu'un user qui n'a pas les permissions admin ou secretaire ne peut pas post | ||||
|     public void userPostTest(){ | ||||
|         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()); | ||||
|         userRepository.save(god); | ||||
|         userService.save(god); | ||||
|         tokenService.saveToken(godToken); | ||||
|  | ||||
|         //Can god post herobrine himself ? | ||||
| @ -97,7 +101,7 @@ public class UserControllerTest { | ||||
|         //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"); | ||||
|         Token noobToken = new Token(noob, tokenService.generateNewToken(), new Date()); | ||||
|         userRepository.save(noob); | ||||
|         userService.save(noob); | ||||
|         tokenService.saveToken(noobToken); | ||||
|  | ||||
|         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.boot.test.autoconfigure.orm.jpa.DataJpaTest; | ||||
| import org.springframework.test.context.TestPropertySource; | ||||
| import ovh.herisson.Clyde.Services.UserService; | ||||
| import ovh.herisson.Clyde.Tables.Role; | ||||
| import ovh.herisson.Clyde.Tables.User; | ||||
|  | ||||
| @ -24,6 +25,7 @@ public class UserRepoTest { | ||||
|  | ||||
|     @BeforeEach | ||||
|     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"); | ||||
|         userRepo.save(herobrine); | ||||
|     } | ||||
| @ -34,8 +36,8 @@ public class UserRepoTest { | ||||
|     } | ||||
|     @Test | ||||
|     public void usertest(){ | ||||
|         Assert.assertEquals("brine", userRepo.findById(1).getLastName()); | ||||
|         Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findById(1).getBirthDate())); | ||||
|         Assert.assertEquals("brine", userRepo.findByEmail("admin@admin.com").getLastName()); | ||||
|         Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findByEmail("admin@admin.com").getBirthDate())); | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user