from django.shortcuts import render, redirect from django.contrib.auth import authenticate from django.contrib.auth.models import User from django.contrib.auth import login as a_login, logout as a_logout from account.forms import * from django.core.urlresolvers import reverse from django.core.validators import validate_email from django.conf import settings as s from django.http import JsonResponse from home.views import homepage from django.http import HttpResponseNotFound def login(request): """ Login validation Only accessible with ajax POST from menu and return json """ form = LoginForm(request.POST or None) if request.method == "POST": if form.is_valid(): username = form.cleaned_data["username"] password = form.cleaned_data["password"] user = authenticate(username=username, password=password) if user: a_login(request, user) data = { 'login':True } else: data = { 'login':False, 'error':'Mauvais identifiant ou mot de passe' } if('HTTP_X_REQUESTED_WITH' in request.META and request.META['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'): return JsonResponse(data) else: # TODO return render(request, 'login.html', locals()) else: print(request.POST) elif request.method == "GET": # TODO # BREIZH WILL DO IT BECAUSE HE WANT IT TO WORK WITHOUT JAVASCRIPT return render(request, 'login.html') else: return HttpResponseNotFound(); def logout(request): """ Logout user with ajax POST from menu and reload page """ a_logout(request) return redirect(reverse(homepage)) def signup(request): """ Signup user with ajax POST from signup page and return json """ error = False form = InscriptionForm() if request.method == "POST": if form.is_valid(): password1 = form.cleaned_data["password1"] password2 = form.cleaned_data["password2"] username = form.cleaned_data["username"] email = form.cleaned_data["email"] cgu = form.cleaned_data["cgu"] if( s.USERNAME_MAX_LENGTH < username.length < s.USERNAME_MIN_LENGTH or s.PASSWORD_MAX_LENGTH < password.length < s.PASSWORD_MIN_LENGTH or password1 != password2 or cgu is False ): data = { signed:False, error:"Désolé ! Nous ne sommes pas assez bête pour ne pas faire de verification server side !" } return JsonResponse(data) try: validate_email(email) except forms.ValidationError: data = { signed:False, error:"Mauvais format d'e-mail" } return JsonResponse(data) create_user(username, email, password1) authenticate(username, password1) data = { signed:True } return JsonResponse(data) return render(request, 'signup.html', locals()) def account(request): return render(request, 'account.html')