You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Nicolas Garnier 8616474635 Small README update 8 years ago
..
functions Updated the Text-moderation sample to the full sample and to the Functions SDK 0.2.1. 8 years ago
public Updated the Text-moderation sample to the full sample and to the Functions SDK 0.2.1. 8 years ago
README.md Small README update 8 years ago
firebase.json Updated the Text-moderation sample to the full sample and to the Functions SDK 0.2.1. 8 years ago
security.rules.json Updated the Text-moderation sample to the full sample and to the Functions SDK 0.2.1. 8 years ago

README.md

Text Moderation with Firebase Cloud Functions

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 ****".

Functions Code

See file 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 package.json.

Sample Database Structure

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

Trigger rules

The function triggers every time a message is modified. It exits if the message has already been moderated.

Security Rules

The security rules only allow users to create message but not edit them afterwards. Also it does not allows users to set the sanitized value. Only the Functions is allowed to modify sanitized by using an admin authorized reference.

Deploy and test

This sample comes with a web-based UI for testing the function. To test it out:

  • Create a Firebase Project using the Firebase Developer Console
  • Enable Google Provider in the Auth section
  • Import and configure Firebase in the index.html where the TODO is located
  • Deploy your project using firebase deploy
  • Open the app and add messages to the message board. Try to ad bad words into your message and they should get moderated.