New category permission - "cannot see"/"exclude"

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...)
3 лайка

@hawk this post was moved into community when someone misunderstood my request

I think this appears to have some support enough to justify it moving to either support or possibly feature - do you agree?

1 лайк

@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?

2 лайка

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

1 лайк

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.

2 лайка

SOLD!

:slight_smile:

Happy to join forces in that case

2 лайка

I wiki-ed the OP. Feel free to add/edit anything you’d like.

1 лайк

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.

2 лайка

Indeed, the order will matter

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.

5 лайков

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.

2 лайка

Я тоже хотел бы видеть опцию исключения, и, возможно, это можно реализовать довольно просто: разрешить добавлять группу в настройки безопасности категории и снимать галочку «Просмотр».

В настоящее время, если я добавляю группу в настройки безопасности категории, я могу снять галочки «Создание» и «Ответы», но не «Просмотр». Если бы я мог снять галочку «Просмотр», логика, вероятно, была бы следующей: «если пользователь принадлежит к любой группе, у которой нет прав на просмотр, не позволять пользователю видеть категорию».

Это заставляет задуматься о том, как сейчас работают конфликтующие разрешения: если пользователь входит в группу A и группу B, и группа A может создавать темы в этой категории, а группа B — нет, сможет ли пользователь создать тему в этой категории? Иными словами, какое правило имеет приоритет?

Я предполагаю, что сейчас система работает так: «если пользователь принадлежит к любой группе, имеющей право X, то предоставить это право пользователю», но я не уверен… Я только что протестировал, и, похоже, всё именно так.

1 лайк

Разрешения по сути суммируются; в этом смысле конфликтов не существует. Всегда побеждает самое высокое унаследованное разрешение. Я могу быть добавлен в одну группу, которая позволяет мне видеть категорию, и в другую, которая позволяет мне вносить вклад.

Зачем вам нужно исключать группу, если вы также явно предоставили доступ через другое членство?

Я думаю, что самый простой пример — это предоставить права «Просмотр», «Ответ» и «Создание» всем пользователям, а затем добавить группу X и снять галочки с этих прав. Таким образом, все смогут просматривать, отвечать и создавать темы в этой категории, кроме участников группы X.

Как это может быть актуально для меня сейчас: я использую Memberful как провайдера единого входа (SSO) для Discourse и WordPress. Я хочу продавать три пакета: два более дорогих с доступом к форуму и самый дешевый — без доступа. Однако, возможно, из-за синхронизации учетных записей через SSO пользователи все равно получат доступ. Поэтому я хочу ограничить их права, чтобы они не могли видеть категории и, возможно, могли только отправлять мне личные сообщения. Я думаю, что это можно сделать, добавив группы Y и Z ко всем категориям вместо группы «Все», и это сработает, поскольку у меня не так много групп. Но если бы групп было много, проще было бы просто снять галочку с права «Просмотр».

1 лайк

Я тоже хотел бы иметь возможность создавать небольшие группы и исключать их из некоторых категорий на сайте, но при этом разрешать им просматривать другие категории так же, как и полноправным участникам.

Используя приведённое выше сравнение с Slack, можно сделать участников такой небольшой группы «Многочастными гостями»: эти аккаунты получают доступ только к выбранным каналам.

Короче говоря, я хотел бы иметь возможность исключать группы из отдельных категорий.

1 лайк

Ребята, не могли бы вы проверить это?

Кажется, я придумал способ реализовать что-то подобное, используя уже существующий функционал.

Допустим, я хочу, чтобы темы с тегом «secret» были невидимы для определённой группы.

Разве не достаточно просто изменить настройки группы так, чтобы темы с тегом «secret» были отключены (замушены) для её участников?

Аналогично, если я хочу сделать категорию невидимой для определённой группы, разве не достаточно изменить настройки группы так, чтобы все темы в этой категории были отключены для её участников? (а также установить компонент темы Hide Muted Categories).

Кроме того, я не могу найти документацию, описывающую, как работает функционал отключения (мьюта) в Discourse — кто-нибудь может помочь?

Насколько скрытыми должны быть эти темы? По умолчанию, когда вы скрываете что-либо (для всех или для членов группы), пользователи всё ещё могут изменить свои настройки, чтобы отменить это скрытие. Кроме того, скрытые темы не отображаются в списках тем, но, например, остаются видимыми в результатах поиска.

2 лайка

Ах, ясно, тогда это не сработает :frowning: