[Checkins] SVN: PluggableAuthService/trunk/ Created a "Configured PAS" entry in the ZMI add list.

Tres Seaver tseaver at palladion.com
Tue Jul 25 18:59:45 EDT 2006


Log message for revision 69264:
  Created a "Configured PAS" entry in the ZMI add list.
  
    o Allows creating a PAS using base and extension GenericSetup profiles
      registered for IPluggableAuthService.
      
    o This entry should eventually replace the "stock" PAS entry, assuming that
      we make GenericSetup a "hard" dependency.
  
  Added an "empty" GenericSetup profile.
  
    o creates a PAS containing only a plugin registry and a setup tool.
  
  Repaired the "simple" GenericSetup profile to be useful, rather than
  catastrophic, to apply.
  
    o This profile now creates and registers a set of ZODB-based
      user / group / role plugins, along with a basic auth helper.
  

Changed:
  U   PluggableAuthService/trunk/PluggableAuthService.py
  U   PluggableAuthService/trunk/__init__.py
  U   PluggableAuthService/trunk/doc/CHANGES.txt
  U   PluggableAuthService/trunk/doc/DEPENDENCIES.txt
  A   PluggableAuthService/trunk/profiles/empty/
  A   PluggableAuthService/trunk/profiles/empty/PAS/
  A   PluggableAuthService/trunk/profiles/empty/PAS/.objects
  A   PluggableAuthService/trunk/profiles/empty/PAS/pluginregistry.xml
  A   PluggableAuthService/trunk/profiles/empty/export_steps.xml
  A   PluggableAuthService/trunk/profiles/empty/import_steps.xml
  A   PluggableAuthService/trunk/profiles/simple/PAS/.objects
  A   PluggableAuthService/trunk/profiles/simple/PAS/basic_auth.xml
  A   PluggableAuthService/trunk/profiles/simple/PAS/dynamic_groups.xml
  A   PluggableAuthService/trunk/profiles/simple/PAS/groups.xml
  A   PluggableAuthService/trunk/profiles/simple/PAS/pluginregistry.xml
  A   PluggableAuthService/trunk/profiles/simple/PAS/recursive_groups.xml
  A   PluggableAuthService/trunk/profiles/simple/PAS/roles.xml
  A   PluggableAuthService/trunk/profiles/simple/PAS/users.xml
  U   PluggableAuthService/trunk/version.txt
  A   PluggableAuthService/trunk/www/pasAddForm.zpt

-=-
Modified: PluggableAuthService/trunk/PluggableAuthService.py
===================================================================
--- PluggableAuthService/trunk/PluggableAuthService.py	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/PluggableAuthService.py	2006-07-25 22:59:44 UTC (rev 69264)
@@ -1110,6 +1110,34 @@
 
 InitializeClass( PluggableAuthService )
 
+class ResponseCleanup:
+    def __init__(self, resp):
+        self.resp = resp
+
+    def __del__(self):
+        # Free the references.
+        #
+        # No errors of any sort may propagate, and we don't care *what*
+        # they are, even to log them.
+        stack = getattr(self.resp, '_unauthorized_stack', [])
+        old = None
+
+        while stack:
+            old = stack.pop()
+
+        if old is not None:
+            self.resp._unauthorized = old
+        else:
+            try:
+                del self.resp._unauthorized
+            except:
+                pass
+
+        try:
+            del self.resp
+        except:
+            pass
+
 _PLUGIN_TYPE_INFO = (
     ( IExtractionPlugin
     , 'IExtractionPlugin'
@@ -1217,9 +1245,16 @@
     )
   )
 
-def addPluggableAuthService( dispatcher, REQUEST=None ):
+def addPluggableAuthService( dispatcher
+                           , base_profile=None
+                           , extension_profiles=()
+                           , create_snapshot=True
+                           , setup_tool_id='setup_tool'
+                           , REQUEST=None
+                           ):
+    """ Add a PluggableAuthService to 'dispatcher'.
 
-    """ Add a PluggableAuthService to 'self.
+    o BBB for non-GenericSetup use.
     """
     pas = PluggableAuthService()
     preg = PluginRegistry( _PLUGIN_TYPE_INFO )
@@ -1227,7 +1262,6 @@
     pas._setObject( 'plugins', preg )
     dispatcher._setObject( pas.getId(), pas )
 
-
     if REQUEST is not None:
         REQUEST['RESPONSE'].redirect(
                                 '%s/manage_workspace'
@@ -1235,31 +1269,64 @@
                                 'PluggableAuthService+added.'
                               % dispatcher.absolute_url() )
 
-class ResponseCleanup:
-    def __init__(self, resp):
-        self.resp = resp
+def addConfiguredPASForm(dispatcher):
+    """ Wrap the PTF in 'dispatcher', including 'profile_registry' in options.
+    """
+    from Products.GenericSetup import EXTENSION
+    from Products.GenericSetup import profile_registry
 
-    def __del__(self):
-        # Free the references.
-        #
-        # No errors of any sort may propagate, and we don't care *what*
-        # they are, even to log them.
-        stack = getattr(self.resp, '_unauthorized_stack', [])
-        old = None
+    wrapped = PageTemplateFile( 'pasAddForm', _wwwdir ).__of__( dispatcher )
 
-        while stack:
-            old = stack.pop()
+    base_profiles = []
+    extension_profiles = []
 
-        if old is not None:
-            self.resp._unauthorized = old
+    for info in profile_registry.listProfileInfo(for_=IPluggableAuthService):
+        if info.get('type') == EXTENSION:
+            extension_profiles.append(info)
         else:
-            try:
-                del self.resp._unauthorized
-            except:
-                pass
+            base_profiles.append(info)
 
-        try:
-            del self.resp
-        except:
-            pass
+    return wrapped( base_profiles=tuple(base_profiles),
+                    extension_profiles =tuple(extension_profiles) )
 
+def addConfiguredPAS( dispatcher
+                    , base_profile
+                    , extension_profiles=()
+                    , create_snapshot=True
+                    , setup_tool_id='setup_tool'
+                    , REQUEST=None
+                    ):
+    """ Add a PluggableAuthService to 'self.
+    """
+    from Products.GenericSetup.tool import SetupTool
+
+    pas = PluggableAuthService()
+    preg = PluginRegistry( _PLUGIN_TYPE_INFO )
+    preg._setId( 'plugins' )
+    pas._setObject( 'plugins', preg )
+    dispatcher._setObject( pas.getId(), pas )
+
+    pas = dispatcher._getOb( pas.getId() )    # wrapped
+    tool = SetupTool( setup_tool_id )
+    pas._setObject( tool.getId(), tool )
+
+    tool = pas._getOb( tool.getId() )       # wrapped
+    tool.setImportContext( 'profile-%s' % base_profile )
+    tool.runAllImportSteps()
+
+    for extension_profile in extension_profiles:
+        tool.setImportContext( 'profile-%s' % extension_profile )
+        tool.runAllImportSteps()
+
+    tool.setImportContext( 'profile-%s' % base_profile )
+
+    if create_snapshot:
+        tool.createSnapshot( 'initial_configuration' )
+
+    if REQUEST is not None:
+        REQUEST['RESPONSE'].redirect(
+                                '%s/manage_workspace'
+                                '?manage_tabs_message='
+                                'PluggableAuthService+added.'
+                              % dispatcher.absolute_url() )
+

Modified: PluggableAuthService/trunk/__init__.py
===================================================================
--- PluggableAuthService/trunk/__init__.py	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/__init__.py	2006-07-25 22:59:44 UTC (rev 69264)
@@ -259,6 +259,16 @@
                          )
 
     if profile_registry is not None:
+
+        context.registerClass( PluggableAuthService.PluggableAuthService
+                             , meta_type='Configured PAS'
+                             , permission=ManageUsers
+                             , constructors=(
+                                PluggableAuthService.addConfiguredPASForm,
+                                PluggableAuthService.addConfiguredPAS,
+                               )
+                             , icon='www/PluggableAuthService.png'
+                             )
         profile_registry.registerProfile('simple',
                                          'Simple PAS Content Profile',
                                          'Content for a simple PAS.',
@@ -267,3 +277,12 @@
                                          BASE,
                                          IPluggableAuthService,
                                         )
+        profile_registry.registerProfile('empty',
+                                         'Empty PAS Content Profile',
+                                         'Content for an empty PAS '
+                                         '(plugins registry only).',
+                                         'profiles/empty',
+                                         'PluggableAuthService',
+                                         BASE,
+                                         IPluggableAuthService,
+                                        )

Modified: PluggableAuthService/trunk/doc/CHANGES.txt
===================================================================
--- PluggableAuthService/trunk/doc/CHANGES.txt	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/doc/CHANGES.txt	2006-07-25 22:59:44 UTC (rev 69264)
@@ -2,8 +2,24 @@
 
   PluggableAuthService 1.4-beta (unreleased)
 
+    Features Added
+
+      - Created a "Configured PAS" entry in the ZMI add list, which
+        allows creating a PAS using base and extension GenericSetup profiles
+        registered for IPluggableAuthService.  This entry should eventually
+        replace the "stock" PAS entry (assuming that we make GenericSetup
+        a "hard" dependency).
+
+      - Added an "empty" GenericSetup profile, which creates a PAS containing
+        only a plugin registry and a setup tool.
+
     Bugs Fixed
 
+      - Repaired the "simple" GenericSetup profile to be useful, rather than
+        catastrophic, to apply:  it now creates and registers a set of
+        ZODB-based user / group / role plugins, along with a basic auth
+        helper.
+
       - ZODBUserManager: Extend the "notional IZODBUserManager interface"
         with the left-out updateUser facility and a corresponding
         manage_updateUser method for ZMI use. Removed any responsibility

Modified: PluggableAuthService/trunk/doc/DEPENDENCIES.txt
===================================================================
--- PluggableAuthService/trunk/doc/DEPENDENCIES.txt	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/doc/DEPENDENCIES.txt	2006-07-25 22:59:44 UTC (rev 69264)
@@ -1,3 +1,4 @@
 Zope >= 2.8.5
 Five >= 1.2 (http://codespeak.net/z3/five/)
 GenericSetup >= 1.1 (http://www.zope.org/Products/GenericSetup)
+PluginRegistry >= 1.1.1

Added: PluggableAuthService/trunk/profiles/empty/PAS/.objects
===================================================================
--- PluggableAuthService/trunk/profiles/empty/PAS/.objects	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/empty/PAS/.objects	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1 @@
+plugins,Products.PluginRegistry.PluginRegistry.PluginRegistry

Added: PluggableAuthService/trunk/profiles/empty/PAS/pluginregistry.xml
===================================================================
--- PluggableAuthService/trunk/profiles/empty/PAS/pluginregistry.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/empty/PAS/pluginregistry.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+<plugin-registry>
+ <plugin-type id="IExtractionPlugin" title="extraction"
+              description="Extraction plugins are responsible for extracting credentials from the request."
+              interface="Products.PluggableAuthService.interfaces.plugins.IExtractionPlugin">
+ </plugin-type>
+ <plugin-type id="IAuthenticationPlugin"
+              title="authentication"
+              description="Authentication plugins are responsible for validating credentials generated by the Extraction Plugin."
+              interface="Products.PluggableAuthService.interfaces.plugins.IAuthenticationPlugin">
+ </plugin-type>
+ <plugin-type id="IChallengePlugin" title="challenge"
+              description="Challenge plugins initiate a challenge to the user to provide credentials."
+              interface="Products.PluggableAuthService.interfaces.plugins.IChallengePlugin">
+ </plugin-type>
+ <plugin-type id="ICredentialsUpdatePlugin"
+              title="update credentials"
+              description="Credential update plugins respond to the user changing credentials."
+              interface="Products.PluggableAuthService.interfaces.plugins.ICredentialsUpdatePlugin">
+ </plugin-type>
+ <plugin-type id="ICredentialsResetPlugin"
+              title="reset credentials"
+              description="Credential clear plugins respond to a user logging out."
+              interface="Products.PluggableAuthService.interfaces.plugins.ICredentialsResetPlugin">
+ </plugin-type>
+ <plugin-type id="IUserFactoryPlugin" title="userfactory"
+              description="Create users."
+              interface="Products.PluggableAuthService.interfaces.plugins.IUserFactoryPlugin">
+ </plugin-type>
+ <plugin-type id="IAnonymousUserFactoryPlugin"
+              title="anonymoususerfactory"
+              description="Create anonymous users."
+              interface="Products.PluggableAuthService.interfaces.plugins.IAnonymousUserFactoryPlugin">
+ </plugin-type>
+ <plugin-type id="IPropertiesPlugin" title="properties"
+              description="Properties plugins generate property sheets for users."
+              interface="Products.PluggableAuthService.interfaces.plugins.IPropertiesPlugin">
+ </plugin-type>
+ <plugin-type id="IGroupsPlugin" title="groups"
+              description="Groups plugins determine the groups to which a user belongs."
+              interface="Products.PluggableAuthService.interfaces.plugins.IGroupsPlugin">
+ </plugin-type>
+ <plugin-type id="IRolesPlugin" title="roles"
+              description="Roles plugins determine the global roles which a user has."
+              interface="Products.PluggableAuthService.interfaces.plugins.IRolesPlugin">
+ </plugin-type>
+ <plugin-type id="IUpdatePlugin" title="update"
+              description="Update plugins allow the user or the application to update the user's properties."
+              interface="Products.PluggableAuthService.interfaces.plugins.IUpdatePlugin">
+ </plugin-type>
+ <plugin-type id="IValidationPlugin" title="validation"
+              description="Validation plugins specify allowable values for user properties (e.g., minimum password length, allowed characters, etc.)"
+              interface="Products.PluggableAuthService.interfaces.plugins.IValidationPlugin">
+ </plugin-type>
+ <plugin-type id="IUserEnumerationPlugin"
+              title="user_enumeration"
+              description="Enumeration plugins allow querying users by ID, and searching for users who match particular criteria."
+              interface="Products.PluggableAuthService.interfaces.plugins.IUserEnumerationPlugin">
+ </plugin-type>
+ <plugin-type id="IUserAdderPlugin" title="user_adder"
+              description="User Adder plugins allow the Pluggable Auth Service to create users."
+              interface="Products.PluggableAuthService.interfaces.plugins.IUserAdderPlugin">
+ </plugin-type>
+ <plugin-type id="IGroupEnumerationPlugin"
+              title="group_enumeration"
+              description="Enumeration plugins allow querying groups by ID."
+              interface="Products.PluggableAuthService.interfaces.plugins.IGroupEnumerationPlugin">
+ </plugin-type>
+ <plugin-type id="IRoleEnumerationPlugin"
+              title="role_enumeration"
+              description="Enumeration plugins allow querying roles by ID."
+              interface="Products.PluggableAuthService.interfaces.plugins.IRoleEnumerationPlugin">
+ </plugin-type>
+ <plugin-type id="IRoleAssignerPlugin" title="role_assigner"
+              description="Role Assigner plugins allow the Pluggable Auth Service to assign roles to principals."
+              interface="Products.PluggableAuthService.interfaces.plugins.IRoleAssignerPlugin">
+ </plugin-type>
+ <plugin-type id="IChallengeProtocolChooser"
+              title="challenge_protocol_chooser"
+              description="Challenge Protocol Chooser plugins decide what authorizationprotocol to use for a given request type."
+              interface="Products.PluggableAuthService.interfaces.plugins.IChallengeProtocolChooser">
+ </plugin-type>
+ <plugin-type id="IRequestTypeSniffer"
+              title="request_type_sniffer"
+              description="Request Type Sniffer plugins detect the type of an incoming request."
+              interface="Products.PluggableAuthService.interfaces.plugins.IRequestTypeSniffer">
+ </plugin-type>
+</plugin-registry>


Property changes on: PluggableAuthService/trunk/profiles/empty/PAS/pluginregistry.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/empty/export_steps.xml
===================================================================
--- PluggableAuthService/trunk/profiles/empty/export_steps.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/empty/export_steps.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<export-steps>
+ <export-step id="contents"
+              handler="Products.PluggableAuthService.exportimport.exportPAS"
+              title="Contents">
+  Export the PAS' registry and plugins.
+ </export-step>
+</export-steps>


Property changes on: PluggableAuthService/trunk/profiles/empty/export_steps.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/empty/import_steps.xml
===================================================================
--- PluggableAuthService/trunk/profiles/empty/import_steps.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/empty/import_steps.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<import-steps>
+ <import-step id="contents" version="20051116-01"
+              handler="Products.PluggableAuthService.exportimport.importPAS"
+              title="Contents">
+  Import the PAS' registry and plugins.
+ </import-step>
+</import-steps>


Property changes on: PluggableAuthService/trunk/profiles/empty/import_steps.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/simple/PAS/.objects
===================================================================
--- PluggableAuthService/trunk/profiles/simple/PAS/.objects	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/simple/PAS/.objects	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,7 @@
+plugins,Products.PluginRegistry.PluginRegistry.PluginRegistry
+users,Products.PluggableAuthService.plugins.ZODBUserManager.ZODBUserManager
+roles,Products.PluggableAuthService.plugins.ZODBRoleManager.ZODBRoleManager
+groups,Products.PluggableAuthService.plugins.ZODBGroupManager.ZODBGroupManager
+dynamic_groups,Products.PluggableAuthService.plugins.DynamicGroupsPlugin.DynamicGroupsPlugin
+basic_auth,Products.PluggableAuthService.plugins.HTTPBasicAuthHelper.HTTPBasicAuthHelper
+recursive_groups,Products.PluggableAuthService.plugins.RecursiveGroupsPlugin.RecursiveGroupsPlugin

Added: PluggableAuthService/trunk/profiles/simple/PAS/basic_auth.xml
===================================================================
--- PluggableAuthService/trunk/profiles/simple/PAS/basic_auth.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/simple/PAS/basic_auth.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,2 @@
+<?xml version="1.0" ?>
+<plug-in title="HTTP Basic Authentication"/>


Property changes on: PluggableAuthService/trunk/profiles/simple/PAS/basic_auth.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/simple/PAS/dynamic_groups.xml
===================================================================
--- PluggableAuthService/trunk/profiles/simple/PAS/dynamic_groups.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/simple/PAS/dynamic_groups.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,3 @@
+<?xml version="1.0" ?>
+<dynamic-groups title="Rule-based Group Membership">
+</dynamic-groups>


Property changes on: PluggableAuthService/trunk/profiles/simple/PAS/dynamic_groups.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/simple/PAS/groups.xml
===================================================================
--- PluggableAuthService/trunk/profiles/simple/PAS/groups.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/simple/PAS/groups.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,9 @@
+<?xml version="1.0" ?>
+<zodb-groups title="Group Management">
+ <group group_id="managers" title="Site Managers"
+        description="">
+ </group>
+ <group group_id="members" title="Site Members"
+        description="">
+ </group>
+</zodb-groups>


Property changes on: PluggableAuthService/trunk/profiles/simple/PAS/groups.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/simple/PAS/pluginregistry.xml
===================================================================
--- PluggableAuthService/trunk/profiles/simple/PAS/pluginregistry.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/simple/PAS/pluginregistry.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<plugin-registry>
+ <plugin-type id="IExtractionPlugin" title="extraction"
+              description="Extraction plugins are responsible for extracting credentials from the request."
+              interface="Products.PluggableAuthService.interfaces.plugins.IExtractionPlugin">
+  <plugin id="basic_auth"/>
+ </plugin-type>
+ <plugin-type id="IAuthenticationPlugin"
+              title="authentication"
+              description="Authentication plugins are responsible for validating credentials generated by the Extraction Plugin."
+              interface="Products.PluggableAuthService.interfaces.plugins.IAuthenticationPlugin">
+  <plugin id="users"/>
+ </plugin-type>
+ <plugin-type id="IChallengePlugin" title="challenge"
+              description="Challenge plugins initiate a challenge to the user to provide credentials."
+              interface="Products.PluggableAuthService.interfaces.plugins.IChallengePlugin">
+  <plugin id="basic_auth"/>
+ </plugin-type>
+ <plugin-type id="ICredentialsUpdatePlugin"
+              title="update credentials"
+              description="Credential update plugins respond to the user changing credentials."
+              interface="Products.PluggableAuthService.interfaces.plugins.ICredentialsUpdatePlugin">
+ </plugin-type>
+ <plugin-type id="ICredentialsResetPlugin"
+              title="reset credentials"
+              description="Credential clear plugins respond to a user logging out."
+              interface="Products.PluggableAuthService.interfaces.plugins.ICredentialsResetPlugin">
+  <plugin id="basic_auth"/>
+ </plugin-type>
+ <plugin-type id="IUserFactoryPlugin" title="userfactory"
+              description="Create users."
+              interface="Products.PluggableAuthService.interfaces.plugins.IUserFactoryPlugin">
+ </plugin-type>
+ <plugin-type id="IAnonymousUserFactoryPlugin"
+              title="anonymoususerfactory"
+              description="Create anonymous users."
+              interface="Products.PluggableAuthService.interfaces.plugins.IAnonymousUserFactoryPlugin">
+ </plugin-type>
+ <plugin-type id="IPropertiesPlugin" title="properties"
+              description="Properties plugins generate property sheets for users."
+              interface="Products.PluggableAuthService.interfaces.plugins.IPropertiesPlugin">
+ </plugin-type>
+ <plugin-type id="IGroupsPlugin" title="groups"
+              description="Groups plugins determine the groups to which a user belongs."
+              interface="Products.PluggableAuthService.interfaces.plugins.IGroupsPlugin">
+  <plugin id="groups"/>
+  <plugin id="dynamic_groups"/>
+  <plugin id="recursive_groups"/>
+ </plugin-type>
+ <plugin-type id="IRolesPlugin" title="roles"
+              description="Roles plugins determine the global roles which a user has."
+              interface="Products.PluggableAuthService.interfaces.plugins.IRolesPlugin">
+  <plugin id="roles"/>
+ </plugin-type>
+ <plugin-type id="IUpdatePlugin" title="update"
+              description="Update plugins allow the user or the application to update the user's properties."
+              interface="Products.PluggableAuthService.interfaces.plugins.IUpdatePlugin">
+ </plugin-type>
+ <plugin-type id="IValidationPlugin" title="validation"
+              description="Validation plugins specify allowable values for user properties (e.g., minimum password length, allowed characters, etc.)"
+              interface="Products.PluggableAuthService.interfaces.plugins.IValidationPlugin">
+ </plugin-type>
+ <plugin-type id="IUserEnumerationPlugin"
+              title="user_enumeration"
+              description="Enumeration plugins allow querying users by ID, and searching for users who match particular criteria."
+              interface="Products.PluggableAuthService.interfaces.plugins.IUserEnumerationPlugin">
+  <plugin id="users"/>
+ </plugin-type>
+ <plugin-type id="IUserAdderPlugin" title="user_adder"
+              description="User Adder plugins allow the Pluggable Auth Service to create users."
+              interface="Products.PluggableAuthService.interfaces.plugins.IUserAdderPlugin">
+  <plugin id="users"/>
+ </plugin-type>
+ <plugin-type id="IGroupEnumerationPlugin"
+              title="group_enumeration"
+              description="Enumeration plugins allow querying groups by ID."
+              interface="Products.PluggableAuthService.interfaces.plugins.IGroupEnumerationPlugin">
+  <plugin id="groups"/>
+  <plugin id="dynamic_groups"/>
+ </plugin-type>
+ <plugin-type id="IRoleEnumerationPlugin"
+              title="role_enumeration"
+              description="Enumeration plugins allow querying roles by ID."
+              interface="Products.PluggableAuthService.interfaces.plugins.IRoleEnumerationPlugin">
+  <plugin id="roles"/>
+ </plugin-type>
+ <plugin-type id="IRoleAssignerPlugin" title="role_assigner"
+              description="Role Assigner plugins allow the Pluggable Auth Service to assign roles to principals."
+              interface="Products.PluggableAuthService.interfaces.plugins.IRoleAssignerPlugin">
+  <plugin id="roles"/>
+ </plugin-type>
+ <plugin-type id="IChallengeProtocolChooser"
+              title="challenge_protocol_chooser"
+              description="Challenge Protocol Chooser plugins decide what authorizationprotocol to use for a given request type."
+              interface="Products.PluggableAuthService.interfaces.plugins.IChallengeProtocolChooser">
+ </plugin-type>
+ <plugin-type id="IRequestTypeSniffer"
+              title="request_type_sniffer"
+              description="Request Type Sniffer plugins detect the type of an incoming request."
+              interface="Products.PluggableAuthService.interfaces.plugins.IRequestTypeSniffer">
+ </plugin-type>
+</plugin-registry>


Property changes on: PluggableAuthService/trunk/profiles/simple/PAS/pluginregistry.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/simple/PAS/recursive_groups.xml
===================================================================
--- PluggableAuthService/trunk/profiles/simple/PAS/recursive_groups.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/simple/PAS/recursive_groups.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,2 @@
+<?xml version="1.0" ?>
+<plug-in title="Recursive Group Membership"/>


Property changes on: PluggableAuthService/trunk/profiles/simple/PAS/recursive_groups.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/simple/PAS/roles.xml
===================================================================
--- PluggableAuthService/trunk/profiles/simple/PAS/roles.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/simple/PAS/roles.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,9 @@
+<?xml version="1.0" ?>
+<zodb-roles title="Role Management">
+ <role role_id="Manager" title="" description="">
+  <principal principal_id="managers"/>
+ </role>
+ <role role_id="Owner" title="" description="">
+  <principal principal_id="members"/>
+ </role>
+</zodb-roles>


Property changes on: PluggableAuthService/trunk/profiles/simple/PAS/roles.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: PluggableAuthService/trunk/profiles/simple/PAS/users.xml
===================================================================
--- PluggableAuthService/trunk/profiles/simple/PAS/users.xml	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/profiles/simple/PAS/users.xml	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,3 @@
+<?xml version="1.0" ?>
+<zodb-users title="User Management">
+</zodb-users>


Property changes on: PluggableAuthService/trunk/profiles/simple/PAS/users.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: PluggableAuthService/trunk/version.txt
===================================================================
--- PluggableAuthService/trunk/version.txt	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/version.txt	2006-07-25 22:59:44 UTC (rev 69264)
@@ -1 +1 @@
-PluggableAuthService-1.3
+PluggableAuthService-1.3+

Added: PluggableAuthService/trunk/www/pasAddForm.zpt
===================================================================
--- PluggableAuthService/trunk/www/pasAddForm.zpt	2006-07-25 22:12:05 UTC (rev 69263)
+++ PluggableAuthService/trunk/www/pasAddForm.zpt	2006-07-25 22:59:44 UTC (rev 69264)
@@ -0,0 +1,45 @@
+<h1 tal:replace="structure context/manage_page_header">PAGE HEADER</h1>
+<h2 tal:define="form_title string:Add Pluggable Auth Service"
+    tal:replace="structure context/manage_form_title">FORM TITLE</h2>
+
+<p class="form-help">Please select the configuration for the new user folder</p>
+
+<form action="addConfiguredPAS" method="post">
+<table cellspacing="0" cellpadding="2" border="0">
+ <tr valign="top">
+  <td>
+   <div class="form-label">Setup profile</div>
+  </td>
+  <td>
+    <select name="base_profile">
+      <option value="PROFILE_ID"
+              tal:repeat="info options/base_profiles"
+              tal:attributes="value info/id"
+              tal:content="info/title">PROFILE TITLE</option>
+    </select>
+  </td>
+ </tr>
+ <tr valign="top"
+     tal:condition="options/extension_profiles | nothing">
+  <td>
+   <div class="form-label">Optional extensions</div>
+  </td>
+  <td><tal:span tal:repeat="info options/extension_profiles">
+   <input type="checkbox" name="extension_profiles:list" value="PROFILE_ID"
+          tal:attributes="value info/id" />
+   <tal:span tal:content="info/title">PROFILE TITLE</tal:span><br /></tal:span>
+  </td>
+ </tr>
+ <tr>
+  <td>
+   &nbsp;
+  </td>
+  <td>
+   <input class="form-element" type="submit" name="submit" value="Add" /> 
+  </td>
+ </tr>
+</table>
+</form>
+
+<h1 tal:replace="structure context/manage_page_footer">PAGE FOOTER</h1>
+


Property changes on: PluggableAuthService/trunk/www/pasAddForm.zpt
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Checkins mailing list