跳转到主要内容

基于SQLAlchemy的PAS用户/组/属性存储。

项目描述

https://travis-ci.org/collective/pas.plugins.sqlalchemy.svg?branch=master https://coveralls.io/repos/collective/pas.plugins.sqlalchemy/badge.svg?branch=master&service=github

SQLAlchemy PAS插件

本软件包提供了一个基于SQLAlchemy数据库抽象层的Zope 2 PAS插件实现(可插拔认证服务)。

它允许您使用SQL数据库存储和查询用户和组。

本软件包替换了 SQLPASPlugin 产品。从技术上讲,它是那个代码库的分支。一些测试已被重写,但大多数已被保留。

尽管目前没有提供稳定版本,但它已在生产中使用(仅针对 pysqlite 和 PostgreSQL 数据库进行了测试)。

设置

要配置数据库插件,请使用 z3c.saconfig。在您的 configure.zcml 或在构建out中 plone.recipe.zope2instance 脚本的 zcml-additional 参数中定义一个名为的域会话 pas.plugins.sqlalchemy

示例

<configure xmlns="http://namespaces.zope.org/db">
  <include package="z3c.saconfig" file="meta.zcml"/>

  <engine name="pas" url="postgresql://#/pas" />
  <session name="pas.plugins.sqlalchemy" engine="pas" />

</configure>

使用附带的 GenericSetup-profile 安装插件。请注意,在安装过程中将自动创建表。

您可以在任何时候重新安装以创建不存在的表。请注意,在卸载时保留表。

从 Plone 配置

作为在 zcml 中指定数据库连接信息的替代方案,您可以使用 collective.saconnect 在 plone 控制面板上使连接可配置。

通过将其添加到构建out并使用 Plone 的控制面板安装附加组件来安装该包。现在您有一个新的控制面板,允许您创建和编辑数据库连接。

要使用通用设置添加连接,请将文件 saconnections.xml 添加到您站点设置包的通用设置配置文件中,内容如下

<?xml version="1.0"?>
<connections>
     <connection
          name="pas.plugins.sqlalchemy"
          string="postgresql://USER:PASSWORD@localhost/DATABASE"
     />
</connections>

为了良好的性能,不要忘记在 ZMI 中启用缓存。

更多详细信息请参阅包描述。

自定义主体、用户和组模型

您可以为这三个类别注册自己的基于 SQLAlchemy 的模型类。

所需类接口(所需方法和属性)在 interfaces 模块中描述。请注意,您可以直接从实现所需接口的默认模型继承。

设置可在 ZMI 中访问。您还可以使用自定义设置处理程序。

示例

def setup_pas_plugin(self):
    pas = self.acl_users
    plugin = pas['sql']

    plugin.manage_changeProperties(
       user_model="my_package.model.User",
       principal_model="my_package.model.Principal",
       group_model="my_package.model.Group"
       )

您可能需要确保插件优先级高于默认插件(通常是基于 ZODB 的)。

愿望清单

这些项目在待办事项列表上

  • 仅发布安全。

  • 实现接口的审查 - 实现是否完整?

  • 处理组标题、描述和电子邮件,以匹配 Plone 的新版本。

  • 外部模型配置的测试。

致谢

作者

贡献者

赞助商

许可证

GNU GPL v2(详细信息请见LICENCE.txt)

变更日志

0.4.2 (2017-10-23)

  • 版本0.4.1中未修复MANIFEST(仍为棕色袋发布)[keul]

  • 修复了棕色袋发布。[malthe]

0.4.1 (2017-10-23)

  • 修复了棕色袋发布。[malthe]

0.4 (2016-03-31)

  • 在zmi中添加了缓存设置视图的链接。[agitator]

  • 修复:getPropertiesForUser现在使用principal _properties映射来映射用于zope_id的列,这是必需的。[jensens]

  • 在插件安装时不要期望配置好的数据库连接,以与collective.saconnect良好协作。如果未配置连接,请尽量减少冗余。[jensens]

  • 修复:不同自定义设置的安装和卸载标记。[jensens]

  • 将安装配置文件的标准名称更改为default。[jensens]

  • 现代化:Pep8,Travis CI,……[jensens]

  • 在doChangeUser,doDeleteUser和allowPasswordSet方法中使用_get_principal_by_id来获取principal。[gborelli]

  • 使用‘__mapper__’而不是‘__table__’来检查列类型。这允许在另一个类中通过polymorphic_identity自定义用户模型。[gborelli]

  • 修复getPropertiesForUser,如果principal不存在则返回None。[gborelli]

  • 在更新其属性之前检查principal是否存在。[gborelli]

  • 修复方法doSetPropertysetPropertiesForUser,使它们接受一个通用principal,而不仅仅是插件principal类的实例。[malthe]

  • 将用户属性包装在一个实际上可变用户属性表中(它将更改写回插件)。以前,返回了一个可变属性表,但这是不正确的,因为更改不会被持久化。

    虽然PAS接口指定对于不可变结果应返回一个字典,但我们选择了一种混合模式:一个对字典有意识的用户属性表,它不承诺可变性。动机是可插拔认证服务仅支持一组有限的属性值类型,例如Python自己的日期和时间类。通过返回属性表,我们可以显式提供模式,而不必强制认证服务“猜测”(推断)它。[malthe]

0.3 (2011-10-13)

  • setPropertiesForUser上触发来自PAS的IPropertiesUpdated事件,以允许组件在用户属性更新时采取行动。[malthe]

  • 将SVN存储库(选择分支)合并到现有的GitHub存储库中,以巩固改进。[malthe]

  • 为组添加标题和描述。

    GetRolesForPrincipal需要监听请求中的__ignore_group_roles__和__ignore_direct_roles__,才能与Plone 4一起工作。默认情况下,GetRolesForPrincipal需要考虑组角色。[sunew]

  • 合并了从分支中提出的许多更改:wichert-flexible,wichert-flexible-pw-encryption,zedr-mysql-optimized,auspex。[sunew]

    版本0.3与早期版本不兼容,升级将需要一些迁移(不包括)。[sunew]

  • 将user_id和login分开 - 如在PAS中。(未完成?)[wichert]

  • 重构用户、组和principal类,以使组与用户之间能够共享更多功能。[wichert]

  • varchars的长度与MySQL兼容。[auspex,wichert,sunew,zedr]

  • 清理了属性 - 现在模型中只有plone属性。如果需要更多字段,请覆盖模型。[sunew]

  • 密码和salt为只读。[wichert,sunew]

  • 删除与IUpdatePlugin相关的功能。未使用。[wichert]

  • 通过点路径zmi属性配置模型。[wichert]

  • 同时使Principal类可配置。[sunew]

  • 添加缺少的安全声明(与PlonePAS和PluggableAuthService中相同方法的安全声明相匹配)。[sunew]

  • 完全实现 IRoleAssignerPlugin:遗漏了 doRemoveRoleFromPrincipal 方法。[sunew]

  • 增加了更多测试,plone 4.0.7 上的测试通过。[sunew]

0.2.1(未发布)

  • 修复了一些测试。现在在 plone 4.0.7 上测试通过。[sunew]

  • 转换为 UTF-8 和 Unicode。Plone 在内部使用 UTF-8,大多数 Python 部署将使用 'ascii' 编码强制转换,导致 Unicode 解码错误。[mborch]

0.2(发布于 2009/7/17)

  • 将 'listed' 和 'ext_editor' 列类型更改为 'Integer' 以匹配 Plone 模型。[seletz]

0.1(发布于 2009/7/17)

  • 首次公开发布。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

pas.plugins.sqlalchemy-0.4.2.tar.gz (27.4 kB 查看哈希值)

上传时间

由以下提供支持