def test_acl(self): from tipfy.ext.acl import Acl, AclRules Acl.roles_map = { 'default': [('*', '*', False)], 'reader': [('member', 'read', True)], 'editor': [('member', 'create', True), ('member', 'read', True), ('member', 'update', True)], 'admin': [('member', 'create', True), ('member', 'read', True), ('member', 'update', True), ('member', 'delete', True)], 'superUser': [('*', '*', True)], } AclRules.insert_or_update(area='my_area', user='******', roles=['default' ]) AclRules.insert_or_update(area='my_doguma', user='******', roles=['default', 'reader']) user_acl = AclRules.get_by_area_and_user('my_area', 'user') user_acl.rules.append(('UserAdmin', 'read', True)) user_acl.put() acl = Acl(area='my_area', user='******') self.assertEqual(acl.has_access(topic='UserAdmin', name='read'), True) self.assertEqual(acl.has_access(topic='UserAdmin', name='write'), False)
def decorated_function(*args, **kwargs): user = get_current_user().email() acl = Acl(area, user) if acl.is_one("admin") or acls_count == 0: return original_function(*args, **kwargs) else: return Response(response='{"error": "No Admin"}', status=400, mimetype="application/json")