CVoipPanel/Dashboard/views.py
2025-06-21 13:00:27 +05:30

68 lines
2.6 KiB
Python

from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None and user.is_superuser:
login(request, user)
return redirect('dashboard')
else:
return render(request, 'Dashboard/login.html', {'error': 'Only superusers can log in.' if user is not None else 'Invalid credentials.'})
return render(request, 'Dashboard/login.html')
@login_required
def dashboard(request):
users = User.objects.all()
return render(request, 'Dashboard/dashboard.html', {'users': users})
@login_required
def add_user(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
confirm_password = request.POST['confirm_password']
email = request.POST['email']
if password != confirm_password:
return render(request, 'Dashboard/add_user.html', {
'error': 'Passwords do not match.'
})
User.objects.create_user(username=username, password=password, email=email)
return redirect('dashboard')
return render(request, 'Dashboard/add_user.html')
@login_required
def edit_user(request, user_id):
user = get_object_or_404(User, id=user_id)
if request.method == 'POST':
user.username = request.POST['username']
user.email = request.POST['email']
password = request.POST['password']
confirm_password = request.POST['confirm_password']
if (password is not None or confirm_password is not None) and (password == confirm_password):
user.set_password(request.POST['password'])
elif (password is not None or confirm_password is not None) and (password != confirm_password):
return render(request, 'Dashboard/edit_user.html', {
'error': 'Passwords do not match.'
})
user.save()
return redirect('dashboard')
return render(request, 'Dashboard/edit_user.html', {'user': user})
@login_required
def delete_user(request, user_id):
user = get_object_or_404(User, id=user_id)
user.delete()
return redirect('dashboard')
def logout_view(request):
logout(request)
return redirect('login')