謝謝大家的建議!我結束了使用全局ipblocks表和Extension:Lockout阻止用戶登錄,有效地禁用他們的帳戶。我設置的共享表和共享爲全球用戶數據庫在我的LocalSettings.php文件:
$wgSharedDB = 'up_commonusers';
$wgSharedTables = array( 'user', 'user_groups', 'account_requests', 'account_credentials', 'ipblocks');
我計劃管理的基礎上與此列表用戶名封鎖的帳戶:特殊:黑名單。這個列表的缺點是,它不具有用戶家中的wiki,所以我加了一個「ipb_user_home」列到ipblocks表作爲參考後用這個鉤子使用:
$wgHooks['BlockIpComplete'][] = 'addHomeWikiData';
function addHomeWikiData(&$block, &$user){
$userId = $block->getTarget() instanceof User ? $block->getTarget()->getID() : 0;
if($userId>0){
$dbw = wfGetDB(DB_MASTER);
$row = $dbw->selectRow('user', '*', array('user_id'=>$userId));
$dbw->begin();
$dbw->update('ipblocks', array('ipb_user_home'=>$row->user_home), array('ipb_user'=>$userId));
$dbw->commit();
return true;
}
return false;
}
我最終會寫我自己的在未來將阻止列表表使用這個信息,但現在我有我需要的東西。
所以工作流程非常簡單。我使用正常的Special:Block頁面來阻止用戶。由於我們配置了SharedTable,被阻止的用戶被添加到全局ipblocks表中,而不是本地IP地址表中,然後他們使用掛鉤添加他們的主頁wiki數據。鎖定擴展在登錄時使用不同的掛鉤,以檢測用戶是否被阻止並引發錯誤消息。 「錯誤」彈出,您無法登錄。
希望這會有所幫助!
「禁用」是什麼意思?是的,撤銷他們的'edit'(和'view'?)權利是做到這一點的方法。不確定CentralAuth如何幫助 – Bergi
通過禁用我的意思是讓用戶擁有「匿名」權利,並將編輯權限帶走。我們不想刪除該帳戶,因爲用戶可能會返回。我試圖讓CentralAuth工作,因爲它在使用全局用戶管理器頁面進行編輯時具有「隱藏帳戶」和「鎖定帳戶以進行編輯」選項。感謝您的反饋! – honjunter13