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 00000000..e05a54ee --- /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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 YX{iMZsF~1u8wB{JrG8(nRK+s%Uk+V8Bme*a literal 0 HcmV?d00001