import jwt, { Secret, SignOptions } from 'jsonwebtoken';

export default class Token {

    private static caducidad: string = '10h';

    constructor() {}

    // static getJwtToken( payload: any ): string {
    //     return jwt.sign({
    //         usuario: payload
    //     }, process.env.CLAVE_SECRETA || 'pepito123', { expiresIn: this.caducidad });
    // }

    static getJwtToken(payload: any): string {
        const clave: Secret = process.env.CLAVE_SECRETA || 'pepito123';
        const opciones: SignOptions = { 
            // expiresIn: this.caducidad 
              expiresIn: this.caducidad as `${number}${"s" | "m" | "h" | "d" | "w" | "y"}`
        };

        return jwt.sign({ usuario: payload }, clave, opciones);
    }

    static comprobarToken( UsuarioToken: string) {
        return new Promise( ( resolve, reject ) => {
            jwt.verify( UsuarioToken, process.env.CLAVE_SECRETA || 'pepito123', ( err, decoded ) =>{
                if (err) {
                    console.log(err);
                    reject();
                } else {
                    resolve( decoded );
                }
    
            });
        });
    }

}