LIL-69 Add login

remotes/origin/hasaccess
Sergey G 8 years ago
parent b8478ea2c8
commit de2d95201a
  1. 5
      apps/auth/forms.py
  2. 0
      apps/auth/templates/auth/login.html
  3. 20
      apps/auth/tests/test_login.py
  4. 1
      apps/auth/urls.py
  5. 18
      apps/auth/views.py

@ -6,3 +6,8 @@ class LearnerRegistrationForm(forms.Form):
last_name = forms.CharField()
email = forms.EmailField()
password = forms.CharField()
class LoginForm(forms.Form):
email = forms.CharField()
password = forms.CharField()

@ -0,0 +1,20 @@
from django.contrib.auth import get_user_model
from django.test import TestCase, Client
from django.urls import reverse
User = get_user_model()
class LoginTest(TestCase):
def setUp(self):
self.url = reverse("lilcity:login")
self.user = User.objects.create_user(username='Alice', password='1234')
self.client = Client()
def test_login(self):
response = self.client.post(self.url, {"username": self.user.username, "password": '1234'})
self.assertTrue(response.json()['success'])
def test_should_errors_if_fail_login(self):
response = self.client.post(self.url, {"username": self.user.username, "password": 'incorrect password'})
self.assertFalse(response.json()['success'])

@ -5,4 +5,5 @@ from . import views
urlpatterns = [
path('registration/learner/', views.LearnerRegistrationView.as_view(), name="registration-learner"),
path('logout/', views.LogoutView.as_view(), name="logout"),
path('login/', views.LoginView.as_view(), name="login"),
]

@ -1,10 +1,10 @@
from django.views.generic import FormView, View
from django.contrib.auth import get_user_model, logout, login
from django.contrib.auth.forms import AuthenticationForm
from django.http import JsonResponse
from django.contrib.auth import get_user_model, logout
from django.views.generic import FormView, View
from .forms import LearnerRegistrationForm
User = get_user_model()
@ -30,3 +30,15 @@ class LogoutView(View):
def post(self, request, *args, **kwargs):
logout(request)
return JsonResponse({"success": True})
class LoginView(FormView):
form_class = AuthenticationForm
template_name = "auth/login.html"
def form_valid(self, form):
login(self.request, form.get_user())
return JsonResponse({"success": True})
def form_invalid(self, form):
return JsonResponse({"success": False, "errors": form.errors.get_json_data(escape_html=True)}, status=400)

Loading…
Cancel
Save