Puncte:0

Cum se redirecționează un utilizator după autentificare către o rută care necesită UID-ul?

drapel ng

Știu, aceasta pare o întrebare de bază:

În Drupal 9, cum redirecționez un utilizator după ce mă conectez la o cale/rută care necesită UID-ul în cale?

Am cercetat și încercat diferite implementări, dar niciuna nu acceptă token-uri (Reguli, Redirecționare după conectare etc.)

De exemplu, după ce un utilizator se conectează, acesta ar trebui să ajungă pe „/homebox-page/dashboard/UID” <- valoarea numerică din ID-ul utilizatorului curent.

Speram la un modul simplu pentru a gestiona acest lucru, dar se pare că ar putea fi nevoie să o fac printr-un cod personalizat?

Kevin avatar
drapel in
Acesta sună ca un abonat la eveniment care verifică dacă utilizatorul este autentificat, dacă nu îl redirecționează și include parametrul de destinație, astfel încât să revină acolo odată ce se conectează.
berliner avatar
drapel bd
Deoarece nu ați enumerat-o în mod explicit: [Login Destination](https://www.drupal.org/project/login_destination) pare să accepte token-uri.
quantumized avatar
drapel ng
Mulțumesc. Cred că voi merge mai degrabă cu cod personalizat decât Login Destinate, care include prea multe funcționalități suplimentare pe care câteva linii de cod le pot gestiona.
Puncte:1
drapel cn

Acest lucru ar trebui să fie posibil cu câteva rânduri de cod personalizat. Formularul de conectare a utilizatorului redirecționează deja către entitate.utilizator.canonică, care necesită UID:

  funcția publică submitForm(matrice &$form, FormStateInterface $form_state) {

    if (gol ($uid = $form_state->get('uid'))) {
      întoarcere;
    }
    $cont = $this->userStorage->load($uid);

    // A fost setată o destinație, probabil pe un controler de excepție.
    dacă (!$this->getRequest()->request->are('destinație')) {
      $form_state->setRedirect(
        „entity.user.canonical”,
        ['utilizator' => $account->id()]
      );
    }
    else {
      $this->getRequest()->query->set('destinație', $this->getRequest()->request->get('destinație'));
    }

    user_login_finalize($cont);
  }
  

Puteți adăuga propriul dvs. handler de trimitere făcând același lucru, suprascriind redirecționarea. Acolo puteți utiliza \Drupal::currentUser() deoarece user_login_finalize() în handlerul de trimitere de bază setează acest serviciu cu utilizatorul tocmai conectat.

quantumized avatar
drapel ng
Mulțumesc! Da, de fapt am ajuns să merg pe ruta submit handler de la hook_form_alter() și funcționează perfect.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.