debut session

Hugo PRADIER 10 months ago
parent 87190e9362
commit f33528f5ed

@ -17,8 +17,9 @@
"dependencies": { "dependencies": {
"@codemirror/collab": "^6.1.1", "@codemirror/collab": "^6.1.1",
"@codemirror/state": "^6.4.1", "@codemirror/state": "^6.4.1",
"@fastify/cookie": "^9.3.1",
"@fastify/cors": "^9.0.0", "@fastify/cors": "^9.0.0",
"@fastify/jwt": "^5.0.1", "@fastify/session": "^10.9.0",
"@fastify/type-provider-typebox": "^4.0.0", "@fastify/type-provider-typebox": "^4.0.0",
"@fastify/websocket": "^10.0.1", "@fastify/websocket": "^10.0.1",
"@sinclair/typebox": "^0.32.9", "@sinclair/typebox": "^0.32.9",
@ -26,7 +27,6 @@
"bcrypt": "^5.1.1", "bcrypt": "^5.1.1",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"fastify": "^4.27.0", "fastify": "^4.27.0",
"fastify-jwt": "^4.2.0",
"nanoid": "^5.0.4", "nanoid": "^5.0.4",
"sqlite3": "^5.1.7", "sqlite3": "^5.1.7",
"zeromq": "6.0.0-beta.19" "zeromq": "6.0.0-beta.19"

@ -9,6 +9,8 @@ import { ChangeSet, Text } from "@codemirror/state";
import { Update, rebaseUpdates } from "@codemirror/collab"; import { Update, rebaseUpdates } from "@codemirror/collab";
import * as db from "./database"; import * as db from "./database";
import bcrypt from "bcrypt"; import bcrypt from "bcrypt";
import { fastifySession } from "@fastify/session";
import { fastifyCookie } from "@fastify/cookie";
const sender = new Push(); const sender = new Push();
await sender.bind(`tcp://127.0.0.1:5557`); await sender.bind(`tcp://127.0.0.1:5557`);
@ -35,6 +37,8 @@ const fastify = Fastify({
}).withTypeProvider<TypeBoxTypeProvider>(); }).withTypeProvider<TypeBoxTypeProvider>();
await fastify.register(cors, { await fastify.register(cors, {
origin: process.env.ALLOW_ORIGIN || "*", origin: process.env.ALLOW_ORIGIN || "*",
credentials: true,
methods: ["GET", "POST", "PUT", "DELETE"],
}); });
fastify.register(websocket); fastify.register(websocket);
fastify.get("/live", { websocket: true }, (socket, req) => { fastify.get("/live", { websocket: true }, (socket, req) => {
@ -70,6 +74,25 @@ fastify.get("/live", { websocket: true }, (socket, req) => {
}); });
}); });
// Création de la route pour la gestion des cookies pour la session
fastify.register(fastifyCookie);
fastify.register(fastifySession, {
secret: "8jYuS75JZuxb6C72nDtH2cY6hnV4B7i35r5c39gQ3h9G9DApAweBsQ47dU9DGpk5",
cookie: {
secure: true,
sameSite: "none",
partitioned: true,
},
saveUninitialized: false,
cookieName: "my-session-cookie",
});
declare module "fastify" {
interface Session {
userKey: string | null;
}
}
fastify.post( fastify.post(
"/run", "/run",
{ {
@ -83,6 +106,7 @@ fastify.post(
(req, reply) => { (req, reply) => {
const { code, language } = req.body; const { code, language } = req.body;
const runner = getRunner(language); const runner = getRunner(language);
if (runner === null) { if (runner === null) {
return reply.status(422).send({ error: "Invalid language" }); return reply.status(422).send({ error: "Invalid language" });
} }
@ -160,11 +184,20 @@ fastify.post(
if (user === null || !(await bcrypt.compare(password, user.password))) { if (user === null || !(await bcrypt.compare(password, user.password))) {
reply.send({ success: false }); reply.send({ success: false });
} else { } else {
request.session.userKey = generateId();
console.log(request.session.userKey);
reply.send({ success: true }); reply.send({ success: true });
} }
} }
); );
/* Route pour se déconnecter */
fastify.post("/users/logout", async (request, reply) => {
console.log(request.session.userKey);
request.session.destroy();
reply.send({ success: true });
});
/* Route pour mettre à jour le login d'un utilisateur */ /* Route pour mettre à jour le login d'un utilisateur */
fastify.put( fastify.put(
"/users/:id/login", "/users/:id/login",
@ -282,6 +315,10 @@ fastify.delete("/users", async (request, reply) => {
/* Route pour récupérer tous les utilisateurs */ /* Route pour récupérer tous les utilisateurs */
fastify.get("/users", async (request, reply) => { fastify.get("/users", async (request, reply) => {
console.log(request.session.userKey);
console.log(request.session.userKey);
const users = await db.selectAllUsers(database); const users = await db.selectAllUsers(database);
reply.send(users); reply.send(users);
}); });
@ -300,8 +337,11 @@ fastify.get(
}, },
async (request, reply) => { async (request, reply) => {
const { id } = request.params; const { id } = request.params;
const user = await db.selectUserById(database, id); console.log(request.session.userKey);
reply.send(user); if (request.session.userKey) {
const user = await db.selectUserById(database, id);
reply.send(user);
}
} }
); );

Loading…
Cancel
Save