ANNAI magazine
Group module logo
Table of content

Group 2.0.0-beta1 and 3.0.0-beta1 have recently been released, which boasts exciting new features and one of the notable changes was sponsored by ANNAI (as of 01/2023, the latest releases are 2.0.0-beta6 and 3.0.0-beta6 respectively). The reasons why two new versions were released, rather than one, is described below.

About the Group module

The Group module allows site admins to implement fine-grained, complex access control which is difficult to realise with Drupal core’s roles/permissions features. For example, with the Group module, you can create a group for each department of your organisation and only allow members of each department to access pages within the corresponding group.

The group module is developed and maintained by Kristiaan van Den Eynde, who is a senior developer at Factorial.

What’s new in Group 2 and 3?

There is a long list of improvements and new features in Group 2 and 3, as described in the release notes (2.0.0-beta1 / 3.0.0-beta1). The feature that has been sponsored by ANNAI allows developers to group configuration entities. Concretely, with Group 2/3, you can now control users’ access to, for example, Webform forms and their settings. This was not possible with Group version 1 because Webform forms are not content entities, but config entities. While you can still manage users’ access to Webform forms using the core’s roles/permissions, it is a real challenge to have granular access control in place.

The feature to manage config entities was first requested in 2016 and various attempts had been made. With Kristiaan’s hard work , the feature was finally realised.

As mentioned above, this new feature is a set of APIs and comes with no GUI. As such, it can only be utilised by developers.

What are the differences between 2.0.0 and 3.0.0?

The two versions are identical in terms of their functionalities. Then why are there two versions? Here’s why: 2.0.0 is for users who are upgrading from 8.x-1.x whereas 3.0.0 is for users who are introducing the Group module to their web application for the first time.

As shown in the table in the release note of 3.0.0-beta1, the differences between 2.0.0 and 3.0.0 are the machine names of entity types. After the change that made handling of config entities possible was introduced, the machine name `group_content` became semantically incorrect, which could cause confusions for developers. However, changing the machine name will cause incompatibility, as the machine name may be found in the database (or possibly in some custom code). 2.0.0 has been prepared in order to prevent issues that the incompatibility may cause.

If you are upgrading from 8.x-1.x to 2.0.0, you need to update all the machine names in your custom code (and wait for contrib modules that extend the Group module to do the same, if you are using any of such modules) before you can safely upgrade to 3.0.0.

A diagram that explains the Group module's upgrade paths

By the way, the jestful subtitles of release notes by Kristiaan always make me laugh. I’d highly recommend you to check them out. Below are my favourite:

8.x-1.0-rc5

The "It's 4PM on a Friday night right before I go on a 2-week Xmas vacation, what could possibly go wrong?" release

8.x-1.0 

The "I can't believe it's finally here, what will I do with my life now?" release.

Summary

The Group module allows site admins to have granular access control in place, which are difficult to realise with the core’s roles/permissions feature. One of the new features that was introduced in the 2.0.0 and 3.0.0 releases allows developers to group config entities. While 2.0.0 and 3.0.0 are functionally identical, if you are upgrading from 8.x-1.x, you need to first upgrade to 2.0.0. Otherwise you are safe to install 3.0.0.

 
フッターの採用情報
 
Mori Sugimotoの写真

The author of this post: Mori Sugimoto

Since 2006, Mori has been involved in a number of large-scale Drupal projects in the US/Europe as a developer, architect and consultant.

He has been actively contributing to the Drupal community by:
- Translating Drupal core into Japanese
- Organising Drupal events and meetups
- Volunteering and presenting at Drupalcons
- Acting as a coordinator of the Drupal Security Team

Mori is based in Utrecht, the Netherlands.

関連コンテンツ