Skip to content

Commit 8f23a44

Browse files
authored
Merge pull request #1480 from basedosdados/fix/table_get
feat: Implement UUID validation for dataset and table API IDs and update dependencies.
2 parents 03614f8 + 029bd21 commit 8f23a44

5 files changed

Lines changed: 39 additions & 8 deletions

File tree

next/package-lock.json

Lines changed: 19 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

next/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@
4848
"react-query": "^3.39.2",
4949
"rehype-slug": "^6.0.0",
5050
"remark-gfm": "^4.0.0",
51-
"swiper": "^8.4.5"
51+
"swiper": "^8.4.5",
52+
"uuid": "^13.0.0"
5253
},
5354
"devDependencies": {
5455
"cypress": "^14.4.0",

next/pages/api/datasets/getDataset.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
import axios from "axios";
22
import { capitalize } from 'lodash';
3+
import { validate as isUuid } from "uuid";
34

45
const API_URL = `${process.env.NEXT_PUBLIC_API_URL}/api/v1/graphql`;
56

67
export default async function getDataset(id, locale = 'pt') {
8+
if (!id || !isUuid(id)) {
9+
return null;
10+
}
11+
712
try {
813
const res = await axios({
914
url: API_URL,

next/pages/api/tables/getTable.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import axios from "axios";
22
import { cleanGraphQLResponse } from "../../../utils";
33
import { capitalize } from 'lodash';
4+
import { validate as isUuid } from "uuid";
45

56
const API_URL= `${process.env.NEXT_PUBLIC_API_URL}/api/v1/graphql`
67

@@ -146,7 +147,12 @@ async function getTable(id, locale='pt') {
146147
}
147148

148149
export default async function handler(req, res) {
149-
const { id: id, locale } = req.query;
150+
const { id, locale } = req.query;
151+
152+
if (!id || !isUuid(id)) {
153+
return res.status(400).json({ error: "Invalid or missing ID in Table", success: false });
154+
}
155+
150156
const result = await getTable(id, locale);
151157

152158
if(result.errors) return res.status(500).json({error: result.errors, success: false})

next/pages/api/tables/getTableColumns.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import axios from "axios";
2+
import { validate as isUuid } from "uuid";
23

34
async function getTableColumns(id) {
45
const API_URL = `${process.env.NEXT_PUBLIC_API_URL}/tables/${id}/columns/`;
@@ -18,6 +19,11 @@ async function getTableColumns(id) {
1819

1920
export default async function handler(req, res) {
2021
const { id } = req.query;
22+
23+
if (!id || !isUuid(id)) {
24+
return res.status(400).json({ error: "Invalid or missing ID", success: false });
25+
}
26+
2127
const result = await getTableColumns(id);
2228

2329
if (result === "err") return res.status(500).json({ error: "err", success: false });

0 commit comments

Comments
 (0)