from django.shortcuts import render, redirect from django.urls import reverse from accounts.forms import * import json from django.core.exceptions import ValidationError from django.core.validators import validate_email from django.contrib.auth.hashers import make_password from django.contrib.auth import logout,login,authenticate from django.http import HttpResponseRedirect, HttpResponse, JsonResponse from django.conf import settings from custom_user.models import User def create_session(request, username): print("logging in") print(username) user=User.objects.get(email=username) login(request, user) return HttpResponseRedirect(reverse('index')) def logout_view(request): logout(request) return redirect(reverse('accounts:sign_in')) def sign_in(request): if request.method == 'POST': form = LoginForm(request, data=request.POST) context={'form':form, 'invalid': True} if form.is_valid(): username=form.cleaned_data.get('username') password=form.cleaned_data.get('password') user=authenticate(username=username,password=password) if user: return create_session(request,user.email) else: print(f"form is invalid, {form.errors}") return render(request, 'sign-in.html', {'form': LoginForm}) def sign_up(request): if request.user.is_authenticated: return redirect(reverse('index')) return render(request, 'sign-up.html', {'form': LoginForm}) def user_sign_up(request): if request.method == 'POST': data = json.loads(request.POST.get('data', '')) try: validate_email(data['email']) except ValidationError as e: print("bad email, details:", e) message = 'Email Validation error' messageTitle = 'Error!' messageStatus = 'text-bg-danger' response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus}) return response password = make_password(data['password']) user = User.objects.create(email = data['email'], password=password) login(request, user) return JsonResponse({'no_errors':True}) else: return render(request, 'sign-up.html', {'form': LoginForm})