87 lines
2.0 KiB
Python
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")
|