diff --git a/dashboard/components/CVerticalNavigation.vue b/dashboard/components/CVerticalNavigation.vue index fcff23f..1125813 100644 --- a/dashboard/components/CVerticalNavigation.vue +++ b/dashboard/components/CVerticalNavigation.vue @@ -56,7 +56,7 @@ const { createAlert } = useAlert() async function deleteSnapshot(close: () => any) { await $fetch("/api/snapshot/delete", { method: 'DELETE', - ...signHeaders({ 'Content-Type': 'application/json' }), + headers: useComputedHeaders({ useSnapshotDates: false }).value, body: JSON.stringify({ id: snapshot.value._id.toString(), }) @@ -71,11 +71,7 @@ async function generatePDF() { try { const res = await $fetch('/api/project/generate_pdf', { - ...signHeaders({ - 'x-snapshot-name': snapshot.value.name, - 'x-from': snapshot.value.from.toISOString(), - 'x-to': snapshot.value.to.toISOString(), - }), + headers: useComputedHeaders({ useSnapshotDates: false, custom: { 'x-snapshot-name': snapshot.value.name } }).value, responseType: 'blob' }); @@ -149,8 +145,8 @@ const pricingDrawer = usePricingDrawer(); - +
Projects limit reached
diff --git a/dashboard/components/dialog/CreateSnapshot.vue b/dashboard/components/dialog/CreateSnapshot.vue index ca86b64..0bf7713 100644 --- a/dashboard/components/dialog/CreateSnapshot.vue +++ b/dashboard/components/dialog/CreateSnapshot.vue @@ -42,7 +42,7 @@ const { createAlert } = useAlert() async function confirmSnapshot() { await $fetch("/api/snapshot/create", { method: 'POST', - ...signHeaders({ 'Content-Type': 'application/json' }), + headers: useComputedHeaders({ useSnapshotDates: false }).value, body: JSON.stringify({ name: snapshotName.value, color: currentColor.value, diff --git a/dashboard/server/api/keys/create.post.ts b/dashboard/server/api/keys/create.post.ts index 3e67fbf..47e0a43 100644 --- a/dashboard/server/api/keys/create.post.ts +++ b/dashboard/server/api/keys/create.post.ts @@ -1,7 +1,6 @@ import { getUserProjectFromId } from "~/server/LIVE_DEMO_DATA"; import { ApiSettingsModel, TApiSettings } from "@schema/ApiSettingsSchema"; -import { UserSettingsModel } from "@schema/UserSettings"; import { ProjectModel } from "@schema/ProjectSchema"; import crypto from 'crypto'; diff --git a/dashboard/server/api/project/generate_pdf.ts b/dashboard/server/api/project/generate_pdf.ts index 1cc9978..9c979dc 100644 --- a/dashboard/server/api/project/generate_pdf.ts +++ b/dashboard/server/api/project/generate_pdf.ts @@ -4,7 +4,6 @@ import pdfkit from 'pdfkit'; import { PassThrough } from 'node:stream'; import { ProjectModel } from "@schema/ProjectSchema"; -import { UserSettingsModel } from "@schema/UserSettings"; import { VisitModel } from '@schema/metrics/VisitSchema'; import { EventModel } from '@schema/metrics/EventSchema'; @@ -82,15 +81,13 @@ function createPdf(data: PDFGenerationData) { export default defineEventHandler(async event => { + const data = await getRequestData(event, { requireSchema: false, allowGuests: true, requireRange: false }); + if (!data) return; + const userData = getRequestUser(event); if (!userData?.logged) return setResponseStatus(event, 400, 'NotLogged'); - const currentActiveProject = await UserSettingsModel.findOne({ user_id: userData.id }); - if (!currentActiveProject) return setResponseStatus(event, 400, 'You need to select a project'); - - const project_id = currentActiveProject.active_project_id; - - const project = await ProjectModel.findById(project_id); + const project = await ProjectModel.findById(data.project_id); if (!project) return setResponseStatus(event, 400, 'Project not found'); const snapshotHeader = getHeader(event, 'x-snapshot-name'); diff --git a/dashboard/server/api/project/members/list.ts b/dashboard/server/api/project/members/list.ts index 9cfad9f..a5a937d 100644 --- a/dashboard/server/api/project/members/list.ts +++ b/dashboard/server/api/project/members/list.ts @@ -1,8 +1,7 @@ import { ProjectModel } from "@schema/ProjectSchema"; import { TeamMemberModel } from "@schema/TeamMemberSchema"; import { UserModel } from "@schema/UserSchema"; -import { UserSettingsModel } from "@schema/UserSettings"; -import StripeService from '~/server/services/StripeService'; + export default defineEventHandler(async event => { diff --git a/dashboard/server/api/snapshot/create.post.ts b/dashboard/server/api/snapshot/create.post.ts index 4c4ef29..fc0b9d9 100644 --- a/dashboard/server/api/snapshot/create.post.ts +++ b/dashboard/server/api/snapshot/create.post.ts @@ -1,10 +1,12 @@ import { ProjectModel } from "@schema/ProjectSchema"; import { ProjectSnapshotModel } from "@schema/ProjectSnapshot"; -import { UserSettingsModel } from "@schema/UserSettings"; export default defineEventHandler(async event => { + const data = await getRequestData(event, { requireSchema: false, allowGuests: true, requireRange: false }); + if (!data) return; + const body = await readBody(event); const { name: newSnapshotName, from, to, color: snapshotColor } = body; @@ -19,13 +21,8 @@ export default defineEventHandler(async event => { const userData = getRequestUser(event); if (!userData?.logged) return setResponseStatus(event, 400, 'NotLogged'); - const userSettings = await UserSettingsModel.findOne({ user_id: userData.id }, { active_project_id: 1 }); - if (!userSettings) return setResponseStatus(event, 500, 'Unkwnown error'); - - const currentProjectId = userSettings.active_project_id; - - const project = await ProjectModel.findById(currentProjectId); + const project = await ProjectModel.findById(data.project_id); if (!project) return setResponseStatus(event, 400, 'Project not found'); @@ -34,7 +31,7 @@ export default defineEventHandler(async event => { from: new Date(from), to: new Date(to), color: snapshotColor, - project_id: currentProjectId + project_id: data.project_id }); return newSnapshot.id; diff --git a/dashboard/server/api/snapshot/delete.delete.ts b/dashboard/server/api/snapshot/delete.delete.ts index f0350d8..5c04dd6 100644 --- a/dashboard/server/api/snapshot/delete.delete.ts +++ b/dashboard/server/api/snapshot/delete.delete.ts @@ -1,10 +1,12 @@ import { ProjectModel } from "@schema/ProjectSchema"; import { ProjectSnapshotModel } from "@schema/ProjectSnapshot"; -import { UserSettingsModel } from "@schema/UserSettings"; export default defineEventHandler(async event => { + const data = await getRequestData(event, { requireSchema: false, allowGuests: false, requireRange: false }); + if (!data) return; + const body = await readBody(event); const { id: snapshotId } = body; @@ -14,18 +16,11 @@ export default defineEventHandler(async event => { const userData = getRequestUser(event); if (!userData?.logged) return setResponseStatus(event, 400, 'NotLogged'); - const userSettings = await UserSettingsModel.findOne({ user_id: userData.id }, { active_project_id: 1 }); - - if (!userSettings) return setResponseStatus(event, 500, 'Unkwnown error'); - - const currentProjectId = userSettings.active_project_id; - - const project = await ProjectModel.findById(currentProjectId); + const project = await ProjectModel.findById(data.project_id); if (!project) return setResponseStatus(event, 400, 'Project not found'); - const deletation = await ProjectSnapshotModel.deleteOne({ - project_id: currentProjectId, + project_id: data.project_id, _id: snapshotId });