# Drupal CMS Authentication

## Description

The Drupal CMS Authentication recipe provides enhanced authentication features, including the ability for users to log in with either their email address or username. It also sets up user profile pictures and event-driven automation for authentication workflows.

## Recipe Dependencies

Depends on the following recipes:

| Recipe                            | Description                            |
| --------------------------------- | -------------------------------------- |
| **user\_picture** *(Drupal core)* | Core recipe for user profile pictures. |

## Included Modules

Brings in the following core and contributed modules to your site:

| Module                                                                                 | Purpose                                                                                                       |
| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| [**BPMN.iO Modeler**](https://www.drupal.org/project/bpmn_io)                          | BPMN modeler, integrated into Drupal's admin UI.                                                              |
| [**Drupal CMS Helper**](https://www.drupal.org/project/drupal_cms_helper)              | Provides functionality for Drupal CMS that is not yet in Drupal core or dependencies.                         |
| [**ECA Base**](https://www.drupal.org/project/eca)                                     | Base events, conditions and actions.                                                                          |
| [**ECA Miscellaneous**](https://www.drupal.org/project/eca)                            | Miscellaneous events and conditions from Drupal core and the kernel.                                          |
| [**ECA User**](https://www.drupal.org/project/eca)                                     | User events, conditions and actions.                                                                          |
| [**ECA UI**](https://www.drupal.org/project/eca)                                       | Provides a user interface for managing ECA models.                                                            |
| [**Login with Email or Username**](https://www.drupal.org/project/login_emailusername) | Allow users to log in with either their username OR email address using the same input box on the login form. |
| [**Modeler API**](https://www.drupal.org/project/modeler_api)                          | Provides an API for modules to use modelers like BPMN.iO.                                                     |
| [**SVG image**](https://www.drupal.org/project/svg_image)                              | Overrides the standard image formatter and widget to support SVG files.                                       |
| [**Token**](https://www.drupal.org/project/token)                                      | Provides a user interface for the Token API and some missing core tokens.                                     |

## Installation

Apply the recipe using Drush:

```bash
ddev drush recipe ../recipes/drupal_cms_authentication
```

## Usage

After installation, users can log in using either their username or email address. The ECA modules provide a framework for creating custom authentication workflows, such as sending welcome emails, triggering actions on login, or managing user registration processes.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.varbase.vardot.com/developers/understanding-varbase/drupal-cms-recipes/drupal-cms-authentication.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
