/shabti/templates/auth_couchdb/+package+/lib/auth/permissions.py_tmpl
Unknown | 41 lines | 32 code | 9 blank | 0 comment | 0 complexity | 80a14d210c30ad647a94a05c70930f3b MD5 | raw file
1from {{package}}.lib.auth import get_user
2from {{package}} import model
3import pylons
4import types
5
6# Common permissions. Permission classes must have a 'check'
7# method which returns True or False.
8
9class SignedIn(object):
10
11 def check(self):
12 return (get_user() is not None)
13
14class InGroup(object):
15
16 def __init__(self, group_name):
17 self.group_name = group_name
18
19 def check(self):
20 group = model.Group.get_by(name = self.group_name, active = True)
21 if group and get_user() in group.members:
22 return True
23 return False
24
25class HasPermission(object):
26
27 def __init__(self, permission, obj=None):
28 "obj may be string or actual object. If string, object retrieved from Context"
29 self.permission = permission
30 self.obj = obj
31
32 def check(self):
33 user = get_user()
34 if type(self.obj) is types.StringType:
35 c = pylons.c._current_obj()
36 obj = getattr(c, self.obj, None)
37 else:
38 obj = self.obj
39 if user and user.has_permission(self.permission, obj):
40 return True
41 return False