- Ajout de la date d'expiration dans la table token
- Suppression de TokenCleaner et déplacement de la fonction de suppression des token dans Token Service - Implémentation fonctionnelle de la nouvelle stratégie de suppression des tokens :)
This commit is contained in:
		| @ -14,6 +14,7 @@ import ovh.herisson.Clyde.Tables.User; | |||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
|  | import java.util.Calendar; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
| @RestController | @RestController | ||||||
| @ -53,7 +54,16 @@ public class MockController { | |||||||
|         userRepo.saveAll(mockUsers); |         userRepo.saveAll(mockUsers); | ||||||
|  |  | ||||||
|         for (User user: 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())); | ||||||
|  |             } | ||||||
|  |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ public class AuthenticatorService { | |||||||
|         if (user == null){return null;} |         if (user == null){return null;} | ||||||
|         if (!userService.checkPassword(user,password)){return null;} |         if (!userService.checkPassword(user,password)){return null;} | ||||||
|         String token = tokenService.generateNewToken(); |         String token = tokenService.generateNewToken(); | ||||||
|         tokenService.saveToken(new Token(user, token),expirationDate); |         tokenService.saveToken(new Token(user, token,expirationDate)); | ||||||
|         return token; |         return token; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,19 +1,15 @@ | |||||||
| package ovh.herisson.Clyde.Services; | package ovh.herisson.Clyde.Services; | ||||||
|  |  | ||||||
| import org.springframework.scheduling.annotation.Async; |  | ||||||
| import org.springframework.scheduling.annotation.Scheduled; | import org.springframework.scheduling.annotation.Scheduled; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import ovh.herisson.Clyde.Repositories.TokenRepository; | import ovh.herisson.Clyde.Repositories.TokenRepository; | ||||||
| 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; | ||||||
| import ovh.herisson.Clyde.TokenCleaner; |  | ||||||
|  |  | ||||||
| import java.nio.charset.StandardCharsets; | import java.nio.charset.StandardCharsets; | ||||||
| import java.security.SecureRandom; | import java.security.SecureRandom; | ||||||
|  | import java.util.Calendar; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| import java.util.Timer; |  | ||||||
| import java.util.TimerTask; |  | ||||||
|  |  | ||||||
| @Service | @Service | ||||||
| public class TokenService { | public class TokenService { | ||||||
| @ -37,9 +33,22 @@ public class TokenService { | |||||||
|         return tokenRepo.getByToken(token).getUser(); |         return tokenRepo.getByToken(token).getUser(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void saveToken(Token token, Date expirationDate){ |     public void saveToken(Token token){ | ||||||
|         tokenRepo.save(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); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }; | ||||||
| } | } | ||||||
| @ -4,6 +4,8 @@ import jakarta.persistence.*; | |||||||
| import org.springframework.scheduling.annotation.Scheduled; | import org.springframework.scheduling.annotation.Scheduled; | ||||||
| import ovh.herisson.Clyde.Repositories.TokenRepository; | import ovh.herisson.Clyde.Repositories.TokenRepository; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
| @Entity | @Entity | ||||||
| public class Token { | public class Token { | ||||||
|     @GeneratedValue(strategy = GenerationType.AUTO) |     @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
| @ -14,10 +16,12 @@ public class Token { | |||||||
|     @JoinColumn(name ="Users") |     @JoinColumn(name ="Users") | ||||||
|     private User user; |     private User user; | ||||||
|     private String token; |     private String token; | ||||||
|  |     private Date expirationDate; | ||||||
|  |  | ||||||
|     public Token(User user, String token){ |     public Token(User user, String token, Date expirationDate){ | ||||||
|         this.user = user; |         this.user = user; | ||||||
|         this.token = token; |         this.token = token; | ||||||
|  |         this.expirationDate = expirationDate; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Token(){} |     public Token(){} | ||||||
| @ -40,4 +44,12 @@ public class Token { | |||||||
|     public void setToken(String data) { |     public void setToken(String data) { | ||||||
|         this.token = data; |         this.token = data; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void setExpirationDate(Date date){ | ||||||
|  |         this.expirationDate = date; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Date getExpirationDate(){ | ||||||
|  |         return expirationDate; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -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); |  | ||||||
|         } |  | ||||||
|     }; |  | ||||||
|  |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user