From d15161dba4dc676a449282cfbcb49ca5baf89ab8 Mon Sep 17 00:00:00 2001 From: adjoly Date: Mon, 13 Oct 2025 15:10:54 +0200 Subject: [PATCH 1/5] =?UTF-8?q?=E3=80=8C=E2=9C=A8=E3=80=8D=20feat:=20now?= =?UTF-8?q?=20creating=20user=20on=20the=20user=20api=20when=20registering?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 3 +++ src/api/auth/gRegisterCallback.js | 3 +++ src/api/auth/register.js | 3 +++ src/utils/authUserCreate.js | 24 ++++++++++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 src/utils/authUserCreate.js diff --git a/.env.example b/.env.example index 8ecbc62..72ae740 100644 --- a/.env.example +++ b/.env.example @@ -24,3 +24,6 @@ SMTP_FROM= SMTP_AUTH_USERNAME= SMTP_AUTH_PASSWORD= EMAIL_TO= + +USER_URL= +AUTH_URL= diff --git a/src/api/auth/gRegisterCallback.js b/src/api/auth/gRegisterCallback.js index f79542f..40d8111 100644 --- a/src/api/auth/gRegisterCallback.js +++ b/src/api/auth/gRegisterCallback.js @@ -1,6 +1,7 @@ import axios from 'axios' import authDB from '../../utils/authDB.js'; +import { authUserCreate } from '../../utils/authUserCreate.js'; var env = process.env.NODE_ENV || 'development'; @@ -46,6 +47,8 @@ export async function gRegisterCallback(request, reply, fastify) { authDB.addUser(user.username, ''); + authUserCreate(user.username, fastify) + const token = fastify.jwt.sign(user); return reply diff --git a/src/api/auth/register.js b/src/api/auth/register.js index 7463452..5e10ff1 100644 --- a/src/api/auth/register.js +++ b/src/api/auth/register.js @@ -2,6 +2,7 @@ import bcrypt from 'bcrypt'; import { isValidString } from '../../utils/authUtils.js'; import authDB from '../../utils/authDB.js'; +import { authUserCreate } from '../../utils/authUserCreate.js'; var env = process.env.NODE_ENV || 'development'; @@ -36,6 +37,8 @@ export async function register(request, reply, saltRounds, fastify) { const hash = await bcrypt.hash(password, saltRounds); authDB.addUser(user, hash); + authUserCreate(user, fastify) + const token = fastify.jwt.sign({ user }); return reply diff --git a/src/utils/authUserCreate.js b/src/utils/authUserCreate.js new file mode 100644 index 0000000..d453285 --- /dev/null +++ b/src/utils/authUserCreate.js @@ -0,0 +1,24 @@ +import axios from 'axios'; + +/** + * @param {string} username + * @param {import('fastify').FastifyInstance} fastify + */ +export async function authUserCreate(username, fastify) { + const payload = { + displayName: username, + }; + const cookie = fastify.jwt.sign({ user: "admin" }); + + const url = process.env.USER_URL || "http://localhost:3002/" + + await axios.post( + "http://localhost:3002/users/" + username, + payload, + { + headers: { + 'Cookie': 'token=' + cookie, + }, + } + ); +} From cf59dd07612ab00b40dbf49ca4d11608122cc173 Mon Sep 17 00:00:00 2001 From: adjoly Date: Tue, 14 Oct 2025 13:48:01 +0200 Subject: [PATCH 2/5] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix:=20now?= =?UTF-8?q?=20redirecting=20on=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/auth/gLogCallback.js | 4 +--- src/api/auth/gRegisterCallback.js | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/api/auth/gLogCallback.js b/src/api/auth/gLogCallback.js index 975b7d6..c596cd4 100644 --- a/src/api/auth/gLogCallback.js +++ b/src/api/auth/gLogCallback.js @@ -45,9 +45,7 @@ export async function gLogCallback(request, reply, fastify) { path: '/', secure: env !== 'development', sameSite: 'lax', - }) - .code(200) - .send({ msg: "Login successful" }); + }).redirect('/'); } catch (error) { fastify.log.error(error); reply.code(500).send({ error: 'Internal server error' }); diff --git a/src/api/auth/gRegisterCallback.js b/src/api/auth/gRegisterCallback.js index f79542f..bfa8a11 100644 --- a/src/api/auth/gRegisterCallback.js +++ b/src/api/auth/gRegisterCallback.js @@ -54,9 +54,7 @@ export async function gRegisterCallback(request, reply, fastify) { path: '/', secure: env !== 'development', sameSite: 'lax', - }) - .code(200) - .send({ msg: "Register successful" }); + }).redirect('/'); } catch (error) { fastify.log.error(error); reply.code(500).send({ error: 'Internal server error' }); From 67cae236e1812fa87804c07d49c61c9e0f41faf6 Mon Sep 17 00:00:00 2001 From: adjoly Date: Tue, 14 Oct 2025 13:49:23 +0200 Subject: [PATCH 3/5] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix:=20get?= =?UTF-8?q?ting=20from=20env=20instead?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/auth/gLogCallback.js | 2 +- src/api/auth/gRegisterCallback.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/auth/gLogCallback.js b/src/api/auth/gLogCallback.js index c596cd4..a8c2f20 100644 --- a/src/api/auth/gLogCallback.js +++ b/src/api/auth/gLogCallback.js @@ -45,7 +45,7 @@ export async function gLogCallback(request, reply, fastify) { path: '/', secure: env !== 'development', sameSite: 'lax', - }).redirect('/'); + }).redirect(process.env.CALLBACK_REDIR); } catch (error) { fastify.log.error(error); reply.code(500).send({ error: 'Internal server error' }); diff --git a/src/api/auth/gRegisterCallback.js b/src/api/auth/gRegisterCallback.js index bfa8a11..7ef5afc 100644 --- a/src/api/auth/gRegisterCallback.js +++ b/src/api/auth/gRegisterCallback.js @@ -54,7 +54,7 @@ export async function gRegisterCallback(request, reply, fastify) { path: '/', secure: env !== 'development', sameSite: 'lax', - }).redirect('/'); + }).redirect(process.env.CALLBACK_REDIR); } catch (error) { fastify.log.error(error); reply.code(500).send({ error: 'Internal server error' }); From 036798ab56f649b70ba9e5f524ae64a3164d0065 Mon Sep 17 00:00:00 2001 From: adjoly Date: Tue, 14 Oct 2025 13:54:20 +0200 Subject: [PATCH 4/5] =?UTF-8?q?=E3=80=8C=F0=9F=93=9D=E3=80=8D=20doc:=20add?= =?UTF-8?q?ed=20redir=20env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.env.example b/.env.example index 8ecbc62..ed35459 100644 --- a/.env.example +++ b/.env.example @@ -12,6 +12,8 @@ GRAPH_PORT=3000 ELK_PORT=5601 GOOGLE_CALLBACK_URL=https://localhost:8443/api/v1 +# the url to which the user will be redirected when it logs with google +CALLBACK_REDIR=http://localhost:3000 GOOGLE_CLIENT_SECRET=susAF GOOGLE_CLIENT_ID=Really @@ -24,3 +26,4 @@ SMTP_FROM= SMTP_AUTH_USERNAME= SMTP_AUTH_PASSWORD= EMAIL_TO= + From d80beff543f91abe616e007d2007876145821d0b Mon Sep 17 00:00:00 2001 From: adjoly Date: Tue, 14 Oct 2025 18:24:22 +0200 Subject: [PATCH 5/5] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix:=20fix?= =?UTF-8?q?ed=20cookie=20with=20google=20callback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/auth/gLogCallback.js | 2 +- src/api/auth/gRegisterCallback.js | 2 +- src/utils/authUserCreate.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/api/auth/gLogCallback.js b/src/api/auth/gLogCallback.js index a8c2f20..6b3c78b 100644 --- a/src/api/auth/gLogCallback.js +++ b/src/api/auth/gLogCallback.js @@ -37,7 +37,7 @@ export async function gLogCallback(request, reply, fastify) { return reply.code(400).send({ error: "User does not exist" }); } - const token = fastify.jwt.sign(user); + const token = fastify.jwt.sign({ user: user.username}); return reply .setCookie('token', token, { diff --git a/src/api/auth/gRegisterCallback.js b/src/api/auth/gRegisterCallback.js index 4265413..217fae5 100644 --- a/src/api/auth/gRegisterCallback.js +++ b/src/api/auth/gRegisterCallback.js @@ -49,7 +49,7 @@ export async function gRegisterCallback(request, reply, fastify) { authUserCreate(user.username, fastify) - const token = fastify.jwt.sign(user); + const token = fastify.jwt.sign({ user: user.username}); return reply .setCookie('token', token, { diff --git a/src/utils/authUserCreate.js b/src/utils/authUserCreate.js index d453285..a1d6bba 100644 --- a/src/utils/authUserCreate.js +++ b/src/utils/authUserCreate.js @@ -13,7 +13,7 @@ export async function authUserCreate(username, fastify) { const url = process.env.USER_URL || "http://localhost:3002/" await axios.post( - "http://localhost:3002/users/" + username, + url + "users/" + username, payload, { headers: {