2013-01-07 91 views
2

我有一個Plone實例(4.2.2)正在運行,需要自動創建用戶帳戶。我真的很喜歡使用外部Python腳本或其他基於Linux的命令行實用程序(如「curl」)來執行此操作。Plone/Python創建用戶帳戶

如果我使用curl,我可以進行身份​​驗證以訪問「@@ new_user」頁面,但似乎無法在頭文件中獲得正確的POST設置。

如果我不使用curl並使用Python腳本代替,是否有任何實用程序或庫可以執行此操作?我試過使用庫如Products.CMFCore.utils.getToolByName和獲得「portal_registration」 - 但我似乎無法得到這個工作在一個普通的腳本(沒有請求/上下文)。

此腳本需要在服務器上每N分鐘運行一次(其中用戶信息是從外部數據庫中獲取的)。我還需要那裏沒有密碼 - 並選擇通過電子郵件發送給用戶以設置自己的密碼的選項,並且我需要將此用戶添加到預定義的組。

是否有任何建議 - 可能是另一個實用程序或內置庫,可以更好地滿足這些要求?

+1

您不能直接使用外部數據庫作爲用戶來源嗎? –

+0

現在我們讓Plone在內部處理所有用戶帳戶信息 - 在我們的外部數據庫中,我們有一個表格設置,其中包含我們想要從中創建Plone帳戶的憑證(全名,用戶名和電子郵件)的最小列表。 – lightningmanic

+0

您可以創建一個Plone用戶來源,可以直接查詢這些用戶,但將密碼存儲在Plone中(一旦生成)。這是一個選項嗎? –

回答

2

對於批量導入的用戶來說,有很多腳本可以使用。 Tom Lazar的CSV導入http://plone.org/documentation/kb/batch-adding-users是一個不錯的選擇。如果你需要從命令行運行它,湯姆的腳本可以很容易地作爲一個Zope「運行」腳本運行,稱爲cron作業。 「運行」腳本是使用Zope或ZEO客戶端實例通過命令「bin/client5 run my_script.py」處理的腳本。

但是,這樣的策略是單向的。這聽起來來自與Martijn的對話,就像創建可插入身份驗證系統(PAS)插件以提供與外部數據庫源的連接可能會更好。關於這個策略的好處是,您可以非常精確地確定哪些用戶屬性具有哪個源(外部數據庫或Plone成員屬性管理器)。 Docs(如MJ所示)在http://plone.org/documentation/manual/developer-manual/users-and-security/pluggable-authentication-service/referencemanual-all-pages

請確保查看是否已有爲您的外部數據源編寫的插件。已經有許多auth方案和dbs的插件(如LDAP和SQLAlchemy)。