2010-12-31

使用Plone来管理用户组

在Plone网站设置的“用户和组”选项里点击“组”标签,进入组管理界面。这个界面和用户管理界面相仿,通过这个界面,可以管理网站的用户组,添加新组等。 下面有一个列表显示所有的用户组,和用户列表类似,有组名,扮演的角色,删除组三列。 上一篇文章里说过,有三个组是默认创建的,管理员组,旗下用户具有管理员角色;具有审核者角色的组;还有已认证组,这是一个虚拟组,因为网站里面注册过的任何一个用户都属于已认证组的。这也就是说如果给已认证用户组分配一个角色的话,网站的所有成员都会拥有这个角色的权限。 给组分配的角色会对组里面的所有成员和组有效。要想给组内某已特定的成员或组分配权限的话,可以在文件夹里的“共享”标签页设定。

添加一个新组

在“组管理”下点击“添加新组”按钮,“创建一个组”的灯箱就会出现,只有名字项是必填项,提交以后组名不可更改。接下来还可以填写标题,描述,Email。 老版本的Plone在这里不是以灯箱形式出现的,而是一个页面,包含三个标签页:组成员,组属性,组面板。创建组就在组属性下。 按照提示,名字只能是英文字母,后面的三个选项没有要求。但在实际使用中发现,标题也只能是英文字母,如果带中文的话,在新建用户时会出错。 查看出错信息,发现在生成创建新用户表单时,会对所有组的名字和标题进行从ascii到unicode的解码。若有中文的话,就出现解码错误。 经过查找定位,最终锁定在文件 plone.app.form-2.0-py2.6.egg/plone/app/form/widgets/multicheckboxwidget.py 。 文件里MultiCheckBoxWidget的成员函数renderItem在调用 zope.app.form.browser.widget.py 中的renderElement方法时,没有考虑参数value和contents中可能出现的非asciii码内容。 value对应的就是组的标题,contents对应就是组的描述。 修改这两个参数的输入值,使用utf-8解码,如下:
13     def renderItem(self, index, text, value, name, cssClass):
14         id = '%s.%s' % (name, index)
15         elem = renderElement('input',
16                              type="checkbox",
17                              cssClass=cssClass,
18                              name=name,
19                              id=id,
20                              value=unicode(value,"utf-8"))
21
22         label = renderElement('label',
23                               extra= u"for=%s" % id,
24                               contents=unicode(text,"utf-8"))
重启Plone实例,现在就可以注册新用户了。

修改组的细节

要改变组的角色,直接在组列表里勾选或去勾选对应的角色列即可。 前面说过,组里可以包含其他子组,被包含的子组就继承拥有父组的角色权限。 使用plone小图标表示的角色就是继承而来的角色。 要修改某一个组的细节,点击最左边那一列的组名,就进入组成员标签页,在这里可以配置组的信息。 这个页面含有四个标签:组成员,组属性,组面板和组工作台。旧版本的Plone在新建组时其实用的组属性这个标签。也对,创建组和修改组在界面上确实没有太大区别。 刚创建的组没有任何成员,这是Plone里组的默认初始设置。如果组里已有成员,在“当前组成员”列表下会显示出来。这个列表有三列,一列复选框,一列显示用户名,一列显示电子邮件地址。点击邮件地址,可以给对应用户发送电子邮件。勾选要删除的用户,点击“删除选中的用户/组”进行删除操作。 要增加组成员,可以在“搜索新成员”里通过关键字搜索,也可以点击“全部显示”将所有的用户和组列出,将选中的用户和组添加到该组。 要修改成员所在的组,可以点击用户/组列表里“用户名”那一列中的用户,这样进入用户配置界面,在“组员身份”标签页可以看到用户所属组列表。所有用户都属于已认证组,这个是不可删除的。还可以在下面的“添加到组”列表里将用户添加到选中的组。 回到组配置页面,还有两个标签页“组面板”和“组工作台”。 “组面板”用来为不同的组定制不同的面板显示。这些面板一般在通用面板下面。通用面板是网站里各个用户都可以看到的面板。 可以使用两边的“添加面板”下拉菜单来选择面板。比如,可以为审核者组添加“审批清单”,或者为那些关注网站新闻动态的用户组添加“最近更新条目”。 “组工作台”标签和“组面板”配置的内容一样,都是配置面板,只不过显示的地方不同罢了。“组工作台”配置的面板不在网站两边侧边栏显示,而是在用户进入“工作台”以后显示。如何进入工作台呢?前面已经说过了,用户登录以后在左上角下拉菜单里选择“工作台”即可。
blog comments powered by Disqus