Skip to content

User management

Every person who uses your Open Intranet has a user account, and what they can see and do is decided by the roles assigned to that account. This page covers what ships out of the box, the most common admin tasks, and the modules you can add when you outgrow the basics.

The admin UI lives at People in the toolbar, or /admin/people.

  • User — an account with a username, email, password and a profile (first name, last name, phone, picture, department, office, manager…).
  • Role — a named bag of permissions assigned to one or more users. Permissions are never set on a user directly; you give the user a role and the role grants the permissions.
  • Permission — a single capability such as “Create News article” or “Administer menus and menu items”. Listed at /admin/people/permissions.
  • Anonymous / Authenticated — two special roles every Drupal site has. Anonymous applies to visitors not logged in; Authenticated applies to everyone who is logged in. Permissions you grant to Authenticated automatically apply to every user.

This means the practical workflow is always: create a role → grant it permissions → assign it to users. Open Intranet already ships a useful set of roles so you only need to assign them.

User profile fields shipped with Open Intranet

Section titled “User profile fields shipped with Open Intranet”

The default user profile has more than the bare Drupal minimum. Out of the box every user has:

FieldTypeNotes
First name, Last nameTextUsed to render the display name everywhere
PictureImageAvatar shown in headers, comments, directory
About meLong textFree-form bio
PhoneTelephoneClick-to-call from profile and directory
DepartmentReference to Department taxonomyUsed for filtering and group-style visibility
OfficeReference to Office taxonomyCity / location of the user
ManagerReference to another userBuilds the org chart
Social linksLink listLinkedIn, GitHub, etc.
Timezone, Preferred languageStandard DrupalUsed for date rendering and translations

You can add custom fields to the user entity at Configuration → People → Account settings → Manage fields (/admin/config/people/accounts/fields). Common additions: employee ID, hire date, contract type, certifications, internal Slack handle.

These fields drive the Employee Directory — anything you add here can be exposed in the directory’s filters and cards by editing the Views display.

Open Intranet ships with a set of roles tailored to a typical intranet. You can rename, edit, delete or extend them at /admin/people/roles.

Role machine nameLabelIntended for
administratorAdministratorFull unrestricted access to everything (bypasses content access checks). Keep on as few accounts as possible.
content_editorContent editorGeneric content editor — can create/edit all editorial content types.
content_editor_basic_pageContent Editor – Basic PageScoped editor: only basic pages.
content_editor_news_articleContent Editor – News ArticleScoped editor: only news.
content_editor_eventContent Editor – EventScoped editor: only events.
content_editor_knowledge_baseContent Editor – Knowledge BaseScoped editor: only KB pages.
content_editor_oi_documentContent Editor – DocumentsScoped editor: only the Documents library.
content_editor_webformContent Editor – WebformForm builder — can create and edit Webforms.
user_accounts_managerUser Accounts ManagerCan create / edit / block users and assign non-admin roles, without touching content or site config.
rmb_room_managerRMB – Room ManagerManages rooms and bookings (only relevant when the Room Booking recipe is applied).
authenticatedAuthenticated userEvery logged-in user gets this automatically — gives baseline read access to intranet content.
anonymousAnonymous userPre-login state. By default very limited; you decide whether the public sees anything.

The “scoped editor” pattern is the recommended way to delegate content responsibilities — give the News team only content_editor_news_article, the Knowledge Base owners only content_editor_knowledge_base, etc. They each get a focused editing experience, instead of one huge editor role with everything mixed in.

  1. Go to People (/admin/people) and click Add user (top-right).
  2. Fill in Email, Username and Password (or tick “Notify user of new account” to email them a one-time login link).
  3. Tick the Roles the user should have — usually authenticated is enough plus one editor / manager role if relevant.
  4. Optionally fill in profile fields (first/last name, department, office, manager, picture).
  5. Save.

The new user can log in immediately at /user/login with the username and password you set, or click the link in the welcome email.

From /admin/people, click Edit next to a row. Two important controls live on the edit form:

  • StatusActive vs Blocked. Blocked users cannot log in but their content stays. Use this for offboarding while you still need their authored content visible.
  • Cancel account (button at the bottom). Drupal asks how to handle the user’s content:
    • “Disable the account and keep its content” (default in Open Intranet, safest).
    • “Disable the account and unpublish its content”.
    • “Delete the account and make its content belong to the Anonymous user”.
    • “Delete the account and its content” (destructive — usually wrong choice for an intranet).

For most leavers, the right answer is Block — keeps history intact, frees the seat, and you can unblock later if they come back.

The People list (/admin/people) supports bulk operations via the dropdown above the table:

  • Add a role to selected users
  • Remove a role from selected users
  • Block / unblock selected users
  • Cancel selected user accounts

Tick the rows you want, pick the action, click Apply to selected items. Useful for rolling out a new role to a department, blocking a batch of leavers, etc.

Drupal core does not ship a CSV import for users. The recommended add-on is User CSV Import (1,700+ sites use it, security-team supported):

Terminal window
composer require 'drupal/user_csv_import:^2.0'
drush en user_csv_import -y

After enabling, People → Import users from CSV appears. The form lets you:

  • Map any CSV column to any user field (username, email, first name, department, …).
  • Pick which roles new users should get.
  • Choose whether to send each user a notification email.
  • Trigger one-time login emails so users can set their own password.

A typical import CSV header for Open Intranet looks like:

mail,name,field_first_name,field_last_name,field_phone,field_department,field_office,field_manager

Combined with User CSV Import, you can onboard the whole company on day one without writing a single migration script.

The fastest way as an admin is Drush:

Terminal window
drush user:password username "new-strong-password"

Or generate a one-time login link for the user and send it to them out of band:

Terminal window
drush user:login username

From the UI, People → Edit user → Password also works, and the user’s own “Forgot password” link on /user/password self-services them by email.

Edit a user, tick/untick role checkboxes, save. For doing this at scale, use the bulk operations on /admin/people (see above).

To create a brand-new role: People → Roles → Add role (/admin/people/roles/add), give it a name, save. Then click Edit permissions to grant it specific capabilities, and assign it to users. Many small roles are usually better than a few all-encompassing ones.

Masquerade as another user (debugging permissions)

Section titled “Masquerade as another user (debugging permissions)”

Open Intranet ships Masquerade. When investigating “User X says they cannot see Y” problems, browsing the site as that user is much faster than reading permission tables.

  1. As an administrator, open the user’s profile page (/user/<id>).
  2. Click Masquerade as .
  3. You are now logged in as that user. Browse, reproduce the problem.
  4. Click Unmasquerade (in the user account dropdown) to return to your own session.

Permission required: “Masquerade as any user” (admin-only by default; consider granting it to User Accounts Manager if your support team needs it).

By default, Open Intranet uses the most restrictive Drupal setting: administrators only create accounts. Self-registration from /user/register is closed.

To change this: Configuration → People → Account settings (/admin/config/people/accounts).

SettingDefaultWhat it does
Who can register accounts?Administrators onlySwitch to Visitors (open) or Visitors, but administrator approval is required (the usual choice for a public-facing portal).
Require email verification when a visitor creates an accountOnSends a one-time login link instead of letting users pick a password directly. Strongly recommended.
When cancelling a user accountDisable the account and keep its contentThe default for the Cancel account flow above.

For an internal-only intranet, leave registration closed and provision users manually, via CSV, or via SSO (see below). Do not open self-registration on a network with public access.

Permissions live at /admin/people/permissions — one giant table, rows are permissions, columns are roles, ticks decide who has what. A few things to keep in mind:

  • Be stingy with the Administrator role. It bypasses every access check, including per-entity rules. Limit it to two or three trusted accounts and use user_accounts_manager / scoped editor roles for everything else.
  • Test changes by masquerading. After you tick a permission, masquerade as a normal user with that role and confirm they see what you expect.
  • Permission filter — there is a filter box at the top of the permissions page. Type “news” or “menu” to jump to the relevant rows fast.

For the most common Open Intranet–specific permissions, see also the per-feature pages: Engagement Analytics, Room Booking, Block management, Menu management.

Single Sign-On, LDAP and external identity

Section titled “Single Sign-On, LDAP and external identity”

Open Intranet does not ship LDAP or SAML out of the box. The contrib ecosystem covers every protocol an enterprise might need; pick the one that matches your IdP:

ProtocolModuleNotes
OpenID Connect (OAuth2)OpenID ConnectBest for modern IdPs — Azure AD / Entra ID, Keycloak, Okta, Google Workspace. Already present in Open Intranet’s codebase, just enable and configure a client.
SAML 2.0SAML Authentication (samlauth)For enterprise IdPs that only speak SAML (ADFS, Shibboleth).
LDAP / Active DirectoryLDAPDirect sync with on-prem AD or other LDAP directories — provisioning, role mapping, query-based access.
One-tap socialSocial AuthWhen you also want Google / Microsoft / GitHub buttons on the login form.

In all cases the pattern is the same: the module creates a Drupal user on first login and (optionally) maps IdP groups → Drupal roles. After that everything in this page applies as normal.

Useful contributed modules for power users

Section titled “Useful contributed modules for power users”

Once the basics are in place, these modules are worth knowing about:

  • User CSV Import — bulk import via spreadsheet, covered above.
  • Login Security — rate-limit failed logins, alert on brute-force, soft-lock accounts. Pair with Flood Control for a UI on Drupal core’s flood limits.
  • Password Policy — enforce complexity, length, expiration, history.
  • Session Limit — cap the number of concurrent sessions per user.
  • Role Delegation — let a non-admin manager assign only certain roles (e.g. an HR account that can grant Employee but never Administrator).
  • Real Name — render “First Last” instead of username everywhere with one config switch.
  • User Expire — auto-block accounts after N days of inactivity, perfect for contractor offboarding.