From ba77b765e63de347d41254123a44d3484b659646 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Thu, 16 Aug 2018 00:20:46 +0100 Subject: [PATCH] Add system users post --- .../2018-08-16-system-users-null-users.md | 109 ++++++++++++++++++ .../drupal-8-users-field-data-table.png | Bin 0 -> 38085 bytes 2 files changed, 109 insertions(+) create mode 100644 source/_posts/2018-08-16-system-users-null-users.md create mode 100644 source/assets/images/blog/null-users-system-users/drupal-8-users-field-data-table.png diff --git a/source/_posts/2018-08-16-system-users-null-users.md b/source/_posts/2018-08-16-system-users-null-users.md new file mode 100644 index 000000000..e05a54eec --- /dev/null +++ b/source/_posts/2018-08-16-system-users-null-users.md @@ -0,0 +1,109 @@ +--- +title: Null Users and System Users in Drupal +tags: + - drupal + - drupal-7 + - drupal-8 + - drupal-modules + - php +--- +{% block excerpt %} +Have you ever needed to have a 'special user' to perform tasks on your Drupal site, such as performing actions based on an API request, or for sending an internal site message? + +If you just create a new user, how do you identify that user going forward? Do you hard-code the 'magic' user ID in your custom code? What if the user has a different ID on different environments of your site? You could declare it in each environment’s settings file and retrieve it from there, but what then if you need to do the same on another site? That would mean some duplication of code - and something that could have been abstracted and re-used. + +I had to do this recently, and rather than just duplicate the code I decided to make it into it’s own module - which then became two modules. +{% endblock %} + +{% block content %} +## System users + +The [System User module][1] provides a re-usable, generic way to denote users as 'system users', which is not specific to a certain site or environment as this is value is stored against each individual user in the database. + +'System user' is a term used in Linux, which I thought also applies well to this scenario. + +From : + +> A system account is a user account that is created by an operating system during installation and that is used for operating system defined purposes. System accounts often have predefiend user ids. Examples of system accounts include the root account in Linux. + +A system user isn’t an account that we’d expect a person to log in with and perform routine tasks like updating content, but rather for the system (site) to use to perform tasks like the earlier examples. + +### Declaring a user as a system user + +System User module adds a base field to Drupal’s User entity, which determines whether or not each user is a system user - i.e. if this field is `TRUE`, that user is a system user. This means that users can easily be queried to identify which are system users, without having to rely on magic, environment and site specific user IDs. This also means that we can have multiple system users, if needed. + +![](/assets/images/blog/null-users-system-users/drupal-8-users-field-data-table.png){.border .p-1} + +In the Drupal 8 version of the module, a `SystemUser` is a custom entity, that contains it’s own `create` method for creating new system users. This is a essentially a wrapper around `User::create()` that automatically sets the value of the system user field as part of the creation. + +The original intention is that system users would always be created manually in an custom install or update hook, however since releasing the module, I’ve also added an install hook to the module to automatically create a new system user when the module is installed, basing the username on the site name. + +There is also an open issue to add a Drush command to create a new system user, and I’d imagine I’ll also add a Drupal Console command too. + +### Retrieving system users + +Whilst you could easily write your own query that retrieves users based on the value of the system user field, but the module contains a `SystemUserManager` service that contains methods to do so. It also provides a static helper class that determines if a specified user is a system user by checking the value of the system user field. + +``` +// Retrieve the first system user. +$system_user = $this->systemUserManager->getFirst(); + +// Is the specified user a system user? +$is_system_user = SystemUserManager::isSystemUser($user); +``` + +But what do we return if there are no system users? +You could return `NULL` or `FALSE`, but I decided to take a different approach, which became the second module. + +## Null users + +The [Null User module][2] is an implementation of the [null object pattern][3] for users in Drupal 8. In this case, a [NullUser][4] is an extension of Drupal’s `AnonymousUserSession`, which means that it inherits sensible defaults to return for a non-existent User. Though, through inheritance, the `id`, `getRoles` and `hasPermission` methods are overridden to return relevant values. + +```language-php +use Drupal\Core\Session\AnonymousUserSession; + +class NullUser extends AnonymousUserSession { + ... +} +``` + +Null User module is a dependency of System User in Drupal 8, so When no system user is found from the `getFirst()` method, a `NullUser` is returned. Whilst I could alternatively have returned `NULL` or `FALSE`, we then would need to check if the returned value was an object or not before calling methods on it. + +```language-php +$system_user = $this->systemUserManager->getFirst(); // Returns NULL or FALSE. + +// Need to check if a user was returned or not. +if (!$system_user) { + return; +} + +if ($system_user->isActive()) { + ... +} +``` + +Because instead we’re returning a `NullUser`, which through class inheritance has the same methods and properties as a regular user, there is no need to do the additional check as you will always receive a relevant object, and the expected methods will always be present. + +```language-php +$system_user = $this->systemUserManager->getFirst(); // Returns a NullUser. + +if ($system_user->isActive()) { + ... +} +``` + +This means we have less code, which also is simpler and more readable. + +System User module is the only one that I’m aware of that makes use of Null User, but I’ve added a list to the [project page][2] so let me know if you can think of any others. + +## Resources + +- [Null object pattern][3] +- [Null User module][2] +- [System User module][1] +{% endblock %} + +[1]: https://www.drupal.org/project/system_user +[2]: https://www.drupal.org/project/null_user +[3]: https://en.wikipedia.org/wiki/Null_object_pattern +[4]: http://cgit.drupalcode.org/null_user/tree/src/NullUser.php?h=8.x-1.x diff --git a/source/assets/images/blog/null-users-system-users/drupal-8-users-field-data-table.png b/source/assets/images/blog/null-users-system-users/drupal-8-users-field-data-table.png new file mode 100644 index 0000000000000000000000000000000000000000..3c01bb6823f6dd369ae3688100920be70d46dab7 GIT binary patch literal 38085 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 literal 0 HcmV?d00001