diff --git a/Website/skoolos/settings.py b/Website/skoolos/settings.py index c312991..4912bfc 100644 --- a/Website/skoolos/settings.py +++ b/Website/skoolos/settings.py @@ -41,6 +41,7 @@ INSTALLED_APPS = [ 'rest_framework', 'api', 'crispy_forms', + 'django_forms_bootstrap', ] diff --git a/Website/skoolos/urls.py b/Website/skoolos/urls.py index 6a5d5ac..0d2bd2a 100644 --- a/Website/skoolos/urls.py +++ b/Website/skoolos/urls.py @@ -14,6 +14,9 @@ router.register(r'classes', api_views.ClassesViewSet) # router.register(r'files', api_views.DefFilesViewSet) router.register(r'users', api_views.UserViewSet) +from users import views as user_views +from users.forms import LoginForm + # Wire up our API using automatic URL routing. # Additionally, we include login URLs for the browsable API. urlpatterns = [ @@ -21,7 +24,7 @@ urlpatterns = [ path('api/', include(router.urls)), path('api-auth/', include('rest_framework.urls')), path('admin/', admin.site.urls), - path('login/', auth_views.LoginView.as_view(template_name="users/login.html"), name='login'), + path('login/', auth_views.LoginView.as_view(template_name='users/login.html', authentication_form=LoginForm), name='login'), path('register/', user_views.register, name='register'), path('create_account/', user_views.create_account, name='create_account'), path('callback/', user_views.callback, name='callback'), diff --git a/Website/users/forms.py b/Website/users/forms.py index 956b95d..ffcaa81 100644 --- a/Website/users/forms.py +++ b/Website/users/forms.py @@ -1,19 +1,37 @@ from django import forms from django.contrib.auth.models import User +from django.contrib.auth.forms import AuthenticationForm +from django.db.models import Q + + +class LoginForm(AuthenticationForm): + username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Username'})) + password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder':'Password'})) class UserCreationForm(forms.ModelForm): - username = forms.CharField(disabled=True) - email = forms.EmailField(disabled=True) - first_name = forms.CharField(disabled=True) - last_name = forms.CharField(disabled=True) - password = forms.PasswordInput() - confirm_password = forms.PasswordInput() - + username = forms.CharField() + email = forms.EmailField() + first_name = forms.CharField() + last_name = forms.CharField() + isStudent = forms.BooleanField(widget = forms.HiddenInput()) + password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password'})) + confirm_password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Confirm Password'})) + token = forms.CharField(widget = forms.HiddenInput()) def __init__(self, *args, **kwargs): super(UserCreationForm, self).__init__(*args, **kwargs) + def clean(self): + cleaned_data = super(UserCreationForm, self).clean() + password = cleaned_data.get("password") + confirm_password = cleaned_data.get("confirm_password") + + if password != confirm_password: + raise forms.ValidationError("Passwords do not match!") + + return cleaned_data + class Meta: model = User - fields = ['username', 'email', 'first_name', 'password', 'confirm_password'] + fields = ('username', 'email', 'first_name', 'last_name', 'password') diff --git a/Website/users/models.py b/Website/users/models.py index bed1e0f..29b216c 100644 --- a/Website/users/models.py +++ b/Website/users/models.py @@ -18,4 +18,4 @@ class Token(models.Model): return super(Token, self).save(*args, **kwargs) def __str__(self): - return f"{self.username}'s Token"; + return self.token; diff --git a/Website/users/templates/users/create_account.html b/Website/users/templates/users/create_account.html new file mode 100644 index 0000000..f3f814d --- /dev/null +++ b/Website/users/templates/users/create_account.html @@ -0,0 +1,22 @@ +{% extends "users/base.html" %} +{% load bootstrap_tags %} + +{% block content %} +