K356/k356/users/views.py

87 lines
2.0 KiB
Python

from django.contrib.auth import logout
from django.contrib.auth.decorators import login_required
from django.http import JsonResponse
from django.shortcuts import redirect
from django.utils.translation import gettext as _
import json
@login_required
def k356_validate(request):
us = request.user.setting
if request.method == "POST":
try:
fingerprint = json.loads(request.body)["fingerprint"]
except Exception as e:
return JsonResponse(
{
"ok": False,
"error": str(e),
}
)
if us.k356_key_fingerprint:
if us.k356_key_fingerprint != fingerprint:
return JsonResponse(
{
"ok": False,
"error": _("Unable to verify key."),
}
)
else:
us.k356_key = True
us.k356_key_fingerprint = fingerprint
us.save()
return JsonResponse(
{
"ok": True,
}
)
return JsonResponse(
{
"key": us.k356_key,
"fingerprint": us.k356_key_fingerprint,
}
)
@login_required
def keys(request):
us = request.user.setting
if request.method == "POST":
try:
data = json.loads(request.body)
except Exception:
return JsonResponse({"error": "INVALID_DATA"}, status=401)
if us.private_key and not request.GET("force", "false") == "true":
return JsonResponse({"error": "KEY_EXISTS"}, status=401)
us.private_key = data.get("privateKey", None)
us.public_key = data.get("publicKey", None)
us.save()
return JsonResponse(
{
"privateKey": us.private_key,
"publicKey": us.public_key,
}
)
@login_required
def ulogout(request):
logout(request)
return redirect("main:home")