Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LoginForm(rend.Page):
- """ Minimalist Login Page"""
- addSlash = True
- docFactory = loaders.stan(
- T.html[
- T.head[
- T.title["Please Login"]
- ],
- T.body[
- T.form(action=guard.LOGIN_AVATAR, method="post")[
- T.table[
- T.tr[
- T.td[ "Username:" ],
- T.td[ T.input(type='text', name='username') ],
- ],
- T.tr[
- T.td[ "Password:" ],
- T.td[ T.input(type='password', name='password') ],
- ]
- ],
- T.input(type='submit'),
- ]
- ]
- ])
- class opsviewWebChecker:
- implements(checkers.ICredentialsChecker)
- credentialInterfaces = (IUsernamePassword)
- def __init__(self):
- pass
- def requestAvatarId(self, credentials):
- uname = credentials.username
- passwd = credentials.password
- sub = subscriber.addSubscriber(uname, passwd)
- auth_result = sub.authenticateNodes()
- if auth_result:
- return defer.succeed(uname)
- else:
- return defer.fail(credError.UnauthorizedLogin("Incorrect Login"))
- class opsviewRealm(object):
- implements(IRealm)
- def __init__(self, pageResource):
- self.pageResource = pageResource
- def requestAvatar(self, avatarId, mind, *interfaces):
- for iface in interfaces:
- if avatarId is checkers.ANONYMOUS:
- resc = LoginForm()
- resc.realm = self
- return (inevow.IResource, resc, lambda: None)
- else:
- resc = self.pageResource
- resc.realm = self
- return (inevow.IResource, resc, lambda: None)
- raise NotImplementedError()
- class RootPage(rend.Page):
- def __init__(self, *args, **kwargs):
- rend.Page.__init__(self, *args, **kwargs)
- addSlash = True
- docFactory = loaders.stan(
- T.html[
- T.head[
- T.title["Main Page"]
- ],
- T.body["logged in!"]
- ]
- )
- def wrapAuthorized(site):
- site = inevow.IResource(site)
- realmObject = opsviewRealm(site)
- portalObject = Portal(realmObject)
- myChecker = opsviewWebChecker()
- #Allow anonymous access to the login page
- portalObject.registerChecker(
- checkers.AllowAnonymousAccess(), IAnonymous
- )
- #Allow authenticated users to the main page
- portalObject.registerChecker(myChecker)
- site = appserver.NevowSite(resource=guard.SessionWrapper(portalObject))
- return site
- site = wrapAuthorized(RootPage())
- def getService():
- service = internet.TCPServer(httpport, site)
- service.setName("WEBService")
- return service
- --------------------
- <type 'exceptions.AttributeError'>: 'str' object has no attribute 'providedBy'
- /usr/local/lib/python2.7/site-packages/Twisted-11.0.0-py2.7-linux-x86_64.egg/twisted/internet/defer.py, line 133 in maybeDeferred
- 131 """
- 132 try:
- 133 result = f(*args, **kw)
- 134 except:
- Locals
- args (PageContext(tag=<nevow.guard.SessionWrapper object at 0x14ea7510>), ('__login__',))
- kw {}
- f <bound method SessionWrapper.locateChild of <nevow.guard.SessionWrapper object at 0x14ea7510>>
- /usr/local/lib/python2.7/site-packages/Nevow-0.10.0-py2.7.egg/nevow/guard.py, line 314 in locateChild
- 312 # ^ we are this getChild
- 313 # with or without a session
- 314 return self._delegate(ctx, segments)
- 315
- Locals
- ctx PageContext(tag=<nevow.guard.SessionWrapper object at 0x14ea7510>)
- segments ('__login__',)
- self <nevow.guard.SessionWrapper object at 0x14ea7510>
- /usr/local/lib/python2.7/site-packages/Nevow-0.10.0-py2.7.egg/nevow/guard.py, line 332 in _delegate
- 330 if sessionKey in self.sessions:
- 331 session = self.sessions[sessionKey]
- 332 return self.checkLogin(ctx, session, segments)
- 333 # without a session
- Locals
- session <nevow.guard.GuardSession instance at 0x15128638>
- segments ('__login__',)
- ctx PageContext(tag=<nevow.guard.SessionWrapper object at 0x14ea7510>)
- sessionKey 'b6f82dcba56ff793c96b54b43e055fb3'
- self <nevow.guard.SessionWrapper object at 0x14ea7510>
- /usr/local/lib/python2.7/site-packages/Nevow-0.10.0-py2.7.egg/nevow/guard.py, line 461 in checkLogin
- 459 u = u.child(seg)
- 460 return u, ()
- 461 return self.login(request, session, self.getCredentials(request), subSegments).addCallback(
- 462 unmangleURL).addErrback(
- Locals
- subSegments ()
- request <POST /__login__ HTTP/1.1>
- session <nevow.guard.GuardSession instance at 0x15128638>
- unmangleURL <function unmangleURL at 0x16eff938>
- self <nevow.guard.SessionWrapper object at 0x14ea7510>
- /usr/local/lib/python2.7/site-packages/Nevow-0.10.0-py2.7.egg/nevow/guard.py, line 529 in login
- 527 mind = self.mindFactory(request, credentials)
- 528 session.mind = mind
- 529 return self.portal.login(credentials, mind, self.credInterface).addCallback(
- 530 self._cbLoginSuccess, session, segments
- Locals
- session <nevow.guard.GuardSession instance at 0x15128638>
- credentials <twisted.cred.credentials.UsernamePassword instance at 0x16fd6a28>
- mind None
- segments ()
- request <POST /__login__ HTTP/1.1>
- self <nevow.guard.SessionWrapper object at 0x14ea7510>
- /usr/local/lib/python2.7/site-packages/Twisted-11.0.0-py2.7-linux-x86_64.egg/twisted/cred/portal.py, line 114 in login
- 112 """
- 113 for i in self.checkers:
- 114 if i.providedBy(credentials):
- 115 return maybeDeferred(self.checkers[i].requestAvatarId, credentials
- Locals
- i 'checkPassword'
- credentials <twisted.cred.credentials.UsernamePassword instance at 0x16fd6a28>
- self <twisted.cred.portal.Portal instance at 0x14ea8320>
- Globals
- providedBy <built-in function providedBy>
- maybeDeferred <function maybeDeferred at 0x143ef1b8>
- <type 'exceptions.AttributeError'>: 'str' object has no attribute 'providedBy'
Add Comment
Please, Sign In to add comment