diff --git a/backend/server/main/urls.py b/backend/server/main/urls.py index b5d705b..e9eb1f7 100644 --- a/backend/server/main/urls.py +++ b/backend/server/main/urls.py @@ -4,7 +4,7 @@ from django.views.generic import RedirectView, TemplateView from django.conf import settings from django.conf.urls.static import static from adventures import urls as adventures -from users.views import ChangeEmailView +from users.views import ChangeEmailView, IsRegistrationDisabled from .views import get_csrf_token from drf_yasg.views import get_schema_view @@ -21,6 +21,7 @@ urlpatterns = [ path('api/', include('worldtravel.urls')), path('auth/change-email/', ChangeEmailView.as_view(), name='change_email'), + path('auth/is-registration-disabled/', IsRegistrationDisabled.as_view(), name='is_registration_disabled'), path('csrf/', get_csrf_token, name='get_csrf_token'), re_path(r'^$', TemplateView.as_view( diff --git a/backend/server/users/views.py b/backend/server/users/views.py index cc60583..68e9c36 100644 --- a/backend/server/users/views.py +++ b/backend/server/users/views.py @@ -5,6 +5,7 @@ from rest_framework.permissions import IsAuthenticated from .serializers import ChangeEmailSerializer from drf_yasg.utils import swagger_auto_schema from drf_yasg import openapi +from django.conf import settings class ChangeEmailView(APIView): permission_classes = [IsAuthenticated] @@ -28,4 +29,16 @@ class ChangeEmailView(APIView): user.emailaddress_set.create(email=new_email, primary=True, verified=False) user.save() return Response({"detail": "Email successfully changed."}, status=status.HTTP_200_OK) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) \ No newline at end of file + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + +class IsRegistrationDisabled(APIView): + @swagger_auto_schema( + responses={ + 200: openapi.Response('Registration is disabled'), + 400: 'Bad Request' + }, + operation_description="Check if registration is disabled." + ) + def get(self, request): + return Response({"is_disabled": settings.DISABLE_REGISTRATION}, status=status.HTTP_200_OK) + \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f4a195d..3e93681 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -48,7 +48,7 @@ services: nginx: image: nginx:latest ports: - - "81:80" # Using port 81 to avoid conflict with your existing setup + - "81:80" volumes: - adventurelog_media:/app/media - ./proxy/nginx.conf:/etc/nginx/conf.d/default.conf:ro diff --git a/documentation/docs/Configuration/_category_.json b/documentation/docs/Configuration/_category_.json new file mode 100644 index 0000000..bfdff8e --- /dev/null +++ b/documentation/docs/Configuration/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Configuration ⚙️", + "position": 3, + "link": { + "type": "generated-index", + "description": "Options for AdventureLog settings." + } +} diff --git a/documentation/docs/Configuration/disable_registration.md b/documentation/docs/Configuration/disable_registration.md new file mode 100644 index 0000000..d3f79ff --- /dev/null +++ b/documentation/docs/Configuration/disable_registration.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 1 +--- + +# Disable Registration + +To disable registration, you can set the following variable in your docker-compose.yml under the server service: + +```yaml +environment: + - DISABLE_REGISTRATION=True +``` diff --git a/documentation/docs/Configuration/img/docsVersionDropdown.png b/documentation/docs/Configuration/img/docsVersionDropdown.png new file mode 100644 index 0000000..97e4164 Binary files /dev/null and b/documentation/docs/Configuration/img/docsVersionDropdown.png differ diff --git a/documentation/docs/Configuration/img/localeDropdown.png b/documentation/docs/Configuration/img/localeDropdown.png new file mode 100644 index 0000000..e257edc Binary files /dev/null and b/documentation/docs/Configuration/img/localeDropdown.png differ diff --git a/frontend/src/routes/signup/+page.server.ts b/frontend/src/routes/signup/+page.server.ts index f414139..bf49fa3 100644 --- a/frontend/src/routes/signup/+page.server.ts +++ b/frontend/src/routes/signup/+page.server.ts @@ -2,13 +2,25 @@ import { error, fail, redirect } from '@sveltejs/kit'; import type { Actions, PageServerLoad } from './$types'; const PUBLIC_SERVER_URL = process.env['PUBLIC_SERVER_URL']; +const serverEndpoint = PUBLIC_SERVER_URL || 'http://localhost:8000'; export const load: PageServerLoad = async (event) => { if (event.locals.user) { return redirect(302, '/'); } + let is_disabled = await event.fetch(`${serverEndpoint}/auth/is-registration-disabled/`); + let is_disabled_json = await is_disabled.json(); + console.log(is_disabled_json); + if (is_disabled_json.is_disabled) { + return { + is_disabled: true + }; + } else { + return { + is_disabled: false + }; + } }; - export const actions: Actions = { default: async (event) => { const formData = await event.request.formData(); diff --git a/frontend/src/routes/signup/+page.svelte b/frontend/src/routes/signup/+page.svelte index 9cca4a2..51442d1 100644 --- a/frontend/src/routes/signup/+page.svelte +++ b/frontend/src/routes/signup/+page.svelte @@ -24,75 +24,98 @@ class="min-h-screen bg-no-repeat bg-cover flex items-center justify-center" style="background-image: url('{backgroundImageUrl}')" > -
-
-

Signup

-
+ {#if !data.is_disabled} +
+
+

Signup

+
-
-
- -
- -
- -
- -
- -
-
- - {#if $page.form?.message} -
{$page.form?.message}
- {/if} -
-
- - {#if errors.message} -
- {errors.message} +
+
+ +
+ +
+ +
+ +
+ +
+
+ + {#if $page.form?.message} +
{$page.form?.message}
+ {/if} +
- {/if} -
-
- {#if quote != ''} - {quote} - {/if} - -
+ {#if errors.message} +
+ {errors.message} +
+ {/if} + +
+
+ {#if quote != ''} + {quote} + {/if} + +
+
-
+ {:else} +
+
+

Signup is disabled for this server.

+
+ + {#if errors.message} +
+ {errors.message} +
+ {/if} + +
+
+ {#if quote != ''} + {quote} + {/if} + +
+
+
+ {/if}