auth.py 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # -*- coding: utf-8 -*-
  2. """Predicates for authorizations"""
  3. from tg.predicates import Predicate
  4. from pboard.model import DBSession as session
  5. from pboard.model.auth import Permission, User
  6. class can_read(Predicate):
  7. message = ""
  8. def __init__(self, **kwargs):
  9. pass
  10. def evaluate(self, environ, credentials):
  11. node_id = environ['webob.adhoc_attrs']['validation']['values']['node']
  12. has_right = session.execute("""
  13. select *
  14. from pod_group_node pgn
  15. join pod_user_group pug on pug.group_id = pgn.group_id
  16. join pod_user pu on pug.user_id = pu.user_id
  17. where rights > 0
  18. and email_address = :mail
  19. and node_id = :node""", {"mail":credentials["repoze.who.userid"], "node":node_id})
  20. if has_right.rowcount == 0 :
  21. self.unmet()
  22. class can_write(Predicate):
  23. message = ""
  24. def __init__(self, **kwargs):
  25. pass
  26. def evaluate(self, environ, credentials):
  27. node_id = environ['webob.adhoc_attrs']['validation']['values']['node_id']
  28. has_right = session.execute("""
  29. select *
  30. from pod_group_node pgn
  31. join pod_user_group pug on pug.group_id = pgn.group_id
  32. join pod_user pu on pug.user_id = pu.user_id
  33. where rights > 1
  34. and email_address = :mail
  35. and node_id = :node""", {"mail":credentials["repoze.who.userid"], "node":node_id})
  36. if has_right.rowcount == 0 :
  37. self.unmet()