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.
저도 제외(exclude) 옵션이 있었으면 좋겠습니다. 그리고 꽤 간단하게 구현할 수 있을 것 같습니다: 카테고리 보안 설정에 그룹을 추가할 수 있게 하고, ‘보기(See)’ 체크박스를 해제할 수 있게 하면 됩니다.
현재로선 카테고리의 보안 설정에 그룹을 추가하면 '생성(Create)'과 ‘답글(Reply)’ 체크박스는 해제할 수 있지만, ‘보기(See)’ 체크박스는 해제할 수 없습니다. 만약 ‘보기’ 체크박스를 해제할 수 있다면, 로직은 "사용자가 ‘보기’ 권한이 없는 그룹에 속해 있다면, 해당 카테고리를 볼 수 없게 한다"는 방식으로 작동할 수 있을 것 같습니다.
그렇다면 현재 권한 충돌은 어떻게 처리되는지 궁금해집니다: 사용자가 A 그룹과 B 그룹에 동시에 속해 있고, A 그룹은 해당 카테고리에서 주제를 생성할 수 있지만 B 그룹은 생성할 수 없는 경우, 그 사용자는 해당 카테고리에서 주제를 생성할 수 있을까요? 즉, 어느 쪽이 우선시되는 건가요?
현재는 "사용자가 X 권한이 있는 어떤 그룹에라도 속해 있다면, 그 사용자에게 해당 권한을 부여한다"는 방식으로 작동한다고 추측하고 있지만, 확실하지는 않습니다… 방금 테스트해 보니 그렇게 작동하는 것 같습니다.
가장 간단한 예시는 모든 사용자에게 보기, 답글, 생성 권한을 부여한 다음 그룹 X를 추가하고 보기, 답글, 생성 권한을 해제하는 것입니다. 이렇게 하면 그룹 X의 멤버를 제외한 모든 사용자가 해당 카테고리에서 보기, 답글, 생성을 할 수 있습니다.
현재 제 상황에 적용하면: 저는 Discourse와 WordPress에서 Memberful을 SSO 제공자로 사용하고 있으며, 세 가지 패키지를 판매하고 싶습니다. 그 중 더 비싼 두 패키지는 포럼에 접근할 수 있고, 가장 저렴한 패키지는 접근 권한이 없습니다. 하지만 SSO를 통한 계정 동기화 때문에 여전히 접근 권한이 부여될 수 있을 것 같아, 접근 권한을 제한하여 어떤 카테고리도 볼 수 없도록 하고 싶으며, 가능하면 저에게만 개인 메시지를 보낼 수 있도록 하고 싶습니다. 모든 카테고리에서 Everyone 대신 그룹 Y와 그룹 Z를 추가하면 가능하다고 생각하는데, 제가 가진 그룹 수가 많지 않아서 이것이 작동합니다. 하지만 그룹 수가 많다면 보기 권한의 체크박스를 해제하는 방식이 더 쉬울 것 같습니다.