|
|
|
from django.shortcuts import render, redirect,HttpResponse
|
|
|
|
from django.contrib.auth import login, logout, authenticate
|
|
|
|
from django.contrib.auth.tokens import default_token_generator
|
|
|
|
from django.utils.http import urlsafe_base64_decode
|
|
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from django.contrib import messages
|
|
|
|
from .models import User
|
|
|
|
from .forms import UserRegistrationForm, UserLoginForm
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger('main')
|
|
|
|
def home(request):
|
|
|
|
return render(request,"main/home.html")
|
|
|
|
|
|
|
|
|
|
|
|
def register(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
form = UserRegistrationForm(request.POST)
|
|
|
|
if form.is_valid():
|
|
|
|
user = form.save(commit=False)
|
|
|
|
user.set_password(form.cleaned_data['password'])
|
|
|
|
user.save()
|
|
|
|
|
|
|
|
try:
|
|
|
|
user.send_verification_email()
|
|
|
|
messages.success(request, 'Registration successful! Please check your email to activate your account.')
|
|
|
|
except Exception as e:
|
|
|
|
logger.error(f"Error sending verification email: {e}")
|
|
|
|
messages.error(request, 'Error sending verification email. Please try again later.')
|
|
|
|
|
|
|
|
return redirect('login')
|
|
|
|
else:
|
|
|
|
form = UserRegistrationForm()
|
|
|
|
return render(request, 'main/register.html', {'form': form})
|
|
|
|
|
|
|
|
def activate_account(request, uidb64, token):
|
|
|
|
try:
|
|
|
|
uid = urlsafe_base64_decode(uidb64).decode()
|
|
|
|
user = User.objects.get(pk=uid)
|
|
|
|
except (TypeError, ValueError, OverflowError, User.DoesNotExist):
|
|
|
|
user = None
|
|
|
|
|
|
|
|
if user is not None and default_token_generator.check_token(user, token):
|
|
|
|
user.is_active = True
|
|
|
|
user.save()
|
|
|
|
messages.success(request, 'Your account has been activated. You can now log in.')
|
|
|
|
return redirect('login')
|
|
|
|
else:
|
|
|
|
messages.error(request, 'Invalid activation link.')
|
|
|
|
return redirect('register')
|
|
|
|
|
|
|
|
def user_login(request):
|
|
|
|
print(request.user.is_authenticated)
|
|
|
|
if request.user.is_authenticated:
|
|
|
|
return redirect('home')
|
|
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
email = request.POST['email']
|
|
|
|
password = request.POST['password']
|
|
|
|
user = authenticate(request, email = email, password = password)
|
|
|
|
if user is not None:
|
|
|
|
form = login(request, user)
|
|
|
|
messages.success(request, f' welcome {user} !!')
|
|
|
|
return redirect('home')
|
|
|
|
else:
|
|
|
|
messages.info(request, f'account done not exit plz sign in')
|
|
|
|
|
|
|
|
messages.info(request, f'You are Already Logged in as {request.user}')
|
|
|
|
return render(request, 'main/login.html', {'title':'log in'})
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
def user_logout(request):
|
|
|
|
logout(request)
|
|
|
|
messages.success(request, 'You have been logged out.')
|
|
|
|
return redirect('login')
|
|
|
|
|
|
|
|
# def verify_email(request, uidb64, token):
|
|
|
|
# # This view is redundant if it does the same as activate_account
|
|
|
|
# # Consider removing or assigning a different purpose
|
|
|
|
# pass
|