diff options
author | Andrew Godwin | 2022-11-18 00:09:04 -0700 |
---|---|---|
committer | Andrew Godwin | 2022-11-18 00:09:04 -0700 |
commit | 1b44a253316a84f40070264ea8134c86d1223441 (patch) | |
tree | 2caa56d54a8e81f14649b826f9f3ef5a7c1326ae /users/views/auth.py | |
parent | b3072c81ba73a16381366960841b6c294cc1fa6e (diff) | |
download | takahe-1b44a253316a84f40070264ea8134c86d1223441.tar.gz takahe-1b44a253316a84f40070264ea8134c86d1223441.tar.bz2 takahe-1b44a253316a84f40070264ea8134c86d1223441.zip |
Signup and invite tweaks
Diffstat (limited to 'users/views/auth.py')
-rw-r--r-- | users/views/auth.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/users/views/auth.py b/users/views/auth.py index 7f51d45..a04b1b1 100644 --- a/users/views/auth.py +++ b/users/views/auth.py @@ -4,7 +4,8 @@ from django.contrib.auth.views import LoginView, LogoutView from django.shortcuts import get_object_or_404, render from django.views.generic import FormView -from users.models import PasswordReset, User +from core.models import Config +from users.models import Invite, PasswordReset, User class Login(LoginView): @@ -26,6 +27,13 @@ class Signup(FormView): help_text="We will send a link to this email to set your password and create your account", ) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if Config.system.signup_invite_only: + self.fields["invite_code"] = forms.CharField( + help_text="Your invite code from one of our admins" + ) + def clean_email(self): email = self.cleaned_data.get("email").lower() if not email: @@ -34,9 +42,17 @@ class Signup(FormView): raise forms.ValidationError("This email already has an account") return email + def clean_invite_code(self): + invite_code = self.cleaned_data["invite_code"].lower().strip() + if not Invite.objects.filter(token=invite_code).exists(): + raise forms.ValidationError("That is not a valid invite code") + return invite_code + def form_valid(self, form): user = User.objects.create(email=form.cleaned_data["email"]) PasswordReset.create_for_user(user) + if "invite_code" in form.cleaned_data: + Invite.objects.filter(token=form.cleaned_data["invite_code"]).delete() return render( self.request, "auth/signup_success.html", |