2012-04-13 152 views
0

我在新的新Plone 4.1安装上使用pas.plugins.sqlalchemy。 我设置Plone将电子邮件地址作为登录名。通过电子邮件登录+ set_own_login_name + pas.plugins.sqlalchemy =更改地址失败

一切都好,但如果我想通过个人信息面板更改电子邮件地址,我会得到一个错误: 您不是Plone会员。您可能已在根用户文件夹中注册。如果这是意外的,请通知管理员。

如果我将更改另一个人数据字段,我不会收到错误。

问题似乎是Products.CMFPlone(utils.py)的set_own_login_name函数。这里 详细http://pastie.org/3780218

感谢的 维托

回答

0

您是否登录在Zope的根定义的管理员用户?

如果是这种情况,那么请转到Zope根目录下的acl_users并将其更改为可以更改登录名。

否则,暂时关闭emaillogin,更改您的电子邮件并重新打开emaillogin。

注意,有在utils.py代码中的注释(由我)这个KeyError异常升高权之前,它指向一个可能的解决方案,我真的不喜欢:

# PLIP9214: For a user in the zope root we could do something like this: 
# userfolder = member.getUser().__parent__.users 
# userfolder.updateUser(member.id, loginname) 
# But it is probably best not to touch root zope users. 
+0

嗨Maurits的,我是一个简单的用户(通过pas sql的身份验证)。 – Vito 2012-04-14 08:35:16

+0

emaillogin代码尝试在此处执行的操作是更改您的登录名。为此,它会获取所有IUserManagement插件,并在每个插件上调用'userfolder.updateUser(member.id,loginname)',直到找到插件成功。我猜想pas sql插件没有注册为IUserManagement插件,或者由于某些未知原因导致通话失败。如果你对Python调试器感到满意,我建议你在这个set_own_login_name函数中添加一个pdb.set_trace(),看看你是否能从那里获得更多的信息。 – maurits 2012-04-14 14:24:22

+0

解决。 Pas.Plugins.SqlAlchemy错过了“updateUser”方法。我会尝试修补并通知插件的开发团队 – Vito 2012-04-16 09:44:00

相关问题