datasiswa-app/backend/routes/auth.js

40 lines
1.2 KiB
JavaScript

const express = require("express");
const router = express.Router();
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const db = require("../db");
// Register
router.post("/register", (req, res) => {
const { nama, email, password } = req.body;
const hashedPassword = bcrypt.hashSync(password, 8);
db.query(
"INSERT INTO users (nama, email, password) VALUES (?, ?, ?)",
[nama, email, hashedPassword],
(err, result) => {
if (err) return res.status(500).json(err);
res.json({ message: "User registered!" });
}
);
});
// Login
router.post("/login", (req, res) => {
const { email, password } = req.body;
db.query("SELECT * FROM users WHERE email = ?", [email], (err, result) => {
if (err) return res.status(500).json(err);
if (result.length === 0) return res.status(404).json({ message: "User not found" });
const user = result[0];
const valid = bcrypt.compareSync(password, user.password);
if (!valid) return res.status(401).json({ message: "Invalid password" });
const token = jwt.sign({ id: user.id, email: user.email }, "SECRET_KEY", { expiresIn: "1h" });
res.json({ message: "Login success", token, user });
});
});
module.exports = router;