export default function handler(req, res) { // const sqlite3 = require('sqlite3').verbose(); // console.log(req.body) const sqlite3 = require('sqlite3'); const argon2 = require('argon2'); const jwt = require('jsonwebtoken'); // Connect to the SQLite database const db = new sqlite3.Database('data/appUser.db'); // Fetch the user record const username = req.body.email; // console.log(username) const sql = 'SELECT * FROM user WHERE email = ?'; db.get(sql, [username], async (err, userRecord) => { if (err) { console.error(err); return; } if (userRecord) { const storedHash = userRecord.pass; console.log(storedHash) const providedPassword = req.body.password; try { // Verify the provided password with the stored hash const isPasswordValid = await argon2.verify(storedHash, providedPassword); if (isPasswordValid) { // Passwords match, generate JWT token const secretKey = process.env.TOKEN_HEADER_KEY; const tokenPayload = { email:userRecord.email, role: userRecord.type, exp: Math.floor(Date.now() / 1000) + 3600*24*7, }; const jwtToken = jwt.sign(tokenPayload, secretKey, { algorithm: 'HS256' }); const jwtTokenData ={ data:{ access_token: username: username, exp: Math.floor(Date.now() / 1000) + 3600*24*7, } }; // Return the JWT token res.status(200).json(jwtToken); console.log(jwtToken); } else { console.log('Invalid password'); } } catch (err) { console.error(err); } } else { console.log('User not found'); } // Close the database connection db.close(); }); // res.status(200).json({ name: 'John Doe' }); }