const fp = require('fastify-plugin');
const jwt = require('@fastify/jwt');
const bcrypt = require('bcrypt');

module.exports = fp(async function (fastify, opts) {
  fastify.register(jwt, {
    secret: process.env.JWT_SECRET
  });

  fastify.decorate('authenticate', async function (request, reply) {
    try {
      await request.jwtVerify();
    } catch (err) {
      reply.code(401).send({ error: 'Non authentifié' });
    }
  });

  fastify.decorate('hashPassword', async (password) => {
    const saltRounds = 10;
    return bcrypt.hash(password, saltRounds);
  });

  fastify.decorate('comparePassword', async (password, hash) => {
    return bcrypt.compare(password, hash);
  });
});