views.py 4.54 KB
from django.contrib.auth.models import User
from django.contrib.auth import authenticate
from django.shortcuts import render, redirect
from django.core.exceptions import PermissionDenied
from khuloud import settings
from blog import cognito
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
from rest_framework.response import Response 
from rest_framework import status
from cloud import views
import hashlib
import json
import django
import requests
@csrf_exempt
def main(request):
    if request.user.is_authenticated:
        return render(request, "main.html")
    else:
        return render(request, "login.html")
@csrf_exempt
def login(request):
    if request.user.is_authenticated:
        raise PermissionDenied
    else:
        if request.method == "POST":
            data=request.POST
            if not all(i in data for i in ('username', 'password')):
                return render(request, "login.html", {
                    "message": "아이디와 비밀번호를 입력해 주세요"
                })
            un = data['username']
            pw = data['password']
            user = authenticate(username=un, password=pw)
            if user is not None:
                auth = django.contrib.auth.login(request, user)
                hashcode = hashlib.md5(request.POST['password'].encode('utf-8')).hexdigest()
                cog = cognito.Cognito()
                cog.sign_in_admin(username=un, password=hashcode)
                return JsonResponse({'user':{
				     'username' :un,
				     'password' :pw,
                                     }}, safe=False)
            else:
                return render(request, "login.html", {
                    "message": "아이디와 비밀번호를 확인해 주세요"
                })

        else:

            return render(request, "login.html")
def logout(request):
    if request.user.is_authenticated:
        django.contrib.auth.logout(request)
    return redirect("/main")

def register(request):
    Cog = cognito.Cognito()
    reg=views.FileView()
    if request.user.is_authenticated: raise PermissionDenied
    if request.method == "POST":
        require_keys = ('username', 'password', 'first_name', 'last_name', 'email')
        if all(i in request.POST for i in require_keys):
            if User.objects.filter(username=request.POST['username']).count():
                return render(request, 'register.html', {
                    "message": 'alreadt exist username!'
                })
            if User.objects.filter(email=request.POST['email']).count():
                return render(request, 'register.html', {
                    "message": 'alreadt exist email!'
                })
            userobj = User.objects.create_user(
                username=request.POST['username'],
                password=request.POST['password'],
                first_name=request.POST['first_name'],
                last_name=request.POST['last_name'],
                email=request.POST['email']
            )
            hashcode = hashlib.md5(request.POST['password'].encode('utf-8')).hexdigest()
            Cog.sign_up(
                        username=request.POST['username'],
                        password=hashcode,
                        UserAttributes=[
                            {
                                'Name' : 'email',
                                'Value' : request.POST['email'],
                            },
                            {
                                'Name' : 'family_name',
                                'Value': request.POST['first_name'],
                            },
                            {
                                'Name' : 'given_name',
                                'Value': request.POST['last_name'],
                            },
                        ])
            Cog.confirm_sign_up(username=request.POST['username']);
            print(reg.create_bucket(request))
            return redirect('/main')
        else:
            return render(request, 'register.html', {
                "message": 'error.'
            })
    else:
        return render(request, 'register.html')

def delete(request):

    if request.user.is_authenticated:

        if request.method == 'POST':

            request.user.delete()

        return redirect('/main')
    else:
        return rendet(request,'delete.html',{
            "message": 'login required!'
        })
    return render(request, 'delete.html')