diff --git a/{{cookiecutter.project_slug}}/config/settings/base.py b/{{cookiecutter.project_slug}}/config/settings/base.py index 2e7d11d1c..18a43a4a2 100644 --- a/{{cookiecutter.project_slug}}/config/settings/base.py +++ b/{{cookiecutter.project_slug}}/config/settings/base.py @@ -81,6 +81,7 @@ THIRD_PARTY_APPS = [ "rest_framework", {%- if cookiecutter.js_task_runner == "CreateReactApp" -%} "corsheaders", + "oauth2_provider", {%- endif %} {%- if cookiecutter.use_celery == 'y' -%} "django_celery_beat", @@ -353,6 +354,18 @@ REST_FRAMEWORK = { "DEFAULT_SCHEMA_CLASS": "rest_framework.schemas.coreapi.AutoSchema", } +# OAUTH2 CONFIGURATION +# ------------------------------------------------------------------------------ +# https://django-oauth-toolkit.readthedocs.io/en/latest/rest-framework/getting_started.html +OAUTH2_PROVIDER = { + # this is the list of available scopes + "SCOPES": { + "read": "Read scope", + "write": "Write scope", + }, + "ACCESS_TOKEN_EXPIRE_SECONDS": 31536000, # Sets OAUTH access tokens good for a year +} + # Graphene Setup # ------------------------------------------------------------------------------ # See: http://docs.graphene-python.org/projects/django/en/latest/tutorial-plain/#update-settings diff --git a/{{cookiecutter.project_slug}}/config/urls.py b/{{cookiecutter.project_slug}}/config/urls.py index bf170d14f..d0d5fb361 100644 --- a/{{cookiecutter.project_slug}}/config/urls.py +++ b/{{cookiecutter.project_slug}}/config/urls.py @@ -23,6 +23,9 @@ urlpatterns = [ path("api-docs/", include_docs_urls(title="{{ cookiecutter.project_name }} REST API", public=False)), path("graphql/", csrf_exempt(FileUploadGraphQLView.as_view(graphiql=True, pretty=True))), + # OAUTH2: https://github.com/evonove/django-oauth-toolkit + path("oauth/", include('oauth2_provider.urls', namespace='oauth2_provider')), + # User management from django-all-auth path("about/", TemplateView.as_view(template_name="pages/about.html"), name="about"), path("users/", include("{{ cookiecutter.project_slug }}.users.urls", namespace="users")), diff --git a/{{cookiecutter.project_slug}}/requirements/base.txt b/{{cookiecutter.project_slug}}/requirements/base.txt index ae03b3e0c..3adc197a9 100644 --- a/{{cookiecutter.project_slug}}/requirements/base.txt +++ b/{{cookiecutter.project_slug}}/requirements/base.txt @@ -42,4 +42,5 @@ coreapi==2.3.3 # https://github.com/core-api/python-client # Django/ReactJS integration # ------------------------------------------------------------------------------ django-cors-headers==2.4.0 # https://github.com/ottoyiu/django-cors-headers +django-oauth-toolkit==1.2.0 # http://dot.evonove.it/#setup {%- endif %}