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
Add Comment
Please, Sign In to add comment