* Do not show objects in status "pending" on the UI #784 * Fix peeringdb.js bug introduced in #784 * 500 Error during login for 2FA enabled accounts with unverified email address #996 * Django-Admin: adding a network with existing asn fails with internal error #1035 * Some command-line-tool executions are not logged #1119 * Ops: API throttling of repeated requests #1126 * Ops: response header X-Auth-ID to augment logging #1120 * Allow rate-limiting of melissa enabled api functionality. #1124 * State / Province normalization #1079 * Log melissa requests #1122 * remove debug messages * bump django-handleref to 1.0.2 * Need consolidated app logs #845 * pin django peeringdb to 2.13 and relock poetry * pin django-restframework-apikey to 2.1.0 * linting * migrations * docs regenerate * docs * linting Co-authored-by: David Poarch <dpoarch@20c.com> Co-authored-by: Stefan Pratter <stefan@20c.com>
3.4 KiB
Generated from permissions.py on 2022-04-12 16:41:02.631987
peeringdb_server.permissions
Utilities for permission handling.
Permission logic is handled through django-grainy.
API key auth is handled through djangorestframework-api-key.
Determine permission holder from request (api key or user).
Read only user api key handling.
Censor API output data according to permissions using grainy Applicators.
Functions
check_permissions
def check_permissions(obj, target, permissions, **kwargs)
Use the provided permission holding object to initialize the Permissions Util, which then checks permissions.
check_permissions_from_request
def check_permissions_from_request(request, target, flag, **kwargs)
Call the check_permissions util but takes a request as input, not a permission-holding object.
get_key_from_request
def get_key_from_request(request)
Use the default KeyParser from drf-api-keys to pull the key out of the request.
get_org_key_from_request
def get_org_key_from_request(request)
Return an org key from the request if the request was made with an OrgKey.
Otherwise returns None.
get_permission_holder_from_request
def get_permission_holder_from_request(request)
Return either an API Key instance or User instance depending on how the request is Authenticated.
get_user_from_request
def get_user_from_request(request)
Return a user from the request if the request was made with either a User or UserAPIKey.
If request was made with OrgKey, returns None.
get_user_key_from_request
def get_user_key_from_request(request)
Return a user API key from the request if the request was made with an User API Key.
Otherwise returns None.
init_permissions_helper
def init_permissions_helper(obj)
Initialize the Permission Util based on whether the provided object is a UserAPIKey, OrgAPIKey, or a different object.
return_org_api_key_perms
def return_org_api_key_perms(key)
Load Permissions util with OrgAPIKey perms and then add in that organization's user group perms and general user group permissions.
return_user_api_key_perms
def return_user_api_key_perms(key)
Initialize the Permissions Util with the permissions of the user linked to the User API key.
If the UserAPIKey is marked readonly, it downgrades all permissions to readonly.
Classes
APIPermissionsApplicator
APIPermissionsApplicator(grainy.core.NamespaceKeyApplicator)
Applicator that looks for permission namespaces from a specified field in the dict it is scanning
Instanced Attributes
These attributes / properties will be available on instances of the class
- is_generating_api_cache (
@property): None
Methods
_init_
def __init__(self, request)
Initialize self. See help(type(self)) for accurate signature.
ModelViewSetPermissions
ModelViewSetPermissions(rest_framework.permissions.BasePermission)
Use as a permission class on a ModelRestViewSet to automatically wire up the following views to the correct permissions based on the handled object:
- retrieve
- list
- create
- destroy
- update
- partial update
Methods
has_object_permission
def has_object_permission(self, request, view, obj)
Return True if permission is granted, False otherwise.
has_permission
def has_permission(self, request, view)
Return True if permission is granted, False otherwise.