Guest User

Untitled

a guest
Apr 8th, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.96 KB | None | 0 0
  1. class LoginForm(rend.Page):
  2.     """ Minimalist Login Page"""
  3.     addSlash = True
  4.     docFactory = loaders.stan(
  5.         T.html[
  6.             T.head[
  7.                 T.title["Please Login"]
  8.             ],
  9.             T.body[
  10.                 T.form(action=guard.LOGIN_AVATAR, method="post")[
  11.                     T.table[
  12.                         T.tr[
  13.                             T.td[ "Username:" ],
  14.                             T.td[ T.input(type='text', name='username') ],
  15.                         ],
  16.                         T.tr[
  17.                             T.td[ "Password:" ],
  18.                             T.td[ T.input(type='password', name='password') ],
  19.                         ]
  20.                     ],
  21.                     T.input(type='submit'),
  22.                 ]
  23.             ]
  24.         ])
  25. class opsviewWebChecker:
  26.     implements(checkers.ICredentialsChecker)
  27.     credentialInterfaces = (IUsernamePassword)
  28.    
  29.     def __init__(self):
  30.         pass
  31.    
  32.     def requestAvatarId(self, credentials):
  33.         uname = credentials.username
  34.         passwd = credentials.password
  35.         sub = subscriber.addSubscriber(uname, passwd)
  36.         auth_result = sub.authenticateNodes()
  37.         if auth_result:
  38.             return defer.succeed(uname)
  39.         else:
  40.             return defer.fail(credError.UnauthorizedLogin("Incorrect Login"))
  41.        
  42.        
  43. class opsviewRealm(object):
  44.     implements(IRealm)
  45.    
  46.     def __init__(self, pageResource):
  47.         self.pageResource = pageResource
  48.        
  49.     def requestAvatar(self, avatarId, mind, *interfaces):
  50.         for iface in interfaces:
  51.             if avatarId is checkers.ANONYMOUS:
  52.                 resc = LoginForm()
  53.                 resc.realm = self
  54.                 return (inevow.IResource, resc, lambda: None)
  55.             else:
  56.                 resc = self.pageResource
  57.                 resc.realm = self
  58.                 return (inevow.IResource, resc, lambda: None)
  59.         raise NotImplementedError()
  60.    
  61. class RootPage(rend.Page):
  62.    
  63.     def __init__(self, *args, **kwargs):
  64.         rend.Page.__init__(self, *args, **kwargs)
  65.        
  66.     addSlash = True
  67.     docFactory = loaders.stan(
  68.         T.html[
  69.             T.head[
  70.                 T.title["Main Page"]
  71.             ],
  72.             T.body["logged in!"]
  73.         ]
  74.     )
  75.  
  76. def wrapAuthorized(site):
  77.     site = inevow.IResource(site)
  78.     realmObject = opsviewRealm(site)
  79.     portalObject = Portal(realmObject)
  80.     myChecker = opsviewWebChecker()
  81.     #Allow anonymous access to the login page
  82.     portalObject.registerChecker(
  83.         checkers.AllowAnonymousAccess(), IAnonymous
  84.     )
  85.     #Allow authenticated users to the main page
  86.     portalObject.registerChecker(myChecker)
  87.     site = appserver.NevowSite(resource=guard.SessionWrapper(portalObject))
  88.     return site
  89.  
  90. site = wrapAuthorized(RootPage())
  91.  
  92. def getService():
  93.     service = internet.TCPServer(httpport, site)
  94.     service.setName("WEBService")
  95.     return service
Add Comment
Please, Sign In to add comment