|
1 | 1 | const express = require("express"); |
2 | | -require("dotenv").config(); |
3 | | -const bcrypt = require("bcrypt"); |
4 | | -const jwt = require("jsonwebtoken"); |
5 | 2 | const cors = require("cors"); |
| 3 | +require("dotenv").config(); |
| 4 | + |
6 | 5 | const app = express(); |
7 | | -app.use(express.json()); |
8 | | -app.use(cors()); |
9 | 6 | const PORT = process.env.PORT || 3000; |
10 | 7 |
|
11 | | -const users = []; |
12 | | -const tokenBlacklist=[]; |
13 | | - |
14 | | -const JWT_SECRET = process.env.JWT_SECRET || "your_jwt_secret"; |
15 | | -const JWT_EXPIRES_IN = "1h"; |
16 | | - |
17 | | -app.post("/signup",async (req, res) => { |
18 | | - const { email, password } = req.body; |
19 | | - if (users.find(user => user.email === email)) { |
20 | | - return res.status(400).json({ message: "User already exists" });} |
21 | | - const hash = await bcrypt.hash(password, 10); |
22 | | - users.push({ email, password: hash }); |
23 | | - res.json({ message: "User registered" }); |
24 | | -}); |
25 | | - |
26 | | -app.post("/login", async (req, res) => { |
27 | | - const { email, password } = req.body; |
28 | | - const user = users.find((u) => u.email === email); |
29 | | - if (!user) return res.status(400).json({ message: "Invalid credentials" }); |
30 | | - |
31 | | - const match = await bcrypt.compare(password, user.password); |
32 | | - if (!match) return res.status(400).json({ message: "Invalid credentials" }); |
33 | | - |
34 | | - const token = jwt.sign({ email }, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN }); |
35 | | - res.json({ token }); |
36 | | -}); |
37 | | - |
38 | | -function authMiddleware(req, res, next) { |
39 | | - const auth = req.headers.authorization; |
40 | | - if (!auth) return res.status(401).json({ message: "No token" }); |
41 | | - |
42 | | - const token = auth.split(" ")[1]; |
43 | | - if (tokenBlacklist.includes(token)) { |
44 | | - return res.status(403).json({ message: "Logged out" }); |
45 | | - } |
46 | | - |
47 | | - try { |
48 | | - const payload = jwt.verify(token, JWT_SECRET); |
49 | | - req.user = payload; |
50 | | - next(); |
51 | | - } catch { |
52 | | - res.status(403).json({ message: "Invalid token" }); |
53 | | - } |
54 | | -} |
55 | | - |
56 | | - |
57 | | -app.get("/me", authMiddleware, (req, res) => { |
58 | | - res.json({ user: req.user }); |
59 | | -}); |
| 8 | +// Middleware |
| 9 | +app.use(express.json()); |
| 10 | +app.use(cors()); |
60 | 11 |
|
61 | | -app.post("/logout", (req, res) => { |
62 | | - const { token } = req.body; |
63 | | - tokenBlacklist.push(token); |
64 | | - res.json({ message: "Logged out" }); |
65 | | -}); |
| 12 | +// Routes |
| 13 | +const authRoutes = require("./routes/authRoutes"); |
| 14 | +app.use("/api/auth", authRoutes); |
66 | 15 |
|
| 16 | +// Root |
67 | 17 | app.get("/", (req, res) => { |
68 | | - res.send("Collab Canvas server is running!"); |
| 18 | + res.send("Collab Canvas server is running!"); |
69 | 19 | }); |
70 | 20 |
|
71 | 21 | app.listen(PORT, () => { |
72 | | - console.log(`Server listening on port ${PORT}`); |
| 22 | + console.log(`Server listening on port ${PORT}`); |
73 | 23 | }); |
0 commit comments