2012-11-12 41 views
1

我有一個維基系列,有幾千個用戶需要管理。我們沒有一種優雅的方式來禁用任何已經離開程序的用戶,過去我們已經能夠更改他們的密碼,但這對於未來不是一個持久的解決方案。我已經調查了禁用用戶帳戶的幾種不同方式,但我不確定要選擇哪個選項。禁用MediaWiki中的用戶帳戶

  1. CentralAuth擴展 - 這是一個相當複雜的設置爲一個wiki家庭和非常密切相關的維基百科的核心發展。我儘可能將我的用戶遷移到centralauth全局用戶表中。此設置不考慮我們廣泛使用的表前綴。與擴展名相關的特殊頁面全部因此而中斷。

  2. IP阻塞 - 我不能使用它,因爲多個用戶可以在工作站或計算機實驗室從同一IP訪問wiki。

  3. 登錄掛鉤 - 當用戶登錄時可能使用掛鉤(UserLoginComplete),然後根據數據庫中設置的標誌立即註銷它們。

  4. 共享權限 - 我看了一些允許全局權限的擴展,但其中很多擴展並不穩定或處於測試階段,例如:SharedUserRights。這裏的想法是創建一個「非活動」權限並使用該權限組全局管理帳戶。

我願意接受創意!希望這一切都有道理,先謝謝!

+0

「禁用」是什麼意思?是的,撤銷他們的'edit'(和'view'?)權利是做到這一點的方法。不確定CentralAuth如何幫助 – Bergi

+0

通過禁用我的意思是讓用戶擁有「匿名」權利,並將編輯權限帶走。我們不想刪除該帳戶,因爲用戶可能會返回。我試圖讓CentralAuth工作,因爲它在使用全局用戶管理器頁面進行編輯時具有「隱藏帳戶」和「鎖定帳戶以進行編輯」選項。感謝您的反饋! – honjunter13

回答

1

謝謝大家的建議!我結束了使用全局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數據。鎖定擴展在登錄時使用不同的掛鉤,以檢測用戶是否被阻止並引發錯誤消息。 「錯誤」彈出,您無法登錄。

希望這會有所幫助!

0

mediawiki standard user rights handling怎麼了?只要給特定組提供讀/寫訪問權限,並且當它不再相關時,它就是remove a user from that group

+0

這些工作很好,但沒有簡單的方法來全局管理用戶權限。 wiki系列中的每個wiki都有一個user_groups表,所以我將不得不更改每個wiki上每個用戶的權限。我們有一個共享用戶表,但不知道如何強制每個wiki使用全局user_groups表。 – honjunter13

+0

MediaWiki手冊:「如果一個成員擁有多個組,他們將獲得他們所在的每個組的所有權限。包括匿名用戶在內的所有用戶都在'*'組中;所有註冊用戶都在'user '組。除了默認組,您可以使用相同的數組任意創建新組。「 I.E.創建「已禁用」組並從中刪除權限不會禁用用戶,因爲用戶自動成爲授予已刪除權限的用戶組的一部分。 「標準用戶權利處理」似乎不夠充分,因爲沒有用戶界面可以從「用戶」中刪除。 – kbulgrien

1

如果您想完全鎖定它們(禁用登錄),請使用AbortLogin hook來檢查黑名單中的用戶名。一個例子見Extension:Lockout

如果你希望他們能夠登錄但不能編輯,你可以使用UserGetRights hook去掉它們的編輯權限。