PageRenderTime 24ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/ldaptor/apps/webui/main.py

http://github.com/antong/ldaptor
Python | 50 lines | 39 code | 10 blank | 1 comment | 5 complexity | cfeaa2da0f2d0bd2845be8e219242c59 MD5 | raw file
Possible License(s): LGPL-2.1
  1. from zope.interface import implements
  2. from twisted.cred import portal, checkers, credentials
  3. from nevow import guard, inevow
  4. from webut.skin import skin
  5. from ldaptor.config import LDAPConfig
  6. from ldaptor.apps.webui import gadget, defskin
  7. from ldaptor.checkers import LDAPBindingChecker
  8. class TODOGetRidOfMeRealm:
  9. implements(portal.IRealm)
  10. def __init__(self, *args, **kwargs):
  11. self.args = args
  12. self.kwargs = kwargs
  13. def requestAvatar(self, avatarId, mind, *interfaces):
  14. if inevow.IResource not in interfaces:
  15. raise NotImplementedError, "no interface"
  16. if avatarId is checkers.ANONYMOUS:
  17. resource = gadget.LdaptorWebUIGadget(None, *self.args, **self.kwargs)
  18. resource.realm = self
  19. return (inevow.IResource,
  20. resource,
  21. lambda: None)
  22. else:
  23. resource = gadget.LdaptorWebUIGadget(avatarId, *self.args, **self.kwargs)
  24. resource.realm = self
  25. return (inevow.IResource,
  26. resource,
  27. lambda: None)
  28. def getResource(cfg=None, skinFactory=None):
  29. """Get a resource for the Ldaptor-webui app."""
  30. if cfg is None:
  31. cfg = LDAPConfig()
  32. checker = LDAPBindingChecker(cfg)
  33. realm = TODOGetRidOfMeRealm(config=cfg)
  34. porta = portal.Portal(realm)
  35. porta.registerChecker(checkers.AllowAnonymousAccess(), credentials.IAnonymous)
  36. porta.registerChecker(checker)
  37. mainResource = guard.SessionWrapper(porta)
  38. if skinFactory is None:
  39. skinFactory = defskin.DefaultSkin
  40. return skin.Skinner(skinFactory, mainResource)