const express = require("express");
const session = require("express-session");
const bodyParser = require("body-parser");

const app = express();
const port = 3000;

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(session({
    secret: "hello kitty",
    resave: false,
    saveUninitialized: true,
    cookie: { secret: false }
}))

const isAuthenticated = (req, res, next) => {
    if (req.session.user)
        next();
    else
        res.status(401).send("You are not authenticated!");
}

app.post("/login", (req, res) => {
    const { username, password } = req.body;
    if (username === "admin" && password === "password") {
        req.session.user = { id: 1, username };
        res.send("User logged in");
    } else {
        res.status(401).send("Invaild credentials");
    }
})

app.post("/logout", (req, res) => {
    req.session.destroy((error) => {
        if (error)
            return res.status(500).send("Could not log out.");
        res.send("Logout successful")
    })
})

app.get("/protected", isAuthenticated, (req, res) => {
    res.send("This is a protected route");
})

app.get("/profile", isAuthenticated, (req, res) => {
    res.send(`Welcome ${req.session.user.username}`);
})

app.listen(port, (error) => {
    if (error)
        console.log(error);
    console.log(`server is running: http://localhost:${port}`);
})
