from twisted.web.woven import simpleguard, page, guard
from twisted.web import resource, util, microdom
from twisted.cred import checkers, portal
class Authenticated(page.Page):
template='Hello !'
def wmfactory_name(self, request):
return request.getComponent(simpleguard.Authenticated).name
class LoginPage(page.Page):
"""This is the page that is shown to non-logged in users."""
isLeaf = True
addSlash = 0
template = '''
Login
Please Log In
'''
def __init__(self, formModel=None):
page.Page.__init__(self)
self.formModel = formModel
def wvupdate_loginform(self, request, widget, model):
microdom.lmx(widget.node).form(action=guard.INIT_PERSPECTIVE,
model="form")
def wmfactory_form(self, request):
if self.formModel:
return self.formModel
else:
return guard.newLoginSignature.method(None)
def callback(_):
return util.Redirect(".")
def buildGuardedResource():
return simpleguard.guardResource(
Authenticated(),
[checkers.InMemoryUsernamePasswordDatabaseDontUse(bob="12345")],
nonauthenticated=LoginPage(),
callback=callback, errback=LoginPage)