askhjdgkjasghdfjahs
This commit is contained in:
23
src/middleware/auth.js
Normal file
23
src/middleware/auth.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import jwt from "jsonwebtoken";
|
||||
|
||||
export function authMiddleware(req, res, next) {
|
||||
const authHeader = req.headers.authorization;
|
||||
|
||||
if (!authHeader) {
|
||||
return res.status(401).json({ message: "Нет Authorization header" });
|
||||
}
|
||||
|
||||
const [type, token] = authHeader.split(" ");
|
||||
|
||||
if (type !== "Bearer" || !token) {
|
||||
return res.status(401).json({ message: "Неверный формат токена" });
|
||||
}
|
||||
|
||||
try {
|
||||
const payload = jwt.verify(token, process.env.JWT_SECRET);
|
||||
req.user = payload;
|
||||
next();
|
||||
} catch {
|
||||
return res.status(401).json({ message: "Токен невалиден" });
|
||||
}
|
||||
}
|
||||
24
src/routes/auth.js
Normal file
24
src/routes/auth.js
Normal file
@@ -0,0 +1,24 @@
|
||||
import { Router } from "express";
|
||||
import jwt from "jsonwebtoken";
|
||||
|
||||
const router = Router();
|
||||
|
||||
// POST /auth/login
|
||||
router.post("/login", (req, res) => {
|
||||
const { email, password } = req.body;
|
||||
|
||||
// ⚠️ Заглушка
|
||||
if (email !== "test@test.com" || password !== "1234") {
|
||||
return res.status(401).json({ message: "Неверные данные" });
|
||||
}
|
||||
|
||||
const token = jwt.sign(
|
||||
{ id: 1, email },
|
||||
process.env.JWT_SECRET,
|
||||
{ expiresIn: "1h" }
|
||||
);
|
||||
|
||||
res.json({ token });
|
||||
});
|
||||
|
||||
export default router;
|
||||
14
src/routes/user.js
Normal file
14
src/routes/user.js
Normal file
@@ -0,0 +1,14 @@
|
||||
import { Router } from "express";
|
||||
import { authMiddleware } from "../middleware/auth.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
// GET /user/profile
|
||||
router.get("/profile", authMiddleware, (req, res) => {
|
||||
res.json({
|
||||
message: "Приватный профиль",
|
||||
user: req.user,
|
||||
});
|
||||
});
|
||||
|
||||
export default router;
|
||||
23
src/server.js
Normal file
23
src/server.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import express from "express";
|
||||
import dotenv from "dotenv";
|
||||
|
||||
import authRoutes from "./routes/auth.js";
|
||||
import userRoutes from "./routes/user.js";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const app = express();
|
||||
|
||||
app.use(express.json());
|
||||
|
||||
app.use("/auth", authRoutes);
|
||||
app.use("/user", userRoutes);
|
||||
|
||||
app.get("/health", (req, res) => {
|
||||
res.json({ status: "ok" });
|
||||
});
|
||||
|
||||
const PORT = process.env.PORT || 3000;
|
||||
app.listen(PORT, () => {
|
||||
console.log(`🚀 Server started on http://localhost:${PORT}`);
|
||||
});
|
||||
Reference in New Issue
Block a user