This template shows how to perform server side moderation of text written to a Firebase DB.
For instance if a user added the message "I DON'T LIKE THIS APP!! This is POOP!!!" this will get moderated to a - more civilized - non uppercase message: "I don't like this app. This is ****".
See file functions/index.js for the moderation code.
Moderation of the messages is performed using bad-words a bad words remover that uses an external list of bad-words and is currently mostly aimed at filtering english bad words. Also messages that contains mostly upper case characters are re-capitalized correctly using capitalize-sentence.
The dependencies are listed in functions/package.json.
Users anonymously add a message - an object with a text
attribute - to the /messages
list:
/functions-project-12345
/messages
/key-123456
text: "This is my first message!"
/key-123457
text: "IN THIS MESSAGE I AM SHOUTING!!!"
Once the function has ran on the newly added messages it adds two attributes. sanitized
which is true
if message has been looked at and moderated
which is true
if it was detected that the message contained offensive content and was modified:
/functions-project-12345
/messages
/key-123456
text: "This is my first message!",
sanitized: true,
moderated: false
/key-123457
text: "In this message I am shouting."
sanitized: true,
moderated: true
The function triggers every time a message is modified. It exits if the message has already been moderated.
The security rules only allow users to create message but not edit them afterwards. Also it does not allow users to set the sanitized
value. Only the Cloud Function is allowed to modify sanitized
by using an admin authorized reference.
This sample comes with a Function and web-based UI for testing the function. To configure it:
- Create a Firebase Project using the Firebase Console.
- Clone or download this repo and open the
text-moderation
directory. - You must have the Firebase CLI installed. If you don't have it install it with
npm install -g firebase-tools
and then configure it withfirebase login
. - Configure the CLI locally by using
firebase use --add
and select your project in the list. - Install dependencies locally by running:
cd functions; npm install; cd -
- Deploy your project using
firebase deploy
- Open the app using
firebase open hosting:site
, this will open a browser. - Open the app and add messages to the message board. Try to ad bad words into your message and they should get moderated.