Skip to content

Content moderation

tiblu edited this page Dec 9, 2019 · 21 revisions

Describes content moderation setup and principles of Citizen OS

What content can be moderated?

  • Arguments (comments) on public Topics
  • Public topics - https://github.com/citizenos/citizenos-api/issues/5
    • While there is no way to moderate from the system,if there is an absolute need the database administrator can make a Topic private (Topics.visibility) OR mark it as deleted (Topics.deletedAt). We do not encourage deleting data. We also recommend notifying all related parties of such actions to provide visibility.

Future:

  • Images (Avatars, EP content)
  • ..

Basic moderation principles

  • To moderate any content, a report has to be made. For example, to moderate an argument, you as a moderator CAN create a report yourself and then from the moderator e-mail use the link to carry out actions. This is to provide visibility - when you report, every moderator gets a moderator e-mail. This means all the moderators have overview what other moderators are doing.
  • Moderator has to choose the violation type and enter a free text explanation.
  • Never delete anything when possible, but hide it from default views, can be made visible on demand. This provides a mechanism to any User to verify if moderation was justified.
  • Community reporting. Any User can report content. Required to choose the violation type and insert a free text explanation why the content is reported.
  • Community up and down vote

Managing moderators

There are 2 types of moderators:

  • Global moderators - can moderate all Citizen OS content. This is the most common type of moderator, if you host Citizen OS for your own community/company.
  • Partner moderators - can only moderate content of specific Partner. Only relevant if you host Citizen OS and provide a service to Partners. All Partners are registered in Partners table.

All moderators are registered in Moderators table:

  • Moderators that have userId and NOT partnerId are global moderators.
  • Moderators that have userId and partnerId are Partner moderators.

Create/delete global moderator

Create

INSERT INTO "Moderators" (
  "id",
  "userId", 
  "createdAt", 
  "updatedAt"
) 
VALUES (
  md5(random()::text || clock_timestamp()::text)::uuid,
  'faccdf47-3c33-47c0-a974-e63a1dc36b95', 
  NOW(), 
  NOW()
);

Where:

  • faccdf47-3c33-47c0-a974-e63a1dc36b95 - is the id from Users table.

Delete

DELETE FROM "Moderators" WHERE "userId" = 'faccdf47-3c33-47c0-a974-e63a1dc36b95'

Where:

  • faccdf47-3c33-47c0-a974-e63a1dc36b95 - is the id from Users table.

Create/delete Partner moderator

Create

INSERT INTO "Moderators" (
  "id", 
  "userId", 
  "partnerId", 
  "createdAt", 
  "updatedAt"
) 
VALUES (
  md5(random()::text || clock_timestamp()::text)::uuid,
  'faccdf47-3c33-47c0-a974-e63a1dc36b95', 
  '2a666c99-0254-49a6-9a10-b09cbae36f6b', 
  NOW(), 
  NOW()
);

Where:

  • faccdf47-3c33-47c0-a974-e63a1dc36b95 - is the id from Users table.
  • 2a666c99-0254-49a6-9a10-b09cbae36f6b - is the id from Parnters table.

Delete

DELETE FROM "Moderators" 
WHERE "userId" = 'faccdf47-3c33-47c0-a974-e63a1dc36b95' 
  AND "partnerId" = '2a666c99-0254-49a6-9a10-b09cbae36f6b'

Where:

  • faccdf47-3c33-47c0-a974-e63a1dc36b95 - is the id from Users table.
  • 2a666c99-0254-49a6-9a10-b09cbae36f6b - is the id from Parnters table.