Реализация ReadOnly каналов в Mattermost Team Edition

1 000 руб.за час • безналичный расчёт
19 апреля 2019, 10:33 • 1 отклик • 22 просмотра
Язык: Golang

Описание:
Mattermost - OpenSource чат сервер с функционалом, похожим на Slack.
Однако в бесплатной версии у него отсутствует возможность создания каналов, куда могут постить ограниченное количество человек т.е. во все каналы могут постить все приглашённые люди.

Что нужно сделать:
Добавить возможность ведения каналов только для чтения.

Для этого нужно (на наш взгляд, Ваши идеи тоже приветствуются):
1. Собрать Mattermost
2. Изменить код получения сообщения сервером таким образом, чтобы:

2.1. Channel Id и User Id отправителя сверялся со списком заранее заданных
2.1.1 Если канал в списке тех, которые должны быть на чтение, то смотрим userId.
2.1.1.1 Если user id присутствует aka может писать в канал, то сообщение постится как обычно, т.е. его видят все пользователи этого чата, оно добавляется в базу и т.п.
2.1.1.2. Если user id отсутствует, то этот пользователь не может писать в канал и его сообщение игнорируется. Было бы неплохо отправить только этому пользователю уведомление о том, что он пишет в RO канал
2.1.2 Если канал отсутствует в списках, то это обычный канал, куда могут писать все приглашённые пользователи

Срок реализации до 25 апреля.

Минимально рабочий функционал включает в себя RO каналы, которые заданы записями в базе (PostgreSQL).
Записи мы можем добавлять самостоятельно, руками Insert Into...

Если Вы можете сделать вместе с UI до 25, сообщите, но в первую очередь нужны именно RO каналы

Что ожидается на выходе:

  • Бинарный файл mattermost, который мы можем заменить на нашем рабочем сервере
Нас не интересует реализация запрета отправки сообщений со стороны frontend. Потому что помимо веб версии, есть ещё нативные Android, iOS, Windown, MacOS.