/shabti/templates/auth_couchdb/+package+/lib/auth/permissions.py_tmpl

https://bitbucket.org/gawel/shabti · Unknown · 41 lines · 32 code · 9 blank · 0 comment · 0 complexity · 80a14d210c30ad647a94a05c70930f3b MD5 · raw file

  1. from {{package}}.lib.auth import get_user
  2. from {{package}} import model
  3. import pylons
  4. import types
  5. # Common permissions. Permission classes must have a 'check'
  6. # method which returns True or False.
  7. class SignedIn(object):
  8. def check(self):
  9. return (get_user() is not None)
  10. class InGroup(object):
  11. def __init__(self, group_name):
  12. self.group_name = group_name
  13. def check(self):
  14. group = model.Group.get_by(name = self.group_name, active = True)
  15. if group and get_user() in group.members:
  16. return True
  17. return False
  18. class HasPermission(object):
  19. def __init__(self, permission, obj=None):
  20. "obj may be string or actual object. If string, object retrieved from Context"
  21. self.permission = permission
  22. self.obj = obj
  23. def check(self):
  24. user = get_user()
  25. if type(self.obj) is types.StringType:
  26. c = pylons.c._current_obj()
  27. obj = getattr(c, self.obj, None)
  28. else:
  29. obj = self.obj
  30. if user and user.has_permission(self.permission, obj):
  31. return True
  32. return False