CTF-Manager/apps/ctf/views.py
2025-02-09 22:25:31 +01:00

64 lines
1.9 KiB
Python

from django.contrib.auth import aauthenticate, alogin
from django.shortcuts import render, redirect
from apps.ctf import forms, models
# Create your views here.
async def view_homepage(request):
return render(request, "ctf/homepage.html")
async def view_login(request):
if request.method == "POST":
form = forms.LoginForm(request.POST)
if form.is_valid():
# get the user
user = await aauthenticate(
request,
username=form.cleaned_data["username"],
password=form.cleaned_data["password"]
)
if user is not None:
await alogin(request, user)
return redirect("ctf:homepage")
else:
form = forms.LoginForm()
return render(request, "ctf/login.html", context={"form": form})
async def view_teams(request):
teams = [team async for team in models.Team.objects.all()]
return render(request, "ctf/team_list.html", context={"teams": teams})
async def view_team_create(request):
if request.method == "POST":
form = forms.TeamForm(request.POST)
if form.is_valid():
# TODO(Faraphel): additional password to prevent unwanted team creation ?
await models.Team.objects.acreate(name=form.cleaned_data["name"])
return redirect("ctf:teams")
else:
form = forms.TeamForm()
return render(request, "ctf/team_create.html", context={"form": form})
def view_flags(request):
flags = models.Flag.objects.all()
return render(request, "ctf/flag_list.html", context={"flags": flags})
async def view_flag_submit(request):
if request.method == "POST":
form = forms.FlagForm(request.POST)
if form.is_valid():
return redirect("/")
else:
form = forms.FlagForm()
return render(request, "ctf/flag_submit.html", context={"form": form})