1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/examples/Common/OpenIDLogin/__init__.py Mon Nov 19 00:18:43 2007 +0000
1.3 @@ -0,0 +1,94 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +"An OpenID login provider."
1.7 +
1.8 +# Site map imports.
1.9 +
1.10 +from WebStack.Generic import ContentType
1.11 +from WebStack.Resources.OpenIDLogin import Authenticator
1.12 +from WebStack.Resources.ResourceMap import MapResource
1.13 +from WebStack.Resources.Selectors import EncodingSelector, PathSelector
1.14 +from WebStack.Resources.Static import StringResource
1.15 +import XSLForms.Resources.OpenIDLogin
1.16 +from XSLForms.Resources.WebResources import output, prepare_resources as pr, resources
1.17 +
1.18 +# Configuration settings.
1.19 +
1.20 +encoding = "utf-8"
1.21 +
1.22 +# Resource classes.
1.23 +
1.24 +class LoginResource(XSLForms.Resources.OpenIDLogin.OpenIDLoginResource):
1.25 +
1.26 + "Special login screen for this application."
1.27 +
1.28 + resource_dir = resources(__file__)
1.29 + template_resources = {
1.30 + "login" : output("login_template.xhtml"),
1.31 + "success" : output("success_template.xhtml")
1.32 + }
1.33 +
1.34 +# Site map initialisation.
1.35 +
1.36 +def get_site(host, use_redirect=1):
1.37 +
1.38 + "Return a simple Web site resource."
1.39 +
1.40 + # Authentication objects.
1.41 +
1.42 + credentials = [
1.43 + ((host + "/badger", "badger"), "abc"),
1.44 + ((host + "/vole", "vole"), "xyz")
1.45 + ]
1.46 + login_authenticator = Authenticator(credentials)
1.47 +
1.48 + # Get a login resource.
1.49 +
1.50 + login_resource = LoginResource(host, login_authenticator, use_redirect=use_redirect)
1.51 +
1.52 + # A container for the login resource and user pages.
1.53 +
1.54 + resource = MapResource({
1.55 + "login" : login_resource,
1.56 +
1.57 + # Some local OpenID pages.
1.58 +
1.59 + "badger" :
1.60 + StringResource("""
1.61 + <html>
1.62 + <head>
1.63 + <link rel="openid2.provider openid.server" href="%s/login" />
1.64 + <link rel="openid2.local_id openid.delegate" href="%s/badger" />
1.65 + <title>Badger's Home Page</title>
1.66 + </head>
1.67 + <body>
1.68 + <p>Home page for the OpenID authenticated user, <code>badger</code>.</p>
1.69 + </body>
1.70 + </html>
1.71 + """ % (host, host), ContentType("text/html")),
1.72 + "vole" :
1.73 + StringResource("""
1.74 + <html>
1.75 + <head>
1.76 + <link rel="openid2.provider openid.server" href="%s/login" />
1.77 + <link rel="openid2.local_id openid.delegate" href="%s/vole" />
1.78 + <title>Vole's Home Page</title>
1.79 + </head>
1.80 + <body>
1.81 + <p>Home page for the OpenID authenticated user, <code>vole</code>.</p>
1.82 + </body>
1.83 + </html>
1.84 + """ % (host, host), ContentType("text/html"))
1.85 + })
1.86 +
1.87 + # Wrap the resource up with information about the application root.
1.88 +
1.89 + return EncodingSelector(PathSelector(resource), encoding)
1.90 +
1.91 +# Resource preparation ahead of time - useful for making installations.
1.92 +
1.93 +def prepare_resources():
1.94 + for cls in [LoginResource]:
1.95 + pr(cls)
1.96 +
1.97 +# vim: tabstop=4 expandtab shiftwidth=4