Compare commits

...

2 Commits

Author SHA1 Message Date
Hugo PRADIER 7e9aeee401 debut session
continuous-integration/drone/pr Build is failing Details
continuous-integration/drone/push Build is failing Details
10 months ago
Hugo PRADIER f33528f5ed debut session
10 months ago

@ -16,7 +16,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/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",

@ -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" });
} }
@ -162,11 +186,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",
@ -284,6 +317,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);
}); });
@ -302,8 +339,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