După cum a menționat @Tushar, puteți utiliza user_logout()
funcţie.
Cel mai simplu mod pe care îl văd este să vă deconectați utilizatorul cu un apel AJAX atunci când JS detectează că utilizatorul trebuie să fie deconectat. Iată un exemplu de bază despre cum se poate face.
În JS-ul dvs., trebuie să adăugați:
Drupal.behaviors.logout= {
atașați: funcție(context, setări) {
if(yourConditionToLogOutUserisMet) {
$.ajax({
url: "/log-me-out", // traseu personalizat pentru a deconecta utilizatorul curent
succes: function(data) {
// faceți tot ce doriți pentru succesul apelului dvs. ajax
}
});
}
}
}
Apoi, creați-vă ruta personalizată în gps_test.routing.yml
gps_test.my_custom_log_out:
cale: '/log-me-out'
implicite:
_controller: „\Drupal\gps_test\Controller\MyLogOutController::logUserOut”
cerinte:
_permission: „accesează conținut”
Și, în sfârșit, creați controlerul de rută:
spațiu de nume Drupal\gps_test\Controller;
utilizați Drupal\Core\Controller\ControllerBase;
utilizați Symfony\Component\HttpFoundation\JsonResponse;
clasa MyLogOutController extinde ControllerBase {
funcția logUserOut() {
if ($this->currentUser()->isAuthenticated()) {
user_logout();
returnează un nou JsonResponse([
'message' => "Sesiunea curentă a utilizatorului s-a încheiat.",
], 200);
}
}
}