diff --git a/plovidba_aplikacija/__pycache__/models.cpython-38.pyc b/plovidba_aplikacija/__pycache__/models.cpython-38.pyc index 17ad5fe..29ae890 100644 Binary files a/plovidba_aplikacija/__pycache__/models.cpython-38.pyc and b/plovidba_aplikacija/__pycache__/models.cpython-38.pyc differ diff --git a/plovidba_aplikacija/migrations/0009_objektsigurnosti_operater.py b/plovidba_aplikacija/migrations/0009_objektsigurnosti_operater.py new file mode 100644 index 0000000..166e146 --- /dev/null +++ b/plovidba_aplikacija/migrations/0009_objektsigurnosti_operater.py @@ -0,0 +1,22 @@ +# Generated by Django 4.2.9 on 2024-01-22 07:59 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('plovidba_aplikacija', '0008_objektsigurnosti_e_br_objektsigurnosti_fotografija_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='objektsigurnosti', + name='operater', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + preserve_default=False, + ), + ] diff --git a/plovidba_aplikacija/migrations/__pycache__/0009_objektsigurnosti_operater.cpython-38.pyc b/plovidba_aplikacija/migrations/__pycache__/0009_objektsigurnosti_operater.cpython-38.pyc new file mode 100644 index 0000000..59ac68e Binary files /dev/null and b/plovidba_aplikacija/migrations/__pycache__/0009_objektsigurnosti_operater.cpython-38.pyc differ diff --git a/plovidba_aplikacija/models.py b/plovidba_aplikacija/models.py index b3f0763..fad5ea1 100644 --- a/plovidba_aplikacija/models.py +++ b/plovidba_aplikacija/models.py @@ -1,6 +1,7 @@ from django.db import models from django.contrib.gis.db import models from django.contrib.auth.models import User +from django.conf import settings class ObjektSigurnosti(models.Model): naziv = models.CharField(max_length=255) @@ -12,7 +13,7 @@ class ObjektSigurnosti(models.Model): fotografija = models.CharField(max_length=255, null=True, blank=True) id_ais = models.CharField(max_length=255, null=True, blank=True) simbol_oznaka = models.CharField(max_length=255, null=True, blank=True) - #operater = models.ForeignKey(User, on_delete=models.CASCADE) + operater = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) def __str__(self): return self.naziv diff --git a/plovidba_projekt/__pycache__/settings.cpython-38.pyc b/plovidba_projekt/__pycache__/settings.cpython-38.pyc index 13bfc01..8f218dc 100644 Binary files a/plovidba_projekt/__pycache__/settings.cpython-38.pyc and b/plovidba_projekt/__pycache__/settings.cpython-38.pyc differ diff --git a/plovidba_projekt/settings.py b/plovidba_projekt/settings.py index aeaa151..5b9304b 100644 --- a/plovidba_projekt/settings.py +++ b/plovidba_projekt/settings.py @@ -18,6 +18,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent # dodano import os from osgeo import gdal +from datetime import timedelta from .env import BASE_DIR, ENV_BOOL, ENV_LIST, ENV_NUM, ENV_STR, PARDIR # noqa @@ -31,10 +32,25 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = 'django-insecure-6iovioyxw5hqwp)0=zu&yu&p!ql34g+x(p4xgk79vs57zpinio' # SECURITY WARNING: don't run with debug turned on in production! + DEBUG = True +# DEBUG = ENV_BOOL("DEBUG") ALLOWED_HOSTS = [] +# CSRF_TRUSTED_ORIGINS = ENV_LIST("CSRF_TRUSTED_ORIGINS", ",", []), + +# CORS settings +CORS_ALLOW_ALL_ORIGINS = False +CORS_ALLOW_CREDENTIALS = True +CORS_ALLOWED_ORIGINS = ENV_LIST("CORS_ALLOWED_ORIGINS", ",", []) + +# HTTP -> HTTPS +USE_X_FORWARDED_HOST = True +SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") + +# Frontend +FRONTEND_URL = ENV_STR("FRONTEND_URL") # Application definition @@ -130,6 +146,9 @@ AUTH_PASSWORD_VALIDATORS = [ }, ] +# Substituting a custom User model +AUTH_USER_MODEL = "user.User" + # Define DRF settings REST_FRAMEWORK = { "DEFAULT_AUTHENTICATION_CLASSES": [ @@ -143,6 +162,34 @@ REST_FRAMEWORK = { "PAGE_SIZE": 100, } + +# # # AUTH SETTINGS + +# Force email based auth + +# Custom auth variables +AUTH_AUTHENTICATION_METHOD = "email" # Options: username | email | username_email +AUTH_EMAIL_REQUIRED = True +AUTH_USERNAME_REQUIRED = False # Require username in registration +AUTH_EMAIL_VERIFICATION = "mandatory" # +AUTH_ACCESS_TOKEN_NAME = "access" # set access token name +AUTH_REFRESH_TOKEN_NAME = "refresh" # set access token name + +# Simple JWT config + +SIMPLE_JWT = { + "REFRESH_TOKEN_LIFETIME": timedelta( + days=ENV_NUM("JWT_REFRESH_TOKEN_LIFETIME_DAYS", 15) + ), + "ROTATE_REFRESH_TOKENS": True, + "ACCESS_TOKEN_LIFETIME": timedelta( + minutes=ENV_NUM("JWT_ACCESS_TOKEN_LIFETIME_MINUTES", 10) + ), + "AUTH_COOKIE_SECURE": True, + "AUTH_COOKIE_SAMESITE": "None", + "AUTH_COOKIE_HTTP_ONLY": True, +} + # API docs SHOW_API_DOCS = ENV_BOOL("SHOW_API_DOCS", True) @@ -161,14 +208,10 @@ USE_TZ = True LOCALE_PATHS = [os.path.join(BASE_DIR, "locale")] -PROJ_LIB = ENV_STR("PROJ_LIB", None) -GDAL_DATA = ENV_STR("GDAL_DATA", None) - -if PROJ_LIB: - os.environ["PROJ_LIB"] = PROJ_LIB - -if GDAL_DATA: - os.environ["GDAL_DATA"] = GDAL_DATA +# Available languages +LANGUAGES = [ + ("hr", ("Croatian")), +] # Static files (CSS, JavaScript, Images) @@ -195,6 +238,18 @@ RESOURCES_DIR = os.path.join(BASE_DIR, "resources") # TEMP DIR TEMP_DIR = os.path.join(BASE_DIR, "temp") +# # # Email and support settings # # # + +ADMIN_EMAIL = ENV_STR("ADMIN_EMAIL") +EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" +EMAIL_HOST = ENV_STR("EMAIL_HOST", "smtp.office365.com") +EMAIL_USE_TLS = ENV_BOOL("EMAIL_USER_TLS", True) +EMAIL_PORT = ENV_NUM("EMAIL_PORT", 587) +EMAIL_HOST_USER = ENV_STR("EMAIL_HOST_USER") +EMAIL_HOST_PASSWORD = ENV_STR("EMAIL_HOST_PASSWORD") +DEFAULT_FROM_EMAIL = ENV_STR("DEFAULT_FROM_EMAIL") +EMAIL_USE_SSL = ENV_BOOL("EMAIL_USER_TLS", False) + # Default primary key field type # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field @@ -202,3 +257,11 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' +PROJ_LIB = ENV_STR("PROJ_LIB", None) +GDAL_DATA = ENV_STR("GDAL_DATA", None) + +if PROJ_LIB: + os.environ["PROJ_LIB"] = PROJ_LIB + +if GDAL_DATA: + os.environ["GDAL_DATA"] = GDAL_DATA \ No newline at end of file