mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Merge pull request #387 from LukaszSolo/master
Enable CORS for localhost
This commit is contained in:
		@@ -89,6 +89,11 @@ PAPERLESS_EMAIL_SECRET=""
 | 
				
			|||||||
# as is "example.com,www.example.com", but NOT " example.com" or "example.com,"
 | 
					# as is "example.com,www.example.com", but NOT " example.com" or "example.com,"
 | 
				
			||||||
#PAPERLESS_ALLOWED_HOSTS="example.com,www.example.com"
 | 
					#PAPERLESS_ALLOWED_HOSTS="example.com,www.example.com"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If you decide to use Paperless APIs in an ajax calls, you need to add your
 | 
				
			||||||
 | 
					# servers to the allowed hosts that can do CORS calls. By default Paperless allows 
 | 
				
			||||||
 | 
					# calls from localhost:8080. The same rules as above how the list should look like.
 | 
				
			||||||
 | 
					#PAPERLESS_CORS_ALLOWED_HOSTS="localhost:8080,example.com,localhost:8000"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# To host paperless under a subpath url like example.com/paperless you set
 | 
					# To host paperless under a subpath url like example.com/paperless you set
 | 
				
			||||||
# this value to /paperless. No trailing slash!
 | 
					# this value to /paperless. No trailing slash!
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ chardet==3.0.4
 | 
				
			|||||||
coverage==4.5.1
 | 
					coverage==4.5.1
 | 
				
			||||||
coveralls==1.3.0
 | 
					coveralls==1.3.0
 | 
				
			||||||
dateparser==0.7.0
 | 
					dateparser==0.7.0
 | 
				
			||||||
 | 
					django-cors-headers==2.4.0
 | 
				
			||||||
django-crispy-forms==1.7.2
 | 
					django-crispy-forms==1.7.2
 | 
				
			||||||
django-extensions==2.0.7
 | 
					django-extensions==2.0.7
 | 
				
			||||||
django-filter==1.1.0
 | 
					django-filter==1.1.0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
from django_filters.rest_framework import CharFilter, FilterSet
 | 
					from django_filters.rest_framework import CharFilter, FilterSet, BooleanFilter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .models import Correspondent, Document, Tag
 | 
					from .models import Correspondent, Document, Tag
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -46,6 +46,9 @@ class DocumentFilterSet(FilterSet):
 | 
				
			|||||||
    correspondent__slug = CharFilter(name="correspondent__slug", **CHAR_KWARGS)
 | 
					    correspondent__slug = CharFilter(name="correspondent__slug", **CHAR_KWARGS)
 | 
				
			||||||
    tags__name = CharFilter(name="tags__name", **CHAR_KWARGS)
 | 
					    tags__name = CharFilter(name="tags__name", **CHAR_KWARGS)
 | 
				
			||||||
    tags__slug = CharFilter(name="tags__slug", **CHAR_KWARGS)
 | 
					    tags__slug = CharFilter(name="tags__slug", **CHAR_KWARGS)
 | 
				
			||||||
 | 
					    tags__empty = BooleanFilter(name='tags',
 | 
				
			||||||
 | 
					                                lookup_expr='isnull',
 | 
				
			||||||
 | 
					                                distinct=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class Meta(object):
 | 
					    class Meta(object):
 | 
				
			||||||
        model = Document
 | 
					        model = Document
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,6 +61,7 @@ INSTALLED_APPS = [
 | 
				
			|||||||
    "django.contrib.messages",
 | 
					    "django.contrib.messages",
 | 
				
			||||||
    "django.contrib.staticfiles",
 | 
					    "django.contrib.staticfiles",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    "corsheaders",
 | 
				
			||||||
    "django_extensions",
 | 
					    "django_extensions",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    "documents.apps.DocumentsConfig",
 | 
					    "documents.apps.DocumentsConfig",
 | 
				
			||||||
@@ -84,6 +85,7 @@ if os.getenv("PAPERLESS_INSTALLED_APPS"):
 | 
				
			|||||||
MIDDLEWARE_CLASSES = [
 | 
					MIDDLEWARE_CLASSES = [
 | 
				
			||||||
    'django.middleware.security.SecurityMiddleware',
 | 
					    'django.middleware.security.SecurityMiddleware',
 | 
				
			||||||
    'django.contrib.sessions.middleware.SessionMiddleware',
 | 
					    'django.contrib.sessions.middleware.SessionMiddleware',
 | 
				
			||||||
 | 
					    'corsheaders.middleware.CorsMiddleware',
 | 
				
			||||||
    'django.middleware.common.CommonMiddleware',
 | 
					    'django.middleware.common.CommonMiddleware',
 | 
				
			||||||
    'django.middleware.csrf.CsrfViewMiddleware',
 | 
					    'django.middleware.csrf.CsrfViewMiddleware',
 | 
				
			||||||
    'django.contrib.auth.middleware.AuthenticationMiddleware',
 | 
					    'django.contrib.auth.middleware.AuthenticationMiddleware',
 | 
				
			||||||
@@ -92,6 +94,9 @@ MIDDLEWARE_CLASSES = [
 | 
				
			|||||||
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
 | 
					    'django.middleware.clickjacking.XFrameOptionsMiddleware',
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# We allow CORS from localhost:8080
 | 
				
			||||||
 | 
					CORS_ORIGIN_WHITELIST = tuple(os.getenv("PAPERLESS_CORS_ALLOWED_HOSTS", "localhost:8080").split(","))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# If auth is disabled, we just use our "bypass" authentication middleware
 | 
					# If auth is disabled, we just use our "bypass" authentication middleware
 | 
				
			||||||
if bool(os.getenv("PAPERLESS_DISABLE_LOGIN", "false").lower() in ("yes", "y", "1", "t", "true")):
 | 
					if bool(os.getenv("PAPERLESS_DISABLE_LOGIN", "false").lower() in ("yes", "y", "1", "t", "true")):
 | 
				
			||||||
    _index = MIDDLEWARE_CLASSES.index("django.contrib.auth.middleware.AuthenticationMiddleware")
 | 
					    _index = MIDDLEWARE_CLASSES.index("django.contrib.auth.middleware.AuthenticationMiddleware")
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user