Install
Works with Drupal: ^10.3 || ^11Using Composer to manage Drupal site dependencies
Alternative installation files
Download tar.gz
76.3 KB
MD5: 8ca73fdcc8e4f9d42386ee7e950a894c
SHA-1: 40c5d4d991976c7f9934dcc7a3082a3fcf302af9
SHA-256: ff7e3d6ff6c98bc7aba00f70b0b0dc0726dc709021fd5247170d53e6c363e562
Download zip
118.47 KB
MD5: f7c9c924bb3dc798feb8d3a11a30b035
SHA-1: 481b5b4d8434a087a5a959489cc054fd7365c41e
SHA-256: 6397938b7b8eef5154eb2230b5b7c4cb22c7d8235a60d7b860e1f75e8ad32564
Release notes
First alpha release. Email code login replaces the core sign-in and sign-up pages with a passwordless flow: the visitor
enters an email address, receives a one-time numeric code and is signed in, or gets an account created on the spot. Password
sign-in stays available on a second tab. The API and the configuration schema may still change before the first beta.
Features
- Sign-in and sign-up with a one-time code sent by email, on
/loginand/register; core
/user/loginand/user/registerredirect there, keeping a local destination. - Optional "Password" tab: sign-in by email address and password with core flood control and a single generic error
message. - No account enumeration: the same "we sent a code" step, limits and messages for known and unknown addresses.
- Codes are never stored: only an HMAC bound to the address, the code and the flow; single use, constant-time
comparison. - Rate limits in the core flood table: wrong codes per address and per IP, resend interval, codes sent per IP and per
address. - The flow is bound to the browser with an HttpOnly cookie secret and re-issued after a correct code; cross-site POSTs to
the module's forms are refused. - Sign-up step for unknown addresses: consent checkbox with an optional link, password none, optional or required.
- Change email confirmed by a code sent to the new address; change password form that asks for the current password only
when needed. - "Verified email" flag per account for other modules (service
email_code_login.email_verification). - Optional sign-in dialog (native dialog element) for links with the
data-ecl-modalattribute. - Events for account pre-create, account created, login, email changed and password changed; a hook to add fields to the
sign-up step. - Works on sites installed in a subdirectory. Russian translation included.
Requirements
- Drupal core 10.3 or later, or Drupal 11; core User module only.
- PHP intl extension recommended (international domain names).
- A working core mail transport and a real site email address.
Known limitations
- The module owns the paths
/loginand/register; sites or modules already using them will
conflict. Core/user/loginand/user/registerare redirected. - The per-address lockout can be abused: five wrong codes block code sign-in for that address until the code expires;
password sign-in is not affected. - No CAPTCHA or honeypot included; add one to
email_code_login_code_formwith hook_form_alter(). - Core JSON login and password reset endpoints are not changed.
- A code sign-in replaces the password; it is not two-factor authentication.
- Alpha: no upgrade path is guaranteed between alpha releases.