const clickhouse = require('../database/clickhouse'); const jwt = require('jsonwebtoken'); const JWT_SECRET = 'secretkey'; const loginUser = async (req, res) => { try { const { username, password } = req.body; if (!username || !password) { return res.status(400).json({ success: false, message: "Username and password are required", token: null }); } const resultSet = await clickhouse.query({ query: 'SELECT * FROM usertable WHERE username = {user: String} AND password = {pass: String}', query_params: { user: username, pass: password }, format: 'JSONEachRow', }); const rows = await resultSet.json(); if (rows.length === 0) { return res.status(401).json({ success: false, message: "Invalid username or password", token: null }); } const user = rows[0]; const token = jwt.sign( { client_id: user.client_id, userid: user.userid, username: user.username }, JWT_SECRET, { expiresIn: '24h' } ); res.status(200).json({ success: true, message: "Login successful", token: token, }); } catch (error) { console.error("Login Error:", error); res.status(500).json({ success: false, message: "Internal server error", error: error.message }); } }; module.exports = { loginUser };