How to organise content using public, private and semi-private groups? I'm building a community website with Drupal Commons and I need to be able to create 3 kinds of groups:


public groups : anyone can view content, group members only can post/edit/delete content
private groups : group members only can view/post/edit/delete content
semi-private groups : authenticated users can view content, group members only can post/edit/delete content


How can I achieve this?
The Group module allows for creating arbitrary collections of your content and users on your site, and grant access control permissions on those collections. It is available as of D7, and has a D8 version also. It is designed to be an alternative to Organic Groups. The Group module creates groups as entities, making them fully fieldable, extensible and exportable.

For this specific question, you'd enable the gnode submodule, and for each group type you would define the appropriate permissions (view, edit, delete, etc) for the various Content Types. That's it.

For more details about the various types of roles used by the Group module, refer to my answer to "What are the various roles supported by the Group module?".

Resources


Community documentation for the Group module.
Video tutorial "How to use the Group module in Drupal 8 to manage editorial access control to different areas of a web site".