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.
A mí también me encantaría una opción de exclusión y tal vez podría ser relativamente simple: solo permítanos agregar un grupo a la configuración de seguridad de una categoría y desmarcar la casilla Ver.
Ahora mismo, si agrego un grupo a la configuración de seguridad de la categoría, puedo desmarcar las casillas Crear y Responder, pero no la casilla Ver. Si pudiera desmarcar la casilla Ver, entonces la lógica podría ser “si el usuario pertenece a cualquier grupo que no tenga permisos de Ver, no permita que el usuario vea la categoría”.
Me hace preguntarme cómo funcionan los permisos en conflicto ahora: si un usuario pertenece al grupo A y al grupo B, y el grupo A puede crear temas en esa categoría pero el grupo B no puede, ¿puede el usuario crear un tema en esa categoría? En otras palabras, ¿cuál tiene prioridad?
Supongo que ahora funciona como “si el usuario pertenece a cualquier grupo que tenga permiso X, entonces otorga ese permiso al usuario”, pero no estoy seguro… Acabo de probarlo y ese parece ser el caso.
Los permisos son efectivamente acumulativos, no existe tal cosa como un conflicto en ese sentido. El permiso heredado más alto siempre gana. Puedo ser agregado a un grupo que me permite ver una categoría, y también a otro que me permite contribuir.
¿Por qué necesitarías excluir un grupo a menos que también le hayas dado acceso explícitamente a través de otra membresía?
Creo que el ejemplo más simple sería otorgar permisos de ver, responder y crear a todos y luego agregar al grupo X y desmarcar ver, responder y crear para que todos puedan ver, responder y crear en esa categoría, excepto los miembros del grupo X.
Cómo podría aplicarme a mí actualmente: Uso Memberful como proveedor de SSO en Discourse y WordPress y quiero vender tres paquetes, dos de los más caros con acceso al foro y el más bajo sin acceso. Sin embargo, creo que aún pueden obtener acceso debido a la sincronización de cuentas a través de SSO, por lo que quiero limitar su acceso para que no puedan ver ninguna categoría y tal vez solo puedan enviarme mensajes privados. Creo que puedo hacerlo agregando el grupo Y y el grupo Z a todas las categorías y no a todos, y eso funciona porque no tengo muchos grupos, pero creo que si tuviera muchos, desmarcar la casilla para Ver sería más fácil.
A mí también me gustaría poder configurar grupos pequeños y excluirlos de algunas categorías en el sitio, pero permitirles ver otras categorías como lo hacen los miembros completos.
Para usar la comparación de Slack anterior, haz que las personas de ese grupo pequeño sean “Invitado multidispositivo: estas cuentas solo pueden acceder a canales seleccionados”.
En resumen, me gustaría poder excluir grupos de categorías individuales.
Creo que he pensado en una forma de lograr algo así basándome en la funcionalidad existente.
Digamos que quiero que los temas etiquetados como “secretos” no sean visibles para un grupo determinado.
¿No es tan simple como cambiar la configuración del grupo para que todos los temas etiquetados como “secretos” se silencien para los miembros del grupo?
Del mismo modo, si quiero que una categoría no sea visible para un grupo determinado, ¿no es tan simple como cambiar la configuración del grupo para que todos los temas de esa categoría se silencien para los miembros del grupo? (¿y también instalar el componente temático Hide Muted Categories?)
Además, no encuentro ninguna documentación que describa cómo funciona la funcionalidad de silenciamiento de Discourse. ¿Alguien puede ayudar?
¿Cuán secretos son esos temas? Cuando silencias algo por defecto (para todos o para los miembros de un grupo), los usuarios aún pueden editar sus preferencias para desilenciarlo. Además, los temas silenciados se ocultan en las listas de temas, pero no, por ejemplo, en los resultados de búsqueda.