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.
Ich würde mir auch eine Ausschlussoption wünschen, und vielleicht könnte sie relativ einfach sein: Erlauben Sie uns einfach, eine Gruppe zu den Sicherheitseinstellungen einer Kategorie hinzuzufügen und die Option “Sehen” zu deaktivieren.
Wenn ich derzeit eine Gruppe zu den Sicherheitseinstellungen der Kategorie hinzufüge, kann ich die Optionen “Erstellen” und “Antworten” deaktivieren, aber nicht die Option “Sehen”. Wenn ich die Option “Sehen” deaktivieren könnte, dann scheint die Logik zu sein: “Wenn ein Benutzer zu einer Gruppe gehört, die keine Berechtigung zum Sehen hat, dann erlauben Sie dem Benutzer nicht, die Kategorie zu sehen.”
Das lässt mich fragen, wie widersprüchliche Berechtigungen derzeit funktionieren: Wenn ein Benutzer zur Gruppe A und zur Gruppe B gehört und Gruppe A Themen in dieser Kategorie erstellen kann, aber Gruppe B keine Themen erstellen kann, kann der Benutzer dann ein Thema in dieser Kategorie erstellen? Mit anderen Worten, was hat Vorrang?
Ich gehe davon aus, dass es derzeit so funktioniert: “Wenn ein Benutzer zu einer Gruppe gehört, die die X-Berechtigung hat, dann gewähren Sie dem Benutzer diese Berechtigung”, aber ich bin mir nicht sicher… Ich habe es gerade getestet und das scheint der Fall zu sein.
Berechtigungen sind effektiv kumulativ, es gibt in diesem Sinne keinen Konflikt. Die höchste geerbte Berechtigung gewinnt immer. Ich kann zu einer Gruppe hinzugefügt werden, die es mir erlaubt, eine Kategorie zu sehen, und auch zu einer anderen, die es mir erlaubt, beizutragen.
Warum sollten Sie eine Gruppe ausschließen müssen, es sei denn, Sie haben den Zugriff über eine andere Mitgliedschaft bereits explizit gewährt?
Ich denke, das einfachste Beispiel wäre, allen Lese-, Antwort- und Erstellungsberechtigungen zu geben und dann Gruppe X hinzuzufügen und Lese-, Antwort- und Erstellungsberechtigungen zu deaktivieren, sodass jeder in dieser Kategorie sehen, antworten und erstellen kann, außer den Mitgliedern der Gruppe X.
Wie es sich derzeit auf mich auswirken könnte: Ich verwende Memberful als SSO-Anbieter für Discourse und WordPress und möchte drei Pakete verkaufen, zwei der teureren mit Forumzugang und das niedrigste ohne Zugang. Ich glaube jedoch, dass sie aufgrund der Synchronisierung von Konten über SSO immer noch Zugang erhalten könnten, und daher möchte ich ihren Zugang einschränken, sodass sie keine Kategorien sehen können und mir vielleicht nur PMs senden können. Ich glaube, ich kann das tun, indem ich Gruppe Y und Gruppe Z zu allen Kategorien hinzufüge und nicht jeder, und das funktioniert, weil ich nicht viele Gruppen habe, aber ich denke, wenn ich viele hätte, wäre das Deaktivieren des Kästchens für “Sehen” einfacher.
Ich möchte auch in der Lage sein, kleine Gruppen einzurichten und sie von einigen Kategorien auf der Website auszuschließen, aber sie andere Kategorien wie Vollmitglieder sehen zu lassen.
Um den obigen Slack-Vergleich zu verwenden, machen Sie Personen in dieser kleinen Gruppe zu „Multi-Channel-Gästen: Diese Konten können nur auf ausgewählte Kanäle zugreifen“.
Kurz gesagt, ich möchte Gruppen von einzelnen Kategorien ausschließen können.
Leute – könnt ihr das bitte auf Plausibilität prüfen?
Ich glaube, ich habe einen Weg gefunden, so etwas Ähnliches durch bestehende Funktionalität zu erreichen.
Nehmen wir an, ich möchte, dass alle Themen, die mit „geheim“ markiert sind, für eine bestimmte Gruppe nicht sichtbar sind.
Ist es nicht so einfach, die Einstellungen der Gruppe zu ändern, sodass alle mit „geheim“ markierten Themen für Gruppenmitglieder stummgeschaltet werden?
Ebenso, wenn ich eine Kategorie für eine bestimmte Gruppe nicht sichtbar halten möchte, ist es nicht so einfach, die Einstellungen der Gruppe zu ändern, sodass alle Themen in dieser Kategorie für Gruppenmitglieder stummgeschaltet werden? (und auch die Hide Muted Categories Theme-Komponente zu installieren)?
Außerdem – ich kann keine Dokumentation finden, die beschreibt, wie die Discourse-Stummschaltungsfunktionalität funktioniert – kann mir jemand helfen?
Wie geheim sind diese Themen? Wenn Sie etwas standardmäßig stummschalten (für alle oder für Mitglieder einer Gruppe), können Benutzer ihre Einstellungen immer noch bearbeiten, um es wieder einzublenden. Außerdem werden stummgeschaltete Themen in der Themenliste ausgeblendet, aber nicht beispielsweise in Suchergebnissen.