Cum să obțineți o singură autentificare pentru toți utilizatorii? (Drupal, 8, Utilizatori, Drush)

Panda a intrebat.

Vreau să trimit o singură dată de conectare pentru toți utilizatorii, Așa că folosesc drush uli și obțin un link ca:

http://html/user/reset/1/1509979615/VBPx_FMfKeJUEt1moVcsSQGUMX_tFUSYEdEfRlmq7eA

Deci, dacă utilizatorul 5 dorește să folosească one time login, acest lucru va fi folosit doar pentru utilizatorul 1, corect? Practic, vreau să setez o singură autentificare pentru toți utilizatorii.

Cum pot trece acest URL în Drupal 8?

Vreau doar să știu cum aș putea folosi acest lucru în e-mailul „Am uitat parola”.

Comentarii

  • Trebuie doar să înlocuiți http://html cu domeniul tău. – user21641
  • @IvanJaros Dacă utilizatorul 5 dorește să folosească o singură autentificare, aceasta va fi folosită doar pentru dreptul utilizatorului 1. Vreau să setez autentificarea unică pentru toți utilizatorii. –  > Por Panda.
  • Nu sunt sigur de înțelegerea mea. Cum aș putea să folosesc drush uli în drupal 8. Este confuz!. –  > Por Panda.
  • Consultați documentele pentru uli. drushcommands.com/drush-8x/user/user-login – În afară de asta, nu știu o modalitate de a declanșa linkuri de resetare în masă și de a trimite prin e-mail tuturor din mers. Nu puteți genera UN singur link și să-l folosiți pentru toată lumea, deoarece nu va funcționa. Simpla schimbare a id-ului din url nu este suficientă. Fiecare utilizator ar trebui să vină pe site și să facă „Forgot password” cu adresa de e-mail pentru a o obține. În ceea ce privește domeniul, trebuie să setați asta în config. –  > Por Kevin.
3 răspunsuri
kenorb

drush

Pentru a obține autentificarea unică pentru un anumit utilizator, utilizați această sintaxă:

drush uli <user>

Unde <user> este fie uid (de ex. 5), numele de utilizator sau adresa de e-mail pentru utilizator.

Pentru a obține URL-ul de autentificare unică pentru mai mulți utilizatori sau pentru toți, trebuie să rulați drush în buclă, de exemplu

for uid in $(drush sqlq "SELECT uid FROM users"); do drush uli $uid; done

Rulați drush help uli pentru ajutor cu sintaxa.

Pentru a vă corecta http://html partea, adăugați -l http://example.com sau setați parametrul $base_url în fișierul dvs. de setări.

Cod personalizat

Dacă sunteți interesat să trimiteți o singură autentificare prin e-mail folosind Drupal, puteți utiliza user_pass_reset_url() funcția în codul dvs. personalizat.

Generează un URL unic pentru ca un utilizator să se conecteze și să-și reseteze parola.

Modul Contrib

Sau utilizați Autentificare o singură dată (pentru D8, verificați acest modul problemă).

Autentificare o singură dată oferă posibilitatea de a trimite prin e-mail link-uri de autentificare unică utilizatorilor.

Comentarii

  • Voi obține o adresă de URL de tipul $base_url/user/reset/7/1510036033/N5suTv36MbBOMm6rrdZFFZL8TAy9GKgted97zBnu7iQ . Vreau doar să știu cum pot folosi acest lucru în e-mailul cu parola uitată. –  > Por Panda.
  • @Panda Puteți utiliza modulul Login one time pentru asta. Verificați răspunsul actualizat. –  > Por kenorb.
greg_1_anderson

Dacă doriți să forțați toți utilizatorii dvs. să se conecteze tot timpul prin intermediul unor link-uri de conectare unică, puteți utiliza modulul fără parolă modul.

Dacă setați $base_url în fișierul settings.php, atunci comanda Drush user-login va genera URL-ul corect în ieșire. Ați putea apoi să scrieți un script simplu pentru a trimite prin e-mail fiecărui utilizator un link de autentificare unic.

Nu există nicio comandă Drush pentru a trimite prin e-mail un link de resetare a parolei către un utilizator, dar acolo, desigur, Drupal face acest lucru pe pagina de solicitare a parolei. Ați putea folosi modulul user ca ghid și să scrieți un modul simplu sau o comandă Drush pentru resetarea în masă a tuturor utilizatorilor.

Yuseferi

În versiunea Drush > 9 ar trebui să fie

drush uli --name=USERNAME

notice aruncați o privire la o cifră după reset/{UID}/ ar trebui să fie id-ul utilizatorului pe care ați încercat să îl resetați

în cazul dvs. user/reset/1/ este evident că a resetat parola pentru cel folosit.

Deci, dacă doriți să o faceți pentru toți utilizatorii, rulați următoarea comandă în terminal:

for name in $(drush sqlq "SELECT name FROM users"); do drush uli --name=$name; done