This commit is contained in:
@ -1,10 +1,12 @@
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
from .serializers import RegisterSerializer, CustomTokenObtainPairSerializer
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework_simplejwt.views import TokenObtainPairView
|
||||
|
||||
from .serializers import RegisterSerializer, CustomTokenObtainPairSerializer
|
||||
|
||||
|
||||
class RegisterView(APIView):
|
||||
def post(self, request):
|
||||
serializer = RegisterSerializer(data=request.data)
|
||||
@ -24,21 +26,23 @@ class MeView(APIView):
|
||||
|
||||
def put(self, request):
|
||||
user = request.user
|
||||
serializer = RegisterSerializer(user, data=request.data, partial=True) # ✅ 부분 수정 허용
|
||||
serializer = RegisterSerializer(user, data=request.data, partial=True)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
return Response(serializer.data)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
|
||||
class CustomTokenObtainPairView(TokenObtainPairView):
|
||||
serializer_class = CustomTokenObtainPairSerializer
|
||||
|
||||
|
||||
|
||||
class SSHKeyUploadView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
private_key = request.data.get("private_key")
|
||||
key_name = request.data.get("key_name") # 여전히 key_name으로 받음
|
||||
key_name = request.data.get("key_name")
|
||||
|
||||
if not private_key or not key_name:
|
||||
return Response(
|
||||
@ -54,7 +58,7 @@ class SSHKeyUploadView(APIView):
|
||||
return Response({"message": "SSH key 저장 완료."})
|
||||
except Exception as e:
|
||||
return Response({"error": str(e)}, status=500)
|
||||
|
||||
|
||||
def delete(self, request):
|
||||
user = request.user
|
||||
user.encrypted_private_key = None
|
||||
@ -62,7 +66,8 @@ class SSHKeyUploadView(APIView):
|
||||
user.last_used_at = None
|
||||
user.save(update_fields=["encrypted_private_key", "encrypted_private_key_name", "last_used_at"])
|
||||
return Response({"message": "SSH key deleted."}, status=200)
|
||||
|
||||
|
||||
|
||||
class SSHKeyInfoView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
@ -72,4 +77,15 @@ class SSHKeyInfoView(APIView):
|
||||
"has_key": bool(user.encrypted_private_key),
|
||||
"encrypted_private_key_name": user.encrypted_private_key_name,
|
||||
"last_used_at": user.last_used_at
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
# ✅ 실제 암호화된 키를 반환하는 API
|
||||
class SSHKeyRetrieveView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get(self, request):
|
||||
user = request.user
|
||||
if not user.encrypted_private_key:
|
||||
return Response({"error": "SSH 키가 등록되어 있지 않습니다."}, status=404)
|
||||
return Response({"ssh_key": user.encrypted_private_key})
|
||||
|
Reference in New Issue
Block a user