63 lines
2.3 KiB
Python
Executable File
63 lines
2.3 KiB
Python
Executable File
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}) |