package etunicorn.entity; import com.fasterxml.jackson.annotation.JsonFormat; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import java.math.BigInteger; import java.security.SecureRandom; import java.util.Date; /** * etunicorn-server * Copyright © 2017 Le Club Info Polytech Lille * Tous droits réservés */ @Entity public class Session { // Durée par défaut d'une session en secondes private static final int SESSION_DURATION = 10 * 60; private static SecureRandom random = new SecureRandom(); // TODO Vérifier si c'est bien initialisé qu'une seule fois par éxecution car c'est lourd à initialiser @ManyToOne private Personne personne; @Id private String token; private Date validity; public Session() { } public Session(Personne personne) { this.personne = personne; // From http://stackoverflow.com/a/41156 this.token = new BigInteger(130, random).toString(32); this.validity = new Date(new Date().getTime() + SESSION_DURATION * 1000); } public Session(Personne personne, String token, Date validity) { this.personne = personne; this.token = token; this.validity = validity; } public Personne getPersonne() { return personne; } public void setPersonne(Personne personne) { this.personne = personne; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } @JsonFormat(pattern="YYYY-MM-DD hh:mm:ss") public Date getValidity() { return validity; } public void setValidity(Date validity) { this.validity = validity; } public boolean hasPermission(Permission permission) { return personne.hasPermission(permission); } }