From 857191f9e5c49a3fe05dbc1ed9ce35ea21f18bea Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Thu, 7 Mar 2024 21:06:40 +0100 Subject: [PATCH 1/8] - Merge ma branche avec celle de Max - Ajoute le champ profilePictureUrl dans les mocks --- .../java/ovh/herisson/Clyde/EndPoints/MockController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index 0fc9a24..5db8001 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -41,10 +41,10 @@ public class MockController { @PostMapping("/mock") public void postMock(){ - User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand",new Date(0), Role.Admin,passwordEncoder.encode("admin")); - User joe = new User("Mama","Joe","student@student.com","roundabout","DaWarudo",new Date(0), Role.Student,passwordEncoder.encode("student")); - User meh = new User("Inspiration","lackOf","secretary@secretary.com","a Box","the street",new Date(0), Role.Teacher,passwordEncoder.encode("secretary")); - User joke = new User("CthemBalls","Lemme","teacher@teacher.com","lab","faculty",new Date(0), Role.Teacher,passwordEncoder.encode("teacher")); + User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin")); + User joe = new User("Mama","Joe","student@student.com","roundabout","DaWarudo",new Date(0), null,Role.Student,passwordEncoder.encode("student")); + User meh = new User("Inspiration","lackOf","secretary@secretary.com","a Box","the street",new Date(0), null,Role.Teacher,passwordEncoder.encode("secretary")); + User joke = new User("CthemBalls","Lemme","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher")); mockUsers = new ArrayList(Arrays.asList(herobrine,joe,meh,joke)); -- 2.46.0 From 206c5e958b274a9bc31744c5097317bb7abf96e9 Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Fri, 8 Mar 2024 10:20:18 +0100 Subject: [PATCH 2/8] =?UTF-8?q?-=20L'email=20passe=20en=20unique=20dans=20?= =?UTF-8?q?la=20table=20User=20-=20utilisation=20de=20la=20m=C3=A9thode=20?= =?UTF-8?q?saveToken=20dans=20les=20mock=20-=20changement=20de=20saveToken?= =?UTF-8?q?=20pour=20recevoir=20un=20token=20en=20param=C3=A8tre=20-=20cr?= =?UTF-8?q?=C3=A9e=20la=20classe=20TokenCleaner=20qui=20g=C3=A8re=20le=20n?= =?UTF-8?q?ettoyage=20des=20token=20(en=20faire=20une=20classe=20permet=20?= =?UTF-8?q?d'en=20avoir=20plusieurs=20instances=20qui=20run=20des=20timer?= =?UTF-8?q?=20en=20parall=C3=A8le)=20-=20premi=C3=A8re=20impl=C3=A9mentati?= =?UTF-8?q?on=20du=20timeout=20(need=20plus=20de=20tests)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Clyde/EndPoints/MockController.java | 8 +++-- .../java/ovh/herisson/Clyde/JdbcConfig.java | 2 ++ .../Clyde/Services/AuthenticatorService.java | 3 +- .../herisson/Clyde/Services/TokenService.java | 12 ++++++-- .../java/ovh/herisson/Clyde/Tables/Token.java | 3 ++ .../java/ovh/herisson/Clyde/Tables/User.java | 1 + .../java/ovh/herisson/Clyde/TokenCleaner.java | 30 +++++++++++++++++++ 7 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index 5db8001..2141e60 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import ovh.herisson.Clyde.Repositories.TokenRepository; import ovh.herisson.Clyde.Repositories.UserRepository; +import ovh.herisson.Clyde.Services.TokenService; import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; @@ -23,13 +24,14 @@ public class MockController { public final UserRepository userRepo; public final TokenRepository tokenRepo; - + public final TokenService tokenService; ArrayList mockUsers; - public MockController(UserRepository userRepo, TokenRepository tokenRepo){ + public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService){ this.tokenRepo = tokenRepo; this.userRepo = userRepo; + this.tokenService = tokenService; } /** Saves an example of each user type by : @@ -51,7 +53,7 @@ public class MockController { userRepo.saveAll(mockUsers); for (User user: mockUsers){ - tokenRepo.save(new Token(user,user.getPassword())); + tokenService.saveToken(new Token(user,user.getPassword()), null); } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/JdbcConfig.java b/backend/src/main/java/ovh/herisson/Clyde/JdbcConfig.java index b6525dc..6df0b74 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/JdbcConfig.java +++ b/backend/src/main/java/ovh/herisson/Clyde/JdbcConfig.java @@ -6,8 +6,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.scheduling.annotation.EnableScheduling; @Configuration +@EnableScheduling public class JdbcConfig { @Bean diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java index f3ae072..0ad8941 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java @@ -1,6 +1,7 @@ package ovh.herisson.Clyde.Services; import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; import java.util.Date; @@ -26,7 +27,7 @@ public class AuthenticatorService { if (user == null){return null;} if (!userService.checkPassword(user,password)){return null;} String token = tokenService.generateNewToken(); - tokenService.saveToken(token,user,expirationDate); + tokenService.saveToken(new Token(user, token),expirationDate); return token; } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index e619fd8..f497bc2 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -1,13 +1,19 @@ package ovh.herisson.Clyde.Services; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import ovh.herisson.Clyde.Repositories.TokenRepository; +import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; +import ovh.herisson.Clyde.TokenCleaner; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.util.Date; +import java.util.Timer; +import java.util.TimerTask; @Service public class TokenService { @@ -31,7 +37,9 @@ public class TokenService { return tokenRepo.getByToken(token).getUser(); } - public void saveToken(String token, User user, Date expirationDate){// todo faire qlq chose de l'expDate - tokenRepo.save(new Token(user,token)); + public void saveToken(Token token, Date expirationDate){ + tokenRepo.save(token); + TokenCleaner cleaner = new TokenCleaner(token, tokenRepo); } + } \ No newline at end of file diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java index 5b61cb9..20d6bf9 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java @@ -1,6 +1,8 @@ package ovh.herisson.Clyde.Tables; import jakarta.persistence.*; +import org.springframework.scheduling.annotation.Scheduled; +import ovh.herisson.Clyde.Repositories.TokenRepository; @Entity public class Token { @@ -19,6 +21,7 @@ public class Token { } public Token(){} + public int getId() { return id; } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java index 95467a4..3ef77f2 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java @@ -16,6 +16,7 @@ public class User { private int regNo; private String lastName; private String firstName; + @Column(unique = true) private String email; private String address; private String country; diff --git a/backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java b/backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java new file mode 100644 index 0000000..1102741 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java @@ -0,0 +1,30 @@ +package ovh.herisson.Clyde; + +import org.springframework.scheduling.annotation.Scheduled; +import ovh.herisson.Clyde.Repositories.TokenRepository; +import ovh.herisson.Clyde.Tables.Role; +import ovh.herisson.Clyde.Tables.Token; +import ovh.herisson.Clyde.Tables.User; + +import java.util.Date; +import java.util.Timer; +import java.util.TimerTask; + +public class TokenCleaner { + private Token token; + private TokenRepository tokenRepo; + + public TokenCleaner(Token token, TokenRepository tokenRepo){ + this.token = token; + this.tokenRepo = tokenRepo; + Timer timer = new Timer(); + timer.schedule(autoDeleteTokenTask, 30000); + } + + TimerTask autoDeleteTokenTask = new TimerTask() { + public void run() { + tokenRepo.delete(token); + } + }; + +} -- 2.46.0 From a297641fa957d4bc542cda4426dc5123c76111cb Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Fri, 8 Mar 2024 17:45:16 +0100 Subject: [PATCH 3/8] =?UTF-8?q?-=20Ajout=20de=20la=20date=20d'expiration?= =?UTF-8?q?=20dans=20la=20table=20token=20-=20Suppression=20de=20TokenClea?= =?UTF-8?q?ner=20et=20d=C3=A9placement=20de=20la=20fonction=20de=20suppres?= =?UTF-8?q?sion=20des=20token=20dans=20Token=20Service=20-=20Impl=C3=A9men?= =?UTF-8?q?tation=20fonctionnelle=20de=20la=20nouvelle=20strat=C3=A9gie=20?= =?UTF-8?q?de=20suppression=20des=20tokens=20:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Clyde/EndPoints/MockController.java | 12 +++++++- .../Clyde/Services/AuthenticatorService.java | 2 +- .../herisson/Clyde/Services/TokenService.java | 23 +++++++++----- .../java/ovh/herisson/Clyde/Tables/Token.java | 14 ++++++++- .../java/ovh/herisson/Clyde/TokenCleaner.java | 30 ------------------- 5 files changed, 41 insertions(+), 40 deletions(-) delete mode 100644 backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index 2141e60..f4ae1b0 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -14,6 +14,7 @@ import ovh.herisson.Clyde.Tables.User; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Date; @RestController @@ -53,7 +54,16 @@ public class MockController { userRepo.saveAll(mockUsers); for (User user: mockUsers){ - tokenService.saveToken(new Token(user,user.getPassword()), null); + //Petit test pour être sur de delete les bons tokens + if (user.getLastName().equals("brine")){ + Calendar c = Calendar.getInstance(); + c.setTime(new Date()); + c.add(Calendar.DAY_OF_WEEK, 1); + tokenService.saveToken(new Token(user,user.getPassword(), c.getTime())); + }else{ + tokenService.saveToken(new Token(user,user.getPassword(), new Date())); + } + } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java index 0ad8941..4cd1939 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java @@ -27,7 +27,7 @@ public class AuthenticatorService { if (user == null){return null;} if (!userService.checkPassword(user,password)){return null;} String token = tokenService.generateNewToken(); - tokenService.saveToken(new Token(user, token),expirationDate); + tokenService.saveToken(new Token(user, token,expirationDate)); return token; } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index f497bc2..2e09bcc 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -1,19 +1,15 @@ package ovh.herisson.Clyde.Services; -import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import ovh.herisson.Clyde.Repositories.TokenRepository; -import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; -import ovh.herisson.Clyde.TokenCleaner; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; +import java.util.Calendar; import java.util.Date; -import java.util.Timer; -import java.util.TimerTask; @Service public class TokenService { @@ -37,9 +33,22 @@ public class TokenService { return tokenRepo.getByToken(token).getUser(); } - public void saveToken(Token token, Date expirationDate){ + public void saveToken(Token token){ tokenRepo.save(token); - TokenCleaner cleaner = new TokenCleaner(token, tokenRepo); } + //Tous les jours a minuit + @Scheduled(cron = "0 0 0 * * ?") + public void autoDeleteToken() { + for (Token t: tokenRepo.findAll()){ + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + + Calendar cal2 = Calendar.getInstance(); + cal2.setTime(t.getExpirationDate()); + if (cal.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR)){ + tokenRepo.delete(t); + } + } + }; } \ No newline at end of file diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java index 20d6bf9..00d7ea0 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java @@ -4,6 +4,8 @@ import jakarta.persistence.*; import org.springframework.scheduling.annotation.Scheduled; import ovh.herisson.Clyde.Repositories.TokenRepository; +import java.util.Date; + @Entity public class Token { @GeneratedValue(strategy = GenerationType.AUTO) @@ -14,10 +16,12 @@ public class Token { @JoinColumn(name ="Users") private User user; private String token; + private Date expirationDate; - public Token(User user, String token){ + public Token(User user, String token, Date expirationDate){ this.user = user; this.token = token; + this.expirationDate = expirationDate; } public Token(){} @@ -40,4 +44,12 @@ public class Token { public void setToken(String data) { this.token = data; } + + public void setExpirationDate(Date date){ + this.expirationDate = date; + } + + public Date getExpirationDate(){ + return expirationDate; + } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java b/backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java deleted file mode 100644 index 1102741..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java +++ /dev/null @@ -1,30 +0,0 @@ -package ovh.herisson.Clyde; - -import org.springframework.scheduling.annotation.Scheduled; -import ovh.herisson.Clyde.Repositories.TokenRepository; -import ovh.herisson.Clyde.Tables.Role; -import ovh.herisson.Clyde.Tables.Token; -import ovh.herisson.Clyde.Tables.User; - -import java.util.Date; -import java.util.Timer; -import java.util.TimerTask; - -public class TokenCleaner { - private Token token; - private TokenRepository tokenRepo; - - public TokenCleaner(Token token, TokenRepository tokenRepo){ - this.token = token; - this.tokenRepo = tokenRepo; - Timer timer = new Timer(); - timer.schedule(autoDeleteTokenTask, 30000); - } - - TimerTask autoDeleteTokenTask = new TimerTask() { - public void run() { - tokenRepo.delete(token); - } - }; - -} -- 2.46.0 From 54c0f9069e20c1e084f593881790a7698a0f6229 Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Sat, 9 Mar 2024 10:45:04 +0100 Subject: [PATCH 4/8] =?UTF-8?q?-=20Impl=C3=A9mentation=20de=20la=20limite?= =?UTF-8?q?=20de=205=20tokens=20par=20utilisateurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ovh/herisson/Clyde/EndPoints/MockController.java | 11 +++++++++++ .../herisson/Clyde/Repositories/TokenRepository.java | 4 ++++ .../ovh/herisson/Clyde/Services/TokenService.java | 6 ++++++ 3 files changed, 21 insertions(+) diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index f4ae1b0..9f9dcc0 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -67,6 +67,17 @@ public class MockController { } } + //Nous allons donner des tokens a herobrine pour tester la limite de token + @PostMapping("/herobrine") + public void giveHerobrineTokens(){ + User herobrine = userRepo.findById(1); + Calendar c = Calendar.getInstance(); + for (int i = 1; i <= 7; i++){ + Token t = new Token(herobrine, herobrine.getPassword(), c.getTime()); + c.add(Calendar.DAY_OF_YEAR, 1); + tokenService.saveToken(t); + } + } @DeleteMapping("/mock") public void deleteMock(){ for (User user:mockUsers){ diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/TokenRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/TokenRepository.java index d375e7a..d3b422a 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/TokenRepository.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/TokenRepository.java @@ -4,9 +4,13 @@ import org.springframework.data.repository.CrudRepository; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; +import java.util.ArrayList; + public interface TokenRepository extends CrudRepository { Token getByToken(String token); Iterable getByUser(User user); + + ArrayList getByUserOrderByExpirationDate(User user); } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index 2e09bcc..6dd0cfb 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -8,6 +8,7 @@ import ovh.herisson.Clyde.Tables.User; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -34,6 +35,11 @@ public class TokenService { } public void saveToken(Token token){ + //Si l'utilisateur a déja 5 token delete celui qui devait expirer le plus vite + ArrayList tokenList = tokenRepo.getByUserOrderByExpirationDate(token.getUser()); + if (tokenList.size() == 5){ + tokenRepo.delete(tokenList.get(0)); + } tokenRepo.save(token); } -- 2.46.0 From 02afc3df477b18c73479a63d1aa2d6f5f403bf3e Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Sat, 9 Mar 2024 12:40:02 +0100 Subject: [PATCH 5/8] =?UTF-8?q?-=20Cr=C3=A9ation=20de=20la=20table=20qui?= =?UTF-8?q?=20stocke=20les=20demandes=20d'inscriptions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Création de la table qui stocke les demandes de réinscription - Création d'un enum pour les états des requetes --- .../Clyde/Tables/InscriptionRequest.java | 108 ++++++++++++++++++ .../Clyde/Tables/ReinscriptionRequest.java | 69 +++++++++++ .../herisson/Clyde/Tables/RequestState.java | 7 ++ 3 files changed, 184 insertions(+) create mode 100644 backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java create mode 100644 backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java create mode 100644 backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java new file mode 100644 index 0000000..2e5bf0d --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java @@ -0,0 +1,108 @@ +package ovh.herisson.Clyde.Tables; + +import jakarta.persistence.*; + +import java.util.Date; + +public class InscriptionRequest { + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + private String firstName; + private String lastName; + private String adress; + private String email; + private String country; + private Date birthDate; + + @ManyToOne + @JoinColumn(name="Cursus") + private Cursus cursus; + private RequestState state; + private String profilePicture; + public InscriptionRequest(){} + public InscriptionRequest(String lastName, String firstName, String adress, String email, String country, Date birthDate, RequestState state, String profilePicture){ + this.lastName = lastName; + this.firstName = firstName; + this.adress = adress; + this.email = email; + this.country = country; + this.birthDate = birthDate; + this.state = state; + } + + public int getId() { + return id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getAdress() { + return adress; + } + + public void setAdress(String adress) { + this.adress = adress; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public Date getBirthDate() { + return birthDate; + } + + public void setBirthDate(Date birthDate) { + this.birthDate = birthDate; + } + + public Cursus getCursus() { + return cursus; + } + + public void setCursus(Cursus cursus) { + this.cursus = cursus; + } + + public RequestState getState() { + return state; + } + + public void setState(RequestState state) { + this.state = state; + } + + public String getProfilePicture() { + return profilePicture; + } + + public void setProfilePicture(String profilePicture) { + this.profilePicture = profilePicture; + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java new file mode 100644 index 0000000..8a56f88 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java @@ -0,0 +1,69 @@ +package ovh.herisson.Clyde.Tables; + +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; + +public class ReinscriptionRequest { + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @ManyToOne + @JoinColumn(name = "User") + private User user; + + @ManyToOne + @JoinColumn(name = "Cursus") + private Cursus newCursus; + private RequestState state; + + //Permet de différencier les demandes de changement et une réinscription dans le même cursus + //Pour la réinscription on va le mettre a 0 + private boolean type; + + public ReinscriptionRequest(){} + + public ReinscriptionRequest(User user, Cursus newCursus, RequestState state, boolean type){ + this.user = user; + this.newCursus = newCursus; + this.state = state; + this.type = type; + } + + public int getId() { + return id; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Cursus getNewCursus() { + return newCursus; + } + + public void setNewCursus(Cursus newCursus) { + this.newCursus = newCursus; + } + + public RequestState getState() { + return state; + } + + public void setState(RequestState state) { + this.state = state; + } + + public boolean isType() { + return type; + } + + public void setType(boolean type) { + this.type = type; + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java new file mode 100644 index 0000000..f0345c1 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java @@ -0,0 +1,7 @@ +package ovh.herisson.Clyde.Tables; + +public enum RequestState { + Accepted, + Refused, + Pending; +} -- 2.46.0 From 94d86ef2529e02372256fda88b76c25009e53820 Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Sat, 9 Mar 2024 19:26:45 +0100 Subject: [PATCH 6/8] Remove the tests and use the compareto method in autoDeleteToken --- .../Clyde/EndPoints/MockController.java | 27 ++++--------------- .../herisson/Clyde/Services/TokenService.java | 6 ++--- 2 files changed, 8 insertions(+), 25 deletions(-) diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index 9f9dcc0..89e9ada 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -53,31 +53,14 @@ public class MockController { userRepo.saveAll(mockUsers); - for (User user: mockUsers){ - //Petit test pour être sur de delete les bons tokens - if (user.getLastName().equals("brine")){ - Calendar c = Calendar.getInstance(); - c.setTime(new Date()); - c.add(Calendar.DAY_OF_WEEK, 1); - tokenService.saveToken(new Token(user,user.getPassword(), c.getTime())); - }else{ - tokenService.saveToken(new Token(user,user.getPassword(), new Date())); - } - - } - } - - //Nous allons donner des tokens a herobrine pour tester la limite de token - @PostMapping("/herobrine") - public void giveHerobrineTokens(){ - User herobrine = userRepo.findById(1); Calendar c = Calendar.getInstance(); - for (int i = 1; i <= 7; i++){ - Token t = new Token(herobrine, herobrine.getPassword(), c.getTime()); - c.add(Calendar.DAY_OF_YEAR, 1); - tokenService.saveToken(t); + c.setTime(new Date()); + + for (User user: mockUsers){ + tokenService.saveToken(new Token(user,user.getPassword(), new Date())); } } + @DeleteMapping("/mock") public void deleteMock(){ for (User user:mockUsers){ diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index 7134508..029661d 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -14,7 +14,6 @@ import java.util.Date; @Service public class TokenService { - TokenRepository tokenRepo; public TokenService(TokenRepository tokenRepo){ @@ -52,13 +51,14 @@ public class TokenService { //Tous les jours a minuit @Scheduled(cron = "0 0 0 * * ?") public void autoDeleteToken() { + System.out.println("triggered"); for (Token t: tokenRepo.findAll()){ Calendar cal = Calendar.getInstance(); - cal.setTime(new Date()); Calendar cal2 = Calendar.getInstance(); cal2.setTime(t.getExpirationDate()); - if (cal.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR)){ + + if (cal.compareTo(cal2) >= 0){ tokenRepo.delete(t); } } -- 2.46.0 From dcf5b26b05ca91b61bab521142b9e135d8a50a5c Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Sat, 9 Mar 2024 19:33:10 +0100 Subject: [PATCH 7/8] Ajusting small things --- .../main/java/ovh/herisson/Clyde/EndPoints/MockController.java | 3 --- .../main/java/ovh/herisson/Clyde/Services/TokenService.java | 1 - 2 files changed, 4 deletions(-) diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index 89e9ada..79e482d 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -53,9 +53,6 @@ public class MockController { userRepo.saveAll(mockUsers); - Calendar c = Calendar.getInstance(); - c.setTime(new Date()); - for (User user: mockUsers){ tokenService.saveToken(new Token(user,user.getPassword(), new Date())); } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index 029661d..9dd337b 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -51,7 +51,6 @@ public class TokenService { //Tous les jours a minuit @Scheduled(cron = "0 0 0 * * ?") public void autoDeleteToken() { - System.out.println("triggered"); for (Token t: tokenRepo.findAll()){ Calendar cal = Calendar.getInstance(); -- 2.46.0 From cfc6c59684fcaaf3a17a27096bc3fb8d7d54183f Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Mon, 11 Mar 2024 11:17:56 +0100 Subject: [PATCH 8/8] =?UTF-8?q?Adjusting=20les=20trucs=20que=20Max=20a=20d?= =?UTF-8?q?emand=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/ovh/herisson/Clyde/Services/TokenService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index 9dd337b..6e73d34 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -42,8 +42,9 @@ public class TokenService { public void saveToken(Token token){ //Si l'utilisateur a déja 5 token delete celui qui devait expirer le plus vite ArrayList tokenList = tokenRepo.getByUserOrderByExpirationDate(token.getUser()); - if (tokenList.size() == 5){ + while(tokenList.size() >= 5){ tokenRepo.delete(tokenList.get(0)); + tokenList.remove(tokenList.get(0)); } tokenRepo.save(token); } -- 2.46.0