1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-19 04:49:37 +02:00

better signup disable

This commit is contained in:
Sean Morley 2024-08-16 12:21:43 -04:00
parent 80883202bc
commit 9f574c8505
9 changed files with 138 additions and 69 deletions

View file

@ -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(

View file

@ -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)
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)

View file

@ -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

View file

@ -0,0 +1,8 @@
{
"label": "Configuration ⚙️",
"position": 3,
"link": {
"type": "generated-index",
"description": "Options for AdventureLog settings."
}
}

View file

@ -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
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -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();

View file

@ -24,75 +24,98 @@
class="min-h-screen bg-no-repeat bg-cover flex items-center justify-center"
style="background-image: url('{backgroundImageUrl}')"
>
<div class="card card-compact w-96 bg-base-100 shadow-xl p-6 mt-4 mb-4">
<article class="text-center text-4xl font-extrabold">
<h1>Signup</h1>
</article>
{#if !data.is_disabled}
<div class="card card-compact w-96 bg-base-100 shadow-xl p-6 mt-4 mb-4">
<article class="text-center text-4xl font-extrabold">
<h1>Signup</h1>
</article>
<div class="flex justify-center">
<form method="post" use:enhance class="w-full max-w-xs">
<label for="username">Username</label>
<input
name="username"
id="username"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="first_name">Email</label>
<input
name="email"
id="email"
type="email"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="first_name">First Name</label>
<input
name="first_name"
id="first_name"
type="text"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="first_name">Last Name</label>
<input
name="last_name"
id="last_name"
type="text"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="password">Password</label>
<input
type="password"
name="password1"
id="password1"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br /><label for="password">Confirm Password</label>
<input
type="password"
name="password2"
id="password2"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<button class="py-2 px-4 btn btn-primary">Signup</button>
{#if $page.form?.message}
<div class="text-center text-error mt-4">{$page.form?.message}</div>
{/if}
</form>
</div>
{#if errors.message}
<div class="text-center text-error mt-4">
{errors.message}
<div class="flex justify-center">
<form method="post" use:enhance class="w-full max-w-xs">
<label for="username">Username</label>
<input
name="username"
id="username"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="first_name">Email</label>
<input
name="email"
id="email"
type="email"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="first_name">First Name</label>
<input
name="first_name"
id="first_name"
type="text"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="first_name">Last Name</label>
<input
name="last_name"
id="last_name"
type="text"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="password">Password</label>
<input
type="password"
name="password1"
id="password1"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br /><label for="password">Confirm Password</label>
<input
type="password"
name="password2"
id="password2"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<button class="py-2 px-4 btn btn-primary">Signup</button>
{#if $page.form?.message}
<div class="text-center text-error mt-4">{$page.form?.message}</div>
{/if}
</form>
</div>
{/if}
<div class="flex justify-center mt-12 mr-25 ml-25">
<blockquote class="w-80 text-center text-lg break-words">
{#if quote != ''}
{quote}
{/if}
<!-- <footer class="text-sm">- Steve Jobs</footer> -->
</blockquote>
{#if errors.message}
<div class="text-center text-error mt-4">
{errors.message}
</div>
{/if}
<div class="flex justify-center mt-12 mr-25 ml-25">
<blockquote class="w-80 text-center text-lg break-words">
{#if quote != ''}
{quote}
{/if}
<!-- <footer class="text-sm">- Steve Jobs</footer> -->
</blockquote>
</div>
</div>
</div>
{:else}
<div class="card card-compact w-96 bg-base-100 shadow-xl p-6 mt-4 mb-4">
<article class="text-center text-4xl font-extrabold">
<h1>Signup is disabled for this server.</h1>
</article>
{#if errors.message}
<div class="text-center text-error mt-4">
{errors.message}
</div>
{/if}
<div class="flex justify-center mt-12 mr-25 ml-25">
<blockquote class="w-80 text-center text-lg break-words">
{#if quote != ''}
{quote}
{/if}
<!-- <footer class="text-sm">- Steve Jobs</footer> -->
</blockquote>
</div>
</div>
{/if}
</div>
<svelte:head>