[Zope-CVS] CVS: Products/PluggableAuthService/plugins -
InlineAuthHelper.py:1.1.2.1
Zachery Bir
zbir at urbanape.com
Thu Oct 14 12:07:14 EDT 2004
Update of /cvs-repository/Products/PluggableAuthService/plugins
In directory cvs.zope.org:/tmp/cvs-serv20666/plugins
Added Files:
Tag: pre-1_0_3-zbir-challenge-branch
InlineAuthHelper.py
Log Message:
New authentication plugin that returns a login form directly to the
browser in case of unauthorized.
Tests and resources included.
=== Added File Products/PluggableAuthService/plugins/InlineAuthHelper.py ===
##############################################################################
#
# Copyright (c) 2001 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: CookieAuthHelper
$Id: InlineAuthHelper.py,v 1.1.2.1 2004/10/14 16:07:14 urbanape Exp $
"""
from base64 import encodestring, decodestring
from urllib import quote
from AccessControl.SecurityInfo import ClassSecurityInfo
from OFS.Folder import Folder
from App.class_init import default__class_init__ as InitializeClass
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.ZopePageTemplate import manage_addPageTemplate
from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
from Products.PluggableAuthService.interfaces.plugins import \
ILoginPasswordHostExtractionPlugin, IChallengePlugin, \
ICredentialsUpdatePlugin, ICredentialsResetPlugin
manage_addInlineAuthHelperForm = PageTemplateFile(
'www/iaAdd', globals(), __name__='manage_addInlineAuthHelperForm')
def addInlineAuthHelper( dispatcher
, id
, title=None
, REQUEST=None
):
""" Add an Inline Auth Helper to a Pluggable Auth Service. """
iah = InlineAuthHelper(id, title)
dispatcher._setObject(iah.getId(), iah)
if REQUEST is not None:
REQUEST['RESPONSE'].redirect( '%s/manage_workspace'
'?manage_tabs_message='
'InlineAuthHelper+added.'
% dispatcher.absolute_url() )
class InlineAuthHelper(Folder, BasePlugin):
""" Multi-plugin for managing details of Inline Authentication. """
__implements__ = ( ILoginPasswordHostExtractionPlugin
, IChallengePlugin
)
meta_type = 'Inline Auth Helper'
security = ClassSecurityInfo()
_properties = ( { 'id' : 'title'
, 'label' : 'Title'
, 'type' : 'string'
, 'mode' : 'w'
}
)
manage_options = ( BasePlugin.manage_options[:1]
+ Folder.manage_options[:1]
+ Folder.manage_options[2:]
)
def __init__(self, id, title=None):
self.id = self._id = id
self.title = title
self.body = BASIC_LOGIN_FORM
security.declarePrivate('extractCredentials')
def extractCredentials(self, request):
""" Extract credentials from cookie or 'request'. """
creds = {}
# Look in the request for the names coming from the login form
login = request.get('__ac_name', '')
password = request.get('__ac_password', '')
if login:
creds['login'] = login
creds['password'] = password
if creds:
creds['remote_host'] = request.get('REMOTE_HOST', '')
try:
creds['remote_address'] = request.getClientAddr()
except AttributeError:
creds['remote_address'] = request.get('REMOTE_ADDR', '')
return creds
security.declarePrivate('challenge')
def challenge(self, request, response, **kw):
""" Challenge the user for credentials. """
response.write(self.body)
return True
InitializeClass(InlineAuthHelper)
BASIC_LOGIN_FORM = """<html>
<head>
<title> Login Form </title>
</head>
<body>
<h3> Please log in </h3>
<form method="post">
<table cellpadding="2">
<tr>
<td><b>Login:</b> </td>
<td><input type="text" name="__ac_name" size="30" /></td>
</tr>
<tr>
<td><b>Password:</b></td>
<td><input type="password" name="__ac_password" size="30" /></td>
</tr>
<tr>
<td colspan="2">
<br />
<input type="submit" value=" Log In " />
</td>
</tr>
</table>
</form>
</body>
</html>
"""
More information about the Zope-CVS
mailing list