package com.megatim.apifdxweb.core.impl.administration;
|
|
import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
|
import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
|
import com.google.common.hash.Hashing;
|
import com.megatim.apifdxweb.core.ifaces.administration.TokenGenerationManager;
|
import com.megatim.apifdxweb.dao.ifaces.administration.TokenGenerationDAO;
|
import com.megatim.apifdxweb.model.administration.TokenGeneration;
|
import com.megatim.apifdxweb.model.administration.User;
|
import com.megatim.apifdxweb.model.administration.enums.StatutTokenGeneration;
|
import java.nio.charset.StandardCharsets;
|
import java.time.LocalDateTime;
|
import javax.enterprise.context.Dependent;
|
import javax.inject.Inject;
|
import javax.transaction.Transactional;
|
|
@Dependent
|
public class TokenGenerationManagerImpl extends AbstractGenericManager<TokenGeneration, Long> implements TokenGenerationManager {
|
|
@Inject
|
protected TokenGenerationDAO dao;
|
|
public TokenGenerationManagerImpl() {
|
}
|
|
@Override
|
public GenericDAO<TokenGeneration, Long> getDao() {
|
return dao;
|
}
|
|
@Override
|
public String getEntityIdName() {
|
return "id";
|
}
|
|
@Override
|
@Transactional
|
public void createTokenGeneration(User user, String token, int validite) {
|
TokenGeneration currentTokenGeneration = dao.getCurrentGeneration(user.getUserName());
|
if (currentTokenGeneration != null) {
|
currentTokenGeneration.setStatutTokenGeneration(StatutTokenGeneration.ARCHIVE);
|
dao.update(currentTokenGeneration.getId(), currentTokenGeneration);
|
}
|
|
TokenGeneration tokenGeneration = new TokenGeneration();
|
tokenGeneration.setDateGeneration(LocalDateTime.now());
|
tokenGeneration.setUser(user);
|
tokenGeneration.setToken(getHash(token));
|
tokenGeneration.setValidite(validite);
|
tokenGeneration.setStatutTokenGeneration(StatutTokenGeneration.EN_COURS);
|
|
dao.save(tokenGeneration);
|
}
|
|
@Override
|
public boolean isTokenCorrect(String codeParticipant, String token) {
|
TokenGeneration currentTokenGeneration = dao.getCurrentGeneration(codeParticipant);
|
return currentTokenGeneration != null && currentTokenGeneration.getToken().equals(getHash(token));
|
}
|
|
private String getHash(String value) {
|
return Hashing.sha256().hashString(value, StandardCharsets.UTF_8).toString();
|
}
|
|
}
|