Bagaimana saya bisa secara sistematis mengeluarkan pengguna lain di D7?


8

Di situs kami, kami memiliki akun klien, masing-masing dengan super administrator dan sub pengguna milik akun itu.

Kami ingin super admin dapat memaksa sub pengguna untuk keluar. Apa cara terbaik untuk menghancurkan sesi pengguna di Drupal yang berfungsi terlepas dari apakah informasi sesi disimpan dalam Redis, Memcache atau database?

Sebelum seseorang merasa tergoda untuk menyarankan user_logout (), itu menghancurkan sesi pengguna saat ini. Saya ingin pengguna saat ini dapat menghancurkan sesi pengguna yang berbeda !


Hampir yakin kami sudah memiliki pertanyaan tentang ini. Saya tahu saya memiliki patch dalam ekstra-drush untuk dapat melakukan ini, tetapi belum dilakukan.
mpdonadio

Saya mencari-cari di sekitar DA, tetapi tidak berhasil. Saya akan meninjau tambalan Anda. EDIT: Sayangnya tambalan Anda hanya menangani kasus basis data. Kami berharap untuk menggunakan memcache mengingat banyaknya pengguna / sesi!
BrianV

1
Saya percaya pemblokiran / pemblokiran pengguna memiliki efek yang sama (kecuali mereka mungkin akan menerima notifikasi email tentang pemblokiran). Anda mungkin bisa menggunakannya hook_mail_alter()untuk mencegat surel itu dan menekannya.
tyler.frankenstein

Jawaban:


6

drupal_session_destroy_uid() terdengar seperti taruhan yang aman:

Mengakhiri sesi pengguna tertentu.

Implementasi inti membersihkan basis data, seperti yang Anda harapkan, tetapi modul apa pun yang mengesampingkan session.inc, dan tidak menyediakan implementasi yang berfungsi dari fungsi itu, pasti akan dianggap rusak (seperti user_delete_multiple()dan fungsi lainnya memerlukannya).

Jadi secara teori Anda harus dapat menggunakan fungsi itu terlepas dari penyimpanannya.


pilih, ini solusi yang bagus
Yusef

Ini solusi yang tepat! Untuk pembaca masa depan, ini diterapkan dalam memcache. Lihat cgit.drupalcode.org/memcache/tree/unstable/…
BrianV


0

Di Drupal 7, Kita bisa keluar pengguna jika kita memiliki User_ID menggunakan db_delete ():

db_delete('sessions')->condition('uid', $User_ID)->execute();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.