it-swarm-eu.dev

Lze funkci obnovení hesla uživatele Drupal nakonfigurovat tak, aby vyžadovala pouze e-mailovou adresu?

(Původně jsem položil tuto otázku na webapps.stackexchange.com .)

Ve výchozím nastavení, v Drupalu, poskytujeme formulář „nastavit nové heslo“, formulář požádá o uživatelské jméno webu nebo e-mailovou adresu. Pokud uživatel uvede uživatelské jméno nebo e-mailovou adresu spojenou s platným účtem, obdrží e-mail (na této adrese) s odkazem, který mu umožní nastavit nové heslo.

Chtěli bychom zajistit, aby všichni naši uživatelé používali aktuální e-mailovou adresu, a za tímto účelem bychom chtěli vypnout schopnost vložte uživatelské jméno. Když uživatel zadá uživatelské jméno, může odeslat zprávu na starou e-mailovou adresu, ale vrátí uživateli zprávu „Odesíláme vám e-mail“. Pokud zadají e-mailovou adresu, kterou nemáme, zobrazí se chybová zpráva, která je upozorní na skutečnost, že nás neudržovali v aktuálním stavu (a nutí je s námi kontaktovat e-mailem).

Můžeme to omezit pouze na e-mail?

2
pjmorse

Pokud se ptáte, zda to lze nakonfigurovat v administračním backendu, pak ne, nemůžete to udělat, příslušná funkce je aktuálně pevně zakódována v rámci ser_pass_validate () .

Pravděpodobně však již víte, že jednou ze sil Drupals je relativní snadnost, ve které ji lze programově přizpůsobit nebo rozšířit pomocí modules . Nevím o tom, že by existující existoval právě toto (ačkoli by mohl existovat nakonec , příslušný seznam se vztahoval k Přístup/autentizace uživatelů) je dost obrovské), ale tady je to, co by vývojář mohl udělat:

  1. Přizpůsobení a potlačení přihlašovací stránky uživatele, registrace a obnovení hesla v Dru) pal 6

    • Toto pojednává o straně UI věcí, tj. Po vysvětlení a poskytnutí alternativních formulářů podle potřeby (viz Form API Quickstart Guide ) by umožnilo odstranit náznak na zadání uživatelského jména již, i když to lze stále úspěšně zadávat pro ty, kdo to vědí.
  2. Abychom skutečně vypnuli možnost vložit uživatelské jméno , bylo by třeba přepsat existující funkci ověřování tvaru ser_pass_validate () vlastní kopie, která jednoduše přeskočí příslušnou kontrolu, tj. odebere kód, který se pokouší načíst účet podle jména (viz oddíl Ověření formulářů v rámci Stručný průvodce formulářem API pro počáteční bod).

Pro podrobnější odpověď (tj. Použitelná implementace, pokud budete mít štěstí), musím vás znovu odvést na další web Stack Exchange: můžete o to požádat prostřednictvím značka Drupal na Stack Overflow;)

2
Steffen Opel
0
Adrian