Metadata-Version: 2.1
Name: rest-framework-apicontrol
Version: 0.8.1
Summary: Control Clients Apps access over REST APIs with ApiKeys
License: MIT
Author: Marcelo Cueto
Author-email: cueto@live.cl
Requires-Python: >3.6
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.2
Classifier: Framework :: Django :: 3.0
Classifier: Framework :: Django :: 3.1
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Dist: Django (>2.2)
Requires-Dist: djangorestframework (>3.7.0)
Requires-Dist: psycopg2-binary (>=2.8.2)
Description-Content-Type: text/markdown

# djangorestframework-apicontrol

This is an App intended to control Clients Apps access over REST APIs.

## Notice
```
Please be carefull with the use of this package, and remember to backup your database before apply each migration.
```

## Permission Usage (APIKey)
you only has to import the permission and use it in your rest_framework views, or in your settings.py file, as you prefer. e.g:

``` python
"""Contact views."""
from rest_framework import viewsets
from rest_framework_apicontrol.permissions import HasApiKeyPermission
from .models import (
    ContactInfo
)
from .serializers import (
    ContactInfoSerializer
)


class ContactInfoViewSet(viewsets.ModelViewSet):
    queryset = ContactInfo.objects.all()
    serializer_class = ContactInfoSerializer
    permission_classes = [HasApiKeyPermission]
    authentication_classes = []

```

All the calls to this endpoint **MUST HAVE** a header called **Api-Key** with the value of an App(App model in Django admin site)

## Models
This app comes with several models & mixins which provide useful common fields & functions, the models it provides are the following:

![models diagram](docs/img/models.png)

To add those models to your app the only you need to do is add `rest_framework_apicontrol` to your project `INSTALLED_APPS` setting & then migrate your app.
``` python
INSTALLED_APPS = [
    # Django default modules
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Security & multi-app management
    'rest_framework_apicontrol',
    # Your project apps
    '...',
]
```

**Notice:** This project's models needs PostgreSQL as database because the use of JSONField in some of it's model fields.


## Donate
If this project is useful for you, please donate some dollars to help me improve this & others projects.

My Paypal - http://paypal.me/mcuetodeveloper

