[Product-Developers] PAS Plugin
Ermanno Gnan
ermannognan at gmail.com
Thu Dec 13 16:46:21 UTC 2007
Hi, I'm writing my first PAS plugin for Plone. I'm a little bit in
trouble because I don't find a very simple tutorial from A to Z which
explains me how to create it.
I understood only that I've to create 2 py files: one ontaining
initialize informations and another one with py class which contains
the implementations of interfaces.
Can somebody explain me better what PAS needs to run my
implementation? I would like that it would be displayed on /acl_users/
plugins on the section Authentication Plugins.
Next I'll attach my sources which are my "bad" iplementation of PAS
plugin. Is it some near my implementation or have I missed all?
=
=
=
=
=
=
=
=
========================================================================
My first file: SSLAuth.py
=
=
=
=
=
=
=
=
========================================================================
##############################################################################
#
# Copyright (c) 2004 Zope Corporation and Contributors. All Rights
# Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this
# distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND
FITNESS
# FOR A PARTICULAR PURPOSE.
##############################################################################
""" Class: SSLAuth
$Id: SSLAuth,v 1.0 2007/12/13 12:40:20 Ermanno Gnan $
"""
#Per funzionare come plugin PAS deve implementare le interfacce ed
estendere un BasePlugin
from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
from Products.PluggableAuthService.interfaces.plugins import
IAuthenticationPlugin #, IExtractionPlugin
from Products.PluggableAuthService.utils import classImplements
from App.class_init import default__class_init__ as InitializeClass
#costruttore del plugin
def manage_addSSLAuth( dispatcher, id='credentials_sslauth',
title=None, REQUEST=None):
"""
Aggiunge il plugin a PAS
"""
#inizializza il plugin
sp = SSLAuth( id, title )
dispatcher._setObject( sp.getId(), sp)
if REQUEST is not None:
REQUEST['RESPONSE'].redirect( '%s/manage_workspace'
'?manage_tabs_message='
'SSLAuth+added.'
% dispatcher.absolute_url() )
#classe che implementa le interfacce
class SSLAuth (BasePlugin):
meta_type = 'SSLAuth'
#__implements__ = (getattr(BasePlugin,'__implements__',()),)
#implementazione dell'interfaccia IAuthenticationPlugin
def authenticateCredentials(self, credentials):
if credentials["login"]=="ermanno" and credentials["password"]=='':
login="admin"
password="gavroche"
return(login, password)
else:
return(credentials["login"], credentials["password"])
classImplements(SSLAuth, IAuthenticationPlugin)
InitializeClass(SSLAuth)
=
=
=
=
=
=
=
=
========================================================================
__init__.py
=
=
=
=
=
=
=
=
========================================================================
"""
Installer del plugin
"""
#Carico la libreria per l'installer
from Products.PluggableAuthService.PluggableAuthService import
registerMultiPlugin
from zLOG import LOG, INFO, ERROR, WARNING
from AccessControl.Permissions import add_user_folders
from SSLAuth import SSLAuth, manage_addSSLAuth
def initialize(context):
registerMultiPlugin(SSLAuth.meta_type)
context.registerClass( SSLAuth,
permission=add_user_folders,
constructors=(manage_addSSLAuth,
manage_addSSLAuth),
visibility=None)
=
=
=
=
=
=
=
=
========================================================================
=
=
=
=
=
=
=
=
========================================================================
My Interface has an inplementation which is not coherent with my
purposes.. it's Just a training one... :-)
More information about the Product-Developers
mailing list