Closed ricardopoppi closed 3 years ago
- Conf no constance para o número de boards disponíveis para o usuário padrão (no caso do EJ genérico vamos setar para 1 e o CPA para zero)
Criei uma constante no constance chamada MAX_BOARD_NUMBER, ela é responsável por limitar a quantidade de boards que um usuário comum pode criar. Por default, é um quadro por usuário, para alterar essa quantidade (no caso do CPA) é só entrar no django admin e na seção Constance alterar este valor.
- Criar um tipo de permissão para criação de n boards, que será usada para grupos específicos do django
Criei uma permission no app ej_boards chamada can_add_board, que verifica se um usuário pode criar um board. No django admin portanto pode-se conceder essa permission a um grupo (Criar grupo -> Em usuário, adicionar um grupo) ou a um usuário específico (Em usuário, adicionar permission).
[edit] Existe uma permission criada nas rules do app ej_boards que verifica se o usuário possui a permissão do django admin can_add_board (passa por cima de tudo) e se não tiver , verifica se o usuário se encaixa no limite de boards.
- Criar uma permissão de acesso ao rocket. Só quem tem essa permissão explicitamente setada terá usuário criado no rocket e vizualizará o botão "Painel CPA" (no django vamos atribuir essa permissão para o grupo CPA).
Criei um permission nas rules do app ej_rocketchat que dá permissão para acessar o rocketchat se o usuario for super user ou tiver a permissão de acesso concedida pelo django admin. Quando criarmos o grupo de permissões "CPA" é só adicionar essa permissão no django admin e todos os membros do grupo terão acesso.
- Permissão específica para promover conversas para o board público /conversations
Criei uma permission nas rules do app ej_conversation que dá permissão para promover conversar de boards para as conversas globais (/conversations), se o usuário for superuser ou se ele possui a permissão "can_publish" do django admin.
@fabiommendes a permissão ej_rocketchat reflete de duas maneiras pra quem a tem setada: (i) criação de usuário no rocket com base no user django (ii) aparecer o botão painel cpa na navbar
IMPORTANTE: Toda criação de usuário pela app no django NÃO DEVE gerar user rocket. O user rocket deve ser gerado apenas para aqueles que logarem ou acessarem o painel cpa e tiverem a permissão ej_rocketchat EXPLICITAMENTE setada
O Django trabalha com um sistema de grupos/permissões inspirado no Linux. Podemos dar permissões para usuários ou grupos e o usuário herda todas as permissões de seus grupos.
Também é possível definir permissões mais ou menos arbitrárias como "o autor de uma conversa sempre tem permissão para editá-la". Os usuários comuns não tem permissão específica para nada e os usuários "superuser" tem implicitamente as permissões para fazer qualquer coisa
Assim, minha sugestão é criar as seguintes permissões:
(i) Criar conversas em algum board (/{board-slug}/{conversation-slug}/) (ii) Promover conversas p/ o board global (/conversations/{conversation-slug}/)
Pro caso (i), minha sugestão é que a permissão seja setada globalmente através de um setting. Assim, algumas instalações podem permitir conversas individuais e outras não.
Pro caso (ii), criamos uma permissão explicita no banco de dados. No caso do CPA, o admin Django pode atribuí-la ao grupo CPA e todos os membros do grupo vão ter acesso a essa permissão.
Em suma: