diff --git a/frontend-next/package-lock.json b/frontend-next/package-lock.json index d3182f5..69d6d5a 100644 --- a/frontend-next/package-lock.json +++ b/frontend-next/package-lock.json @@ -16,6 +16,7 @@ "@headlessui/react": "^1.7.18", "@mui/icons-material": "^5.15.14", "@mui/material": "^5.15.14", + "bad-words": "^3.0.4", "firebase": "^10.6.0", "next": "^14.1.0", "pigeon-maps": "^0.21.3", @@ -2893,6 +2894,22 @@ "npm": ">=6" } }, + "node_modules/bad-words": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/bad-words/-/bad-words-3.0.4.tgz", + "integrity": "sha512-v/Q9uRPH4+yzDVLL4vR1+S9KoFgOEUl5s4axd6NIAq8SV2mradgi4E8lma/Y0cw1ltVdvyegCQQKffCPRCp8fg==", + "dependencies": { + "badwords-list": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/badwords-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/badwords-list/-/badwords-list-1.0.0.tgz", + "integrity": "sha512-oWhaSG67e+HQj3OGHQt2ucP+vAPm1wTbdp2aDHeuh4xlGXBdWwzZ//pfu6swf5gZ8iX0b7JgmSo8BhgybbqszA==" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", diff --git a/frontend-next/package.json b/frontend-next/package.json index 3c73bf5..82be4fc 100644 --- a/frontend-next/package.json +++ b/frontend-next/package.json @@ -17,6 +17,7 @@ "@headlessui/react": "^1.7.18", "@mui/icons-material": "^5.15.14", "@mui/material": "^5.15.14", + "bad-words": "^3.0.4", "firebase": "^10.6.0", "next": "^14.1.0", "pigeon-maps": "^0.21.3", diff --git a/frontend-next/src/components/app/datatypes.js b/frontend-next/src/components/app/datatypes.js index e03dfff..cfa3d48 100644 --- a/frontend-next/src/components/app/datatypes.js +++ b/frontend-next/src/components/app/datatypes.js @@ -1,5 +1,7 @@ import Link from "next/link" import { useEffect, useState } from "react"; +const Filter = require('bad-words') +const filter = new Filter(); // Icons import PersonIcon from '@mui/icons-material/Person'; @@ -97,6 +99,8 @@ const generateColor = (user_str) => { */ export function Chat({ chatObj }) { var message = RMF(chatObj.body) + if (message) + message = filter.clean(message) return (