Source code for marv_webapi.acls
# -*- coding: utf-8 -*-
#
# Copyright 2016 - 2018 Ternaris.
# SPDX-License-Identifier: AGPL-3.0-only
from __future__ import absolute_import, division
"""Access control lists
Use access control lists (ACLs) to control who can perform which
actions. An ACL is a function that returns a dictionary mapping route
function names to list of groups being allowed to access the
route. The special groups ``__authenticated__`` and
``__unauthenticated__`` are automatically assigned within
authenticated, resp. unauthenticated sessions.
"""
[docs]def authenticated():
"""Require authentication
- require authentication for everything
- only admins may delete datasets
"""
return {
'collection': ['__authenticated__'],
'comment': ['__authenticated__'],
'compare': ['__authenticated__'],
'delete': ['admin'],
'detail': ['__authenticated__'],
'file_list': ['__authenticated__'],
'get_partial_url': ['__authenticated__'],
'get_stream_url': ['__authenticated__'],
'stream': ['__authenticated__'],
'tag': ['__authenticated__'],
}
[docs]def public():
"""Allow public access
- anyone can read anything
- authenticated users can comment, tag and compare
- only admins may delete datasets
"""
return {
'collection': ['__unauthenticated__', '__authenticated__'],
'comment': ['__authenticated__'],
'compare': ['__authenticated__'],
'delete': ['admin'],
'detail': ['__unauthenticated__', '__authenticated__'],
'file_list': ['__unauthenticated__', '__authenticated__'],
'get_partial_url': ['__unauthenticated__', '__authenticated__'],
'get_stream_url': ['__unauthenticated__', '__authenticated__'],
'stream': ['__unauthenticated__'],
'tag': ['__authenticated__'],
}