from django.shortcuts import render, redirect from .forms import CustomUserCreationForm, CustomUserChangeForm from django.contrib.auth import login, authenticate from django.contrib import messages from django.contrib.auth.decorators import login_required from django.contrib.auth import update_session_auth_hash from django.shortcuts import render, redirect from .forms import SSHKeyForm @login_required def edit_profile_view(request): if request.method == "POST": form = CustomUserChangeForm(request.POST, instance=request.user) if form.is_valid(): user = form.save() # 세션 인증 유지 update_session_auth_hash(request, user) messages.success(request, "프로필이 성공적으로 업데이트되었습니다.") return redirect("/") # 리다이렉트할 URL else: form = CustomUserChangeForm(instance=request.user) return render(request, "custom_auth/edit_profile.html", {"form": form}) def signup_view(request): if request.method == "POST": form = CustomUserCreationForm(request.POST) if form.is_valid(): user = form.save() # 로그인 처리 (선택적) # login(request, user) return redirect("/") # return redirect('custom_auth:login') else: form = CustomUserCreationForm() return render(request, "custom_auth/signup.html", {"form": form}) def login_view(request): if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect("/") # 원하는 URL로 리다이렉트 (여기서는 'home'으로 설정) else: messages.error(request, "Invalid username or password.") return redirect("/") # 로그인 실패 시 루트 URL로 리다이렉트 return render(request, "custom_auth/login.html") @login_required # def upload_ssh_key(request): # """SSH Private Key 업로드 뷰""" # user = request.user # if request.method == 'POST': # form = SSHKeyForm(request.POST, instance=user) # if form.is_valid(): # form.save() # return redirect('custom_auth:upload_ssh_key') # 성공 시 동일 페이지 리다이렉트 # else: # form = SSHKeyForm(instance=user) # return render(request, 'custom_auth/upload_ssh_key.html', {'form': form}) # @login_required def upload_ssh_key(request): """SSH Private Key 업로드 및 복호화 표시 뷰""" user = request.user decrypted_key = "" # 기본 값 # POST 요청 처리 if request.method == 'POST': form = SSHKeyForm(request.POST, instance=user) if form.is_valid(): form.save() return redirect('custom_auth:upload_ssh_key') # 성공 시 리다이렉트 else: form = SSHKeyForm(instance=user) # 복호화된 SSH Key 가져오기 if user.encrypted_private_key: try: decrypted_key = user.decrypt_private_key() except Exception as e: decrypted_key = f"복호화 오류: {str(e)}" # 템플릿으로 데이터 전달 return render(request, 'custom_auth/upload_ssh_key.html', { 'form': form, 'decrypted_key': decrypted_key })