I would like to support this. My use case - I have a group of “limited” users; I want them to be able to read most categories, but write only in one, let’s call it “starting cat.”.
I can of course use existing solution (and trust levels of course), but if I want to have more fine-grained permission system, it gets hectic.
Instead of setting up permissions like this:
display: everyone
post: everyone NOT greenhorns
I have to do something like this:
display: everyone
post: Group 1
Group 2
(...and basically each and every other group...)
reply: Group a
Group b
(...and once again...)
@robmc, looks like Jeff recategorized this already. Unless I’ve misread this, your request is the same as mine (linked above, long before I joined the Discourse team). Do you mind if the topics are combined, or do you feel yours is different?
Well, our use cases are similar, but our current proposed solutions look a little different
I don’t mind combining them at all, but I think that your original proposal was to have a single category for putting members into that would stop them being in ‘everyone’ but I would prefer to have logic in the security that allowed us to use “IS NOT” (or can’t / exclude) in the same way we use “IS” (or Can) as I think this would give more flexibility
They are similar issues, but not quite the same and it is possible that a single technical solution would address both, but I’m not sure. Happy to put them together to explore it though
I’m not precious … just wanting to help make this even better for everyone
So my usecase at the time was a single category that I needed to restrict access to, but the solution is the same as you suggested: an “exclude” or “not” security permission for categories.
Having Add+Subtract moves the system into a whole range of potential conflicts requiring resolution. At the least, the order of putting in permissions will now be significant, and so there will necessitate a reorder function to move things up/down.
Otherwise, there is no way to resolve potential conflicts when a person:
is in more than one group
one group is permitted access
another group is denied access
EDIT: Or you can say Add always trumps Subtract, or vice versa. Nevertheless, it makes things very hard to understand.
Although I can understand the pain you’re going through in order to request this… I have tons and tons of groups and each category’s permissions list is like 15 long, just to do what you’re looking to do – that is, to exclude a particular group from access while opening to most others.
Since all sites are currently like yours, it might be that the solution is to have two steps / sections … the first is the INCLUSION (which is the current context, so even if the change is made nothing is affected) where you build up a total population to view this, then a second step below would be the EXCLUSION which would remove a portion of those that matched certain criteria.
There is also a need for intersection, meaning that the permission is only for users with two or more groups set.
For example, Sales & USA ==> any user having both the group Sales and USA. Then this combo should have access to USA Sales Leads category. In other words, the group is the “intersection” of a number of groups. Currently, the permission system works on the “union” of listed groups.
This will solve neatly the common headaches of setting up permission with sub-categories (where in many cases, the users permitted into the sub-categories will only be among the ones permitted into the parent category). It is necessary because, in Discourse, sub-categories do NOT inherit permissions.
Eu também gostaria de uma opção de exclusão e talvez possa ser relativamente simples: apenas nos permita adicionar um grupo às configurações de segurança de uma categoria e nos permita desmarcar a caixa “Ver”.
No momento, se adicionarmos um grupo às configurações de segurança da categoria, podemos desmarcar as caixas “Criar” e “Responder”, mas não a caixa “Ver”. Se pudéssemos desmarcar a caixa “Ver”, a lógica pareceria ser: “se o usuário pertence a qualquer grupo que não tenha permissões de Ver, não deixe o usuário ver a categoria”.
Isso me faz pensar como as permissões conflitantes funcionam no momento: se um usuário pertence ao grupo A e ao grupo B, e o grupo A pode criar tópicos nessa categoria, mas o grupo B não pode, o usuário pode criar um tópico nessa categoria? Em outras palavras, qual tem precedência?
Eu assumo que funciona no momento como “se o usuário pertence a qualquer grupo que tenha permissão X, então conceda essa permissão ao usuário”, mas não tenho certeza… acabei de testar e parece ser o caso.
As permissões são efetivamente cumulativas, não existe tal coisa como um conflito nesse sentido. A permissão herdada mais alta sempre vence. Posso ser adicionado a um grupo que me permite ver uma categoria e também a outro que me permite contribuir.
Por que você precisaria excluir um grupo, a menos que também tenha concedido acesso explicitamente por meio de outra associação?
Acho que o exemplo mais simples seria dar permissões de ver, responder e criar para todos e, em seguida, adicionar o grupo X e desmarcar ver, responder e criar para que todos possam ver, responder e criar nessa categoria, exceto os membros do grupo X.
Como isso pode se aplicar a mim atualmente: Eu uso o Memberful como provedor de SSO no Discourse e WordPress e quero vender três pacotes, dois mais caros com acesso ao fórum e o mais baixo sem acesso. No entanto, acho que eles ainda podem ter acesso por sincronizar contas entre SSO e, portanto, quero limitar o acesso deles para que não possam ver nenhuma categoria e talvez apenas me enviar mensagens privadas. Acho que posso fazer isso adicionando o grupo Y e o grupo Z a todas as categorias e não a todos, e isso funciona porque não tenho muitos grupos, mas acho que se eu tivesse muitos, desmarcar a caixa para Ver seria mais fácil.
Eu também gostaria de poder configurar pequenos grupos e excluí-los de algumas categorias no site, mas permitir que eles vejam outras categorias como membros plenos.
Para usar a comparação do Slack acima, torne as pessoas desse pequeno grupo “Convidado Multicanal: Essas contas só podem acessar canais selecionados”.
Em resumo, eu gostaria de poder excluir grupos de categorias individuais.
Acho que pensei em uma maneira de alcançar algo assim com base na funcionalidade existente.
Digamos que eu queira manter quaisquer tópicos marcados como “secretos” não visíveis para um determinado grupo.
Não é tão simples quanto alterar as configurações do grupo para que quaisquer tópicos marcados como “secretos” sejam silenciados para os membros do grupo?
Da mesma forma, se eu quiser manter uma categoria não visível para um determinado grupo, não é tão simples quanto alterar as configurações do grupo para que quaisquer tópicos nessa categoria sejam silenciados para os membros do grupo? (e também instalar o componente de tema Ocultar Categorias Silenciadas?)
Além disso - não consigo encontrar nenhuma documentação descrevendo como a funcionalidade de silenciamento do Discourse funciona - alguém pode ajudar?
Quão secretos são esses tópicos? Quando você silencia algo por padrão (para todos ou para membros de um grupo), os usuários ainda podem editar suas preferências para reativar o som. Além disso, tópicos silenciados ficam ocultos nas listas de tópicos, mas não, por exemplo, nos resultados de pesquisa.