Session.java 1.83 KB
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);
    }
}