Leo/Backend #82
@ -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<User> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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 {
|
||||
}
|
||||
tonitch
commented
ça serrait cool de donner une valeur par défault, comme ça on ne doit pas toujours l'envoyer quand on se connecte ça serrait cool de donner une valeur par défault, comme ça on ne doit pas toujours l'envoyer quand on se connecte
Maxime
commented
c'est le frontend qui doit nous la donner cette valeur par défaut. (en fct de si leuser veux rester connecté ou non c'est le frontend qui doit nous la donner cette valeur par défaut. (en fct de si leuser veux rester connecté ou non
)
tonitch
commented
Cringe... but ok Cringe... but ok
|
||||
|
||||
public Token(){}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
@ -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;
|
||||
|
30
backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java
Normal file
30
backend/src/main/java/ovh/herisson/Clyde/TokenCleaner.java
Normal file
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user
ici aussi faudrait un >=
ban pas vraiment je penses vu que ca s'execute forcément a chaque fois qu'on save un token ! En plus si on permet le >= alors ca casse la limite de 5
Ca permet d'éviter les problème, genre imagine à un moment sans faire attention on va dans la db et on ajoute un token. bha du coup ça crée des tokens à l'infini. si tu met >= au moins t'es tranquil et ça casse pas la limite vu que quand ça passe à 5 ça supprimer quand même
bah alors je peux faire un truc encore plus safe et en delete jusqua ce qu'il en reste 5 comme ca quoi qu'il arrive c'est bon ! De toute manière c'est juste une boucle a ajouter. Ca vous convient ?
yup