基于内容的Plone用户和组
项目描述
概述
membrane 是一组 PluggableAuthService (PAS) 插件,它允许从 Plone 网站的内容中获取与用户相关的行为和数据(身份验证、属性、角色、组等)。它实际上并不提供完整的成员实现,而是旨在成为一套工具,从中可以构建完整的实现。它旨在灵活且可插拔,易于适应不同的部署场景。它不是为了仅通过 Web 进行配置,而是可以通过文件系统代码进行配置。
Plone 中此类内容类型的规范实现是 dexterity.membrane。
membrane 尝试退后一步,重新思考一些 Plone 成员处理方法。我们尽量使其尽可能简单,以便理解和扩展都简单。希望简单性也将使确保其安全性更容易。
愿景
membrane 是一个与 PlonePAS 协作的产品,旨在使用户成为 Plone 网站中的内容。名称给出了预期的复杂性和代码量。
membrane 不会是您网站上唯一的成员处理产品,而是应该使我们能够轻松地插入启用默认 Plone 成员策略或企业内联网中更复杂设置的产品。这意味着,要获取默认的 Plone 行为,除了 membrane 外,您还需要其他东西。
需求
自 6.0 版本起:Plone 5.2,仅支持 Python3。已移除对 Archetypes 的支持。自 5.0 版本起:Plone 5.2。自 4.0 版本起:Plone 5.1。3.0 版本:Plone 4.3 或 5.0。我们仅测试 Python 2.7。对于较旧的 Plone 版本,请使用 Products.membrane 分支 2.1.x。
警告!!
目前,一个目录被用于索引门户中对象实现的接口。然而,接口是通过编程方式指定的,无论是通过 Python 代码还是 ZCML。每次 Zope 重新启动时,接口都可能已更改,如果它们已更改,目录将变得过时。正在努力开发更健壮的接口查找解决方案,但在此期间,如果您更改了任何与 membrane 相关类型或对象实现的接口,您可能需要显式重新索引 membrane_tool 上的 'object_implements' 接口。
变更日志
6.0.0 (2022-10-10)
支持 Plone 6.0 [ale-rt]
移除对 Python2 和 Archetypes 的支持,移除已弃用的代码 [ale-rt]
移除对多年未支持的 Products.remember 的提及 [ale-rt]
5.0.3 (2021-12-06)
添加卸载配置文件(修复 #20)[petschki]
5.0.2 (2021-04-23)
移除一个弃用警告(修复 #26)[ale-rt]
5.0.1 (2021-03-02)
修复 ZMI 中的主要 membrane_tool 模板
5.0.0 (2021-02-17)
移除一个弃用警告(修复 #21)[ale-rt]
5.0.0a1(2020-02-19)
破坏性更改
需要 Plone 5.2 或更高版本。 [ale-rt]
新功能
在此处添加项目
错误修复
Plone 5.2 / Zope 4 兼容性。 [thet]
4.0 (2017-10-05)
破坏性更改
需要 Plone 5.1 或更高版本。 [datakurre]
修复
现代化和清理:为 ZCA 和安全性使用装饰器。排序和清理导入。添加 utf8 头。更新引导和测试设置。 [jensens]
3.0.2 (2017-09-15)
修复 @@sharing 中的用户/组搜索。一个 unicode 搜索字符串可能会传递,而我们期望的是一个字符串。 [pysailor]
3.0.1 (2017-04-05)
如果 membrane 负责管理用户,则将 updateUser 方法的返回状态设置为 True。 [agitator]
3.0 (2016-07-06)
破坏性更改
拆分用户和组分组接口。实现了user.IUserGroupsProvider的组在列出成员时会被包含,这导致了AttributeError: 'NoneType' object has no attribute '__of__'。新的接口是group.IGroupGroupsProvider。我们在getGroupsForPrincipal方法中寻找这个接口。如果没有找到提供者,我们将尝试旧的方式以保持向后兼容。[maurits]
拆分用户属性和组属性接口。实现了IPropertiesProvider的组在列出成员时会被包含,这导致了AttributeError: 'NoneType' object has no attribute '__of__'。将IPropertiesProvider重命名为IUserPropertiesProvider,但保留了旧名称作为向后兼容的别名。添加了IGroupPropertiesProvider。如果您遇到问题,可能需要重新索引membrane_tool目录。[maurits]
放弃与Plone 4.2及以下版本的兼容性。对于这些Plone版本,请使用Products.membrane分支2.1.x。请注意,2.1.x也适用于Plone 4.3和5.0,但您将错过3.0版本中进行的修复。[maurits]
新功能
在Plone 5上修复了测试。添加了Travis以在Plone 4.3和5.0上进行持续集成测试。我们只使用Python 2.7进行测试。[maurits]
将测试迁移到plone.app.testing。[maurits]
错误修复
修复了各种pep8和pyflakes错误和警告。[maurits]
2.1.13 (2015-11-05)
修复了损坏的发行版;README文件被重命名,MANIFEST.in文件已更新。[hvelarde]
2.1.12 (2015-06-25)
允许在groupmanager的目录查询中传递任意索引。[cedricmessiant]
修复了移动膜对象时未从膜目录中取消索引的问题。[davisagli]
用exact_getUserId替换getUserId以避免奇怪的查找副作用。[agitator]
2.1.11 (2014-03-31)
递归组插件现在与膜组一起工作。[vincentfretin]
修复了PAS用户插件中的用户名/用户ID错误:allowPasswordSet和allowDeletePrincipal参数为userid,而不是username。[vincentfretin]
2.1.10 (2013-10-19)
修复:检查用户添加器是否可以获取。[gagaro]
2.1.9 (2013-07-18)
当enumerateUsers获取导致空查询的标准时,不返回任何结果。当没有传递标准时,返回所有成员。这参考了https://github.com/collective/Products.membrane/commit/c336a17f926a10ad384ea7b056db8d166a7eea00上的讨论。[maurits]
2.1.8 (2013-03-31)
添加了updateUser和updateEveryLoginName方法。目前它们什么也不做。它们需要与PluggableAuthService 1.10及更高版本保持兼容。[maurits]
2.1.7 (2013-03-01)
修复了缺少README.txt文件的损坏发行版。[maurits]
2.1.6 (2013-03-01)
从IMembraneTool接口中移除了getUserAuthProvider。用具有几年历史的调用方法getUserObject替换它。[maurits]
处理由plone.app.controlpanel.usergroups.UsersOverviewControlPanel传递的新关键字参数fullname,用于enumerateUsers(...)。这避免了在共享选项卡或用户控制面板中搜索任何搜索词时找到所有膜用户。[saily]
2.1.5 (2012-09-13)
迁移到github:https://github.com/collective/Products.membrane [maurits]
2.1.4 (2012-04-13)
将无效的用户属性值转换为空字符串,这会使属性表将它们视为字符串,并使其无法将这些属性设置回True。[cah190]
2.1.3 (2012-02-27)
修复了bug。由collective.indexing调用的目录处理器没有从membrane_tool中取消索引用户。[jcbrand]
2.1.2 (2011-12-16)
修复了升级膜工具的SearchableText索引后出现的问题,这是在升级到膜2.0或Plone 4后发生的:膜工具目录将为空。现在我们在升级索引时刷新膜工具目录。如果您已经遇到这种情况,只需转到膜工具,然后转到高级选项卡,并单击“更新目录”即可。[maurits]
2.1.1,2011年11月29日
将getUserObject方法设置为私有,以提高安全性。在皮肤脚本或模板中需要类似功能时,请使用portal_membership.getMemberInfo(user_id)。或者在Plone 4.0+中使用@@pas_member。由Richard Mitchell报告的问题,谢谢![maurits]
2.1.0,2011年11月15日
恢复与collective.indexing 1.8或更早版本的兼容性。[maurits]
添加了一个正常化词典,用于进行大小写归一化。getUserId和getUserName是搜索中唯一需要考虑大小写敏感性的地方。标题和SearchableText需要归一化。[tesdal]
修复了一个问题,即如果collective.indexing可以导入,则只有用户对象而不是组会被索引。此外,在执行重新/取消索引之前,还添加了对portal_type与listMembraneTypes之间缺失检查。[tesdal]
添加了对collective.indexing 2.0a1的兼容性。[hannosch]
2.0.2,2011年4月26日
在unindexObject补丁中,当使用collective.indexing时,如果对象不是membrane对象,则尝试展开它,因为它可能被collective.indexing包装在PathWrapper中。否则,在至少使用dexterity对象作为成员时,可能会在membrane_tool目录中留下过期的brains。[maurits]
更改了测试设置,以便测试也适用于Plone 4.1,除Plone 4.0和3.3之外。[maurits]
2.0.1,2011年3月11日
添加了一个升级步骤,用于处理meta_type已重写为“Broken Because Product is Gone”的情况,这会导致2.0升级步骤无法迁移索引。[cah190]
2.0,2011年3月9日
添加了一个升级步骤,以从membrane 1.1版本迁移。[cah190]
2.0b2,2010年9月20日
修复了PAS用户插件中的用户名/用户ID错误:doChangeUser参数是用户ID,而不是用户名。[wichert]
2.0b1,2010年8月31日
当可用时,应用collective.indexing配置文件。[maurits]
删除了对collective.indexing >= 1.1的依赖关系,因为添加它是为了允许使用非Archetypes内容,但它与某些normal Archetypes内容存在问题。如果您自己将collective.indexing添加到buildout中,我们仍然使用它,并使用它注册自己的目录队列处理器。请在您的Plone站点上自行安装它。[maurits]
错误修复:当请求返回最大用户数时,将max_results转换为整数。[maurits]
删除了过时的工作流状态类别设置状态映射器。这应该在一个基于工作流测试的IMembraneUserAuth实现中实现,而不是在核心Membrane代码中实现。[rossp, wichert]
修复了使用标记接口注册为实用程序的object_implements索引的性能问题。[rossp]
object_implements索引以前使用ZCA来确定对象不仅提供了哪些接口,而且还提供了对象可以适配到的第二级接口(适配两个对象)。提供这种程度的神奇感知证明是一个巨大的性能问题。
删除了从archetypes_tool迁移membrane类型列表到membrane_tool的BBB方法。[rossp]
使用ZCTextIndex作为SearchableText索引。这修复了与unicode数据相关的问题。[wichert]
修改属性插件以处理返回None和纯字典的属性适配器。即使PAS接口不允许这样做,这也是常见的行为。[wichert]
使用collective.indexing更新membrane_tool目录数据。这允许使用非Archetypes内容。[wichert]
重构PAS插件,使其只依赖于通用接口。这消除了对Archetypes的依赖。[wichert]
使用plone.indexer来管理可索引属性。[wichert]
更新GenericSetup导入处理程序,以便优雅地处理未安装membrane_tool的站点。[wichert]
改进包描述,将更改日志REST化。[wichert]
将GenericSetup配置文件和步骤注册移动到zcml。[wichert]
1.1b5 版本发布于 2009 年 3 月 23 日
修复基于 git 的发布问题,现在使用 setuptools-git [hannosch]
1.1b4 版本发布于 2009 年 3 月 20 日
与 Plone 3.0-3.2 进行了测试 [rossp]
添加关于即将进行的对象_implements 变更的警告 [rossp]
弃用类别映射器支持 [rossp]
弃用 AT 假设 [rossp]
当有多个匹配项时,提供违规的登录名 [witsch]
修复当搜索词为 None 时发生的 AttributeError 错误 [claytron]
在支持不区分大小写的登录时,区分 btn 子串匹配和不区分大小写的匹配对用户 ID 和用户名 [rafrombrc]
仅对膜提供认证的用户使用膜用户工厂插件 [rafrombrc]
1.1b3 版本发布于 2008 年 7 月 23 日
修复获取未命名用户添加者的问题 [witsch]
再次移除计数器,因为膜工具继承了 Plone 的目录工具,它已经支持计数器。不过,保留测试和缓存助手。 :) [witsch]
1.1b2 版本发布于 2008 年 7 月 22 日
向膜工具添加计数器,它可以作为缓存键,也是快速缓存适配器和工具的便利助手 [witsch]
角色管理器和群组管理器现在搜索精确的用户 ID [mj]
1.1b1 版本发布于 2008 年 5 月 22 日
初始 egg 版本。 [rafrombrc]
在 Plone 3.0 (Zope 2.10) 中移除弃用信息:将 zope.app.annotation 的导入转换为 zope.annotation [jensens]
1.0b1
引入 IUserChanger 接口,以将密码更改从 IUserManagement 的用户添加和删除部分中分离出来 [rafrombrc]
完成了角色、群组、属性插件的通用实现 [rafrombrc, jhammel, rmarianski]
0.3
向用户管理器添加了 IUserManagement 接口(来自 PlonePAS)。它将可用于直接或通过适配器提供相应 IMembraneUserManagement 接口实现。这允许 PasswordResetTool 等工具工作。
将包名从“Membrane”重命名为“membrane”,以反映当前的 Python 命名约定 [rafrombrc]
对代码进行重大重构,以使用 Zope 3 组件引擎将所有部件粘合在一起。混入已转换为适配器,提供者由实现特定接口定义 [rafrombrc]
0.2-alpha
将 membrane_tool 中的标题也变为 ZCTextIndex,这样 membrane_groups 的 enumerateGroups() 就可以在没有 exact_match 的情况下工作。
membrane_tool 中的 getUserName 和 getUserId 索引现在为 ZCTextIndex 类型,允许我们在 MembraneUserManager.enumerateUsers 中执行 exact_match=False 查询。
PluggableAuthService.enumerateUsers 建议将 id 和 login 作为“contains”搜索标记处理,但鉴于我们的文本索引,我们只能进行“starts with”搜索。然而,这比每次返回 () 对应于“exact_match=False”的调用要好得多 [dpunktnpunkt]
项目详情
Products.membrane-6.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 06f60b750b3369e5867275d7693e68105dc6beffd5b434e4ee864c9fd41b43ce |
|
MD5 | c150e1b4e88a8334fab2dcaadce49b36 |
|
BLAKE2b-256 | 5c66ad71c0cb1e23474fb98775fe83739cfc5216cac62197964f312a777f56bd |