2008/11/04

Allowed Member ID in Plone

填寫 Plone 會員註冊表單時,會員名稱 (User Name) 預設不能使用空白或特殊符號,甚至第一個字元必須是英文字母,因此,像電郵信箱或整排數字,預設是不合法的會員名稱。
執行檢查的程式位於 CMFCore/RegistrationTool.py 檔案,原始碼片斷如下:

class RegistrationTool(UniqueObject, SimpleItem):

""" Create and modify users by making calls to portal_membership.
"""

implements(IRegistrationTool)
__implements__ = (z2IRegistrationTool, )

id = 'portal_registration'
meta_type = 'CMF Registration Tool'
member_id_pattern = ''
default_member_id_pattern = "^[A-Za-z][A-Za-z0-9_]*$"
_ALLOWED_MEMBER_ID_PATTERN = re.compile(default_member_id_pattern)

其中的 default_member_id_pattern 就是預設的合法名稱樣版,它使用 regular expression 格式,意思是說,開頭字元必須使用英文字母,接著的字元也必須是英文字母或數字或底線符號。
例如,想要限用電郵信箱當作會員名稱,可用的條件格式是 ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
關於使用電郵信箱當會員名稱的缺點,根據 Anton Stonor 表示,這容易導致隱私資料外漏,因為 template 裡大量用到 ID 資料。

No comments: