fix: 🐛 make sure all redirects are 302

issue: #12
This commit is contained in:
C4illin
2024-05-30 14:33:57 +02:00
parent 8b7bcceb7b
commit 9970fd3f89

View File

@@ -121,7 +121,7 @@ const app = new Elysia()
) )
.get("/setup", ({ redirect }) => { .get("/setup", ({ redirect }) => {
if (!FIRST_RUN) { if (!FIRST_RUN) {
return redirect("/login"); return redirect("/login", 302);
} }
return ( return (
@@ -164,7 +164,7 @@ const app = new Elysia()
}) })
.get("/register", ({ redirect }) => { .get("/register", ({ redirect }) => {
if (!ACCOUNT_REGISTRATION) { if (!ACCOUNT_REGISTRATION) {
return redirect("/login"); return redirect("/login", 302);
} }
return ( return (
@@ -206,7 +206,7 @@ const app = new Elysia()
"/register", "/register",
async ({ body, set, redirect, jwt, cookie: { auth } }) => { async ({ body, set, redirect, jwt, cookie: { auth } }) => {
if (!ACCOUNT_REGISTRATION && !FIRST_RUN) { if (!ACCOUNT_REGISTRATION && !FIRST_RUN) {
return redirect("/login"); return redirect("/login", 302);
} }
if (FIRST_RUN) { if (FIRST_RUN) {
@@ -253,13 +253,13 @@ const app = new Elysia()
sameSite: "strict", sameSite: "strict",
}); });
return redirect("/"); return redirect("/", 302);
}, },
{ body: t.Object({ email: t.String(), password: t.String() }) }, { body: t.Object({ email: t.String(), password: t.String() }) },
) )
.get("/login", async ({ jwt, redirect, cookie: { auth } }) => { .get("/login", async ({ jwt, redirect, cookie: { auth } }) => {
if (FIRST_RUN) { if (FIRST_RUN) {
return redirect("/setup"); return redirect("/setup", 302);
} }
// if already logged in, redirect to home // if already logged in, redirect to home
@@ -267,7 +267,7 @@ const app = new Elysia()
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (user) { if (user) {
return redirect("/"); return redirect("/", 302);
} }
auth.remove(); auth.remove();
@@ -361,7 +361,7 @@ const app = new Elysia()
sameSite: "strict", sameSite: "strict",
}); });
return redirect("/"); return redirect("/", 302);
}, },
{ body: t.Object({ email: t.String(), password: t.String() }) }, { body: t.Object({ email: t.String(), password: t.String() }) },
) )
@@ -370,27 +370,27 @@ const app = new Elysia()
auth.remove(); auth.remove();
} }
return redirect("/login"); return redirect("/login", 302);
}) })
.post("/logoff", ({ redirect, cookie: { auth } }) => { .post("/logoff", ({ redirect, cookie: { auth } }) => {
if (auth?.value) { if (auth?.value) {
auth.remove(); auth.remove();
} }
return redirect("/login"); return redirect("/login", 302);
}) })
.get("/", async ({ jwt, redirect, cookie: { auth, jobId } }) => { .get("/", async ({ jwt, redirect, cookie: { auth, jobId } }) => {
if (FIRST_RUN) { if (FIRST_RUN) {
return redirect("/setup"); return redirect("/setup", 302);
} }
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
// validate jwt // validate jwt
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
// make sure user exists in db // make sure user exists in db
@@ -402,7 +402,7 @@ const app = new Elysia()
if (auth?.value) { if (auth?.value) {
auth.remove(); auth.remove();
} }
return redirect("/login"); return redirect("/login", 302);
} }
// create a new job // create a new job
@@ -509,16 +509,16 @@ const app = new Elysia()
"/upload", "/upload",
async ({ body, redirect, jwt, cookie: { auth, jobId } }) => { async ({ body, redirect, jwt, cookie: { auth, jobId } }) => {
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
if (!jobId?.value) { if (!jobId?.value) {
return redirect("/"); return redirect("/", 302);
} }
const existingJob = await db const existingJob = await db
@@ -526,7 +526,7 @@ const app = new Elysia()
.get(jobId.value, user.id); .get(jobId.value, user.id);
if (!existingJob) { if (!existingJob) {
return redirect("/"); return redirect("/", 302);
} }
const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`; const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`;
@@ -557,16 +557,16 @@ const app = new Elysia()
"/delete", "/delete",
async ({ body, redirect, jwt, cookie: { auth, jobId } }) => { async ({ body, redirect, jwt, cookie: { auth, jobId } }) => {
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
if (!jobId?.value) { if (!jobId?.value) {
return redirect("/"); return redirect("/", 302);
} }
const existingJob = await db const existingJob = await db
@@ -574,7 +574,7 @@ const app = new Elysia()
.get(jobId.value, user.id); .get(jobId.value, user.id);
if (!existingJob) { if (!existingJob) {
return redirect("/"); return redirect("/", 302);
} }
const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`; const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`;
@@ -587,16 +587,16 @@ const app = new Elysia()
"/convert", "/convert",
async ({ body, redirect, jwt, cookie: { auth, jobId } }) => { async ({ body, redirect, jwt, cookie: { auth, jobId } }) => {
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
if (!jobId?.value) { if (!jobId?.value) {
return redirect("/"); return redirect("/", 302);
} }
const existingJob = (await db const existingJob = (await db
@@ -604,7 +604,7 @@ const app = new Elysia()
.get(jobId.value, user.id)) as IJobs; .get(jobId.value, user.id)) as IJobs;
if (!existingJob) { if (!existingJob) {
return redirect("/"); return redirect("/", 302);
} }
const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`; const userUploadsDir = `${uploadsDir}${user.id}/${jobId.value}/`;
@@ -627,7 +627,7 @@ const app = new Elysia()
const fileNames = JSON.parse(body.file_names) as string[]; const fileNames = JSON.parse(body.file_names) as string[];
if (!Array.isArray(fileNames) || fileNames.length === 0) { if (!Array.isArray(fileNames) || fileNames.length === 0) {
return redirect("/"); return redirect("/", 302);
} }
db.run( db.run(
@@ -677,7 +677,7 @@ const app = new Elysia()
}); });
// Redirect the client immediately // Redirect the client immediately
return redirect(`/results/${jobId.value}`); return redirect(`/results/, 302${jobId.value}`);
}, },
{ {
body: t.Object({ body: t.Object({
@@ -688,12 +688,12 @@ const app = new Elysia()
) )
.get("/history", async ({ jwt, redirect, cookie: { auth } }) => { .get("/history", async ({ jwt, redirect, cookie: { auth } }) => {
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
let userJobs = db let userJobs = db
@@ -751,7 +751,7 @@ const app = new Elysia()
"/results/:jobId", "/results/:jobId",
async ({ params, jwt, set, redirect, cookie: { auth, job_id } }) => { async ({ params, jwt, set, redirect, cookie: { auth, job_id } }) => {
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
if (job_id?.value) { if (job_id?.value) {
@@ -761,7 +761,7 @@ const app = new Elysia()
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
const job = (await db const job = (await db
@@ -846,7 +846,7 @@ const app = new Elysia()
"/progress/:jobId", "/progress/:jobId",
async ({ jwt, set, params, redirect, cookie: { auth, job_id } }) => { async ({ jwt, set, params, redirect, cookie: { auth, job_id } }) => {
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
if (job_id?.value) { if (job_id?.value) {
@@ -856,7 +856,7 @@ const app = new Elysia()
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
const job = (await db const job = (await db
@@ -934,12 +934,12 @@ const app = new Elysia()
"/download/:userId/:jobId/:fileName", "/download/:userId/:jobId/:fileName",
async ({ params, jwt, redirect, cookie: { auth } }) => { async ({ params, jwt, redirect, cookie: { auth } }) => {
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
const job = await db const job = await db
@@ -947,7 +947,7 @@ const app = new Elysia()
.get(user.id, params.jobId); .get(user.id, params.jobId);
if (!job) { if (!job) {
return redirect("/results"); return redirect("/results", 302);
} }
// parse from url encoded string // parse from url encoded string
const userId = decodeURIComponent(params.userId); const userId = decodeURIComponent(params.userId);
@@ -960,12 +960,12 @@ const app = new Elysia()
) )
.get("/converters", async ({ jwt, redirect, cookie: { auth } }) => { .get("/converters", async ({ jwt, redirect, cookie: { auth } }) => {
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
return ( return (
@@ -1022,12 +1022,12 @@ const app = new Elysia()
async ({ params, jwt, redirect, cookie: { auth } }) => { async ({ params, jwt, redirect, cookie: { auth } }) => {
// TODO: Implement zip download // TODO: Implement zip download
if (!auth?.value) { if (!auth?.value) {
return redirect("/login"); return redirect("/login", 302);
} }
const user = await jwt.verify(auth.value); const user = await jwt.verify(auth.value);
if (!user) { if (!user) {
return redirect("/login"); return redirect("/login", 302);
} }
const job = await db const job = await db
@@ -1035,7 +1035,7 @@ const app = new Elysia()
.get(user.id, params.jobId); .get(user.id, params.jobId);
if (!job) { if (!job) {
return redirect("/results"); return redirect("/results", 302);
} }
const userId = decodeURIComponent(params.userId); const userId = decodeURIComponent(params.userId);