Showing
9 changed files
with
314 additions
and
0 deletions
khuloud/blog/templates/base.html
0 → 100755
khuloud/blog/templates/home.html
0 → 100644
khuloud/blog/templates/layout.html
0 → 100644
| 1 | +<!DOCTYPE html> | ||
| 2 | +<html lang="en"> | ||
| 3 | +<head> | ||
| 4 | + <meta charset="utf-8"> | ||
| 5 | + <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
| 6 | + | ||
| 7 | + <title>KHUropBox</title> | ||
| 8 | + | ||
| 9 | + <script src="/static/js/app.js"></script> | ||
| 10 | + <script src="/static/js/aws-sdk.min.js"></script> | ||
| 11 | + | ||
| 12 | + <link href="/static/css/app.css" rel="stylesheet"> | ||
| 13 | + <link href="/static/css/common.css" rel="stylesheet"> | ||
| 14 | + <link href="/static/css/override.css" rel="stylesheet"> | ||
| 15 | + <link href="/static/css/layout.css" rel="stylesheet"> | ||
| 16 | + <link href="/static/css/filebrowser.css" rel="stylesheet"> | ||
| 17 | + <link href="/static/css/font-awesome.min.css" rel="stylesheet"> | ||
| 18 | + | ||
| 19 | + | ||
| 20 | +</head> | ||
| 21 | +<body> | ||
| 22 | + <div id="wrapper"> | ||
| 23 | + <div id="page-content-wrapper"> | ||
| 24 | + | ||
| 25 | + <div id="header"> | ||
| 26 | + <div id="logo"> | ||
| 27 | + <a href="/"></a> | ||
| 28 | + </div> | ||
| 29 | + </div> | ||
| 30 | + | ||
| 31 | + <div id="content"> | ||
| 32 | + {% block content %} | ||
| 33 | + {% endblock %} | ||
| 34 | + </div> | ||
| 35 | + </div> | ||
| 36 | + </div> | ||
| 37 | + | ||
| 38 | +</body> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
khuloud/blog/templates/login.html
0 → 100755
| 1 | +{% extends 'layout.html' %} | ||
| 2 | + | ||
| 3 | +{% block content %} | ||
| 4 | + | ||
| 5 | + <div class="col-md-8 col-md-offset-2"> | ||
| 6 | + <div class="panel panel-default"> | ||
| 7 | + <div class="panel-heading">로그인</div> | ||
| 8 | + <div class="panel-body"> | ||
| 9 | + <form class="form-horizontal" role="form" method="POST" action="/login/"> | ||
| 10 | + | ||
| 11 | + {% csrf_token %} | ||
| 12 | + <div class="form-group"> | ||
| 13 | + <div class="col-md-12"> | ||
| 14 | + <label for="userid">아이디</label> | ||
| 15 | + <input id="userid" type="userid" class="form-control" name="username" required autofocus> | ||
| 16 | + </div> | ||
| 17 | + </div> | ||
| 18 | + | ||
| 19 | + <div class="form-group"> | ||
| 20 | + <div class="col-md-12"> | ||
| 21 | + <label for="password">비밀번호</label> | ||
| 22 | + <input id="password" type="password" class="form-control" name="password" required> | ||
| 23 | + </div> | ||
| 24 | + </div> | ||
| 25 | + | ||
| 26 | + <div class="form-group"> | ||
| 27 | + <div class="col-md-12"> | ||
| 28 | + <button type="submit" class="btn btn-success"> | ||
| 29 | + 로그인 | ||
| 30 | + </button> | ||
| 31 | + <button class="btn btn-success" onclick="location.href='/register/';"> | ||
| 32 | + 회원가입 | ||
| 33 | + </button> | ||
| 34 | + </div> | ||
| 35 | + </div> | ||
| 36 | + | ||
| 37 | + <div class="form-group"> | ||
| 38 | + <div class="col-md-12 text-center"> | ||
| 39 | + <h5>{{ message }}</h5> | ||
| 40 | + </div> | ||
| 41 | + </div> | ||
| 42 | + | ||
| 43 | + </form> | ||
| 44 | + </div> | ||
| 45 | + </div> | ||
| 46 | + </div> | ||
| 47 | + | ||
| 48 | +{% endblock %} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
khuloud/blog/templates/main.html
0 → 100644
| 1 | +{% extends 'layout.html' %} | ||
| 2 | + | ||
| 3 | +{% block content %} | ||
| 4 | + | ||
| 5 | + <div class="col-md-8 col-md-offset-2"> | ||
| 6 | + <div class="panel panel-default"> | ||
| 7 | + <div class="panel-heading"> | ||
| 8 | + {{ request.user.username }} 님 안녕하세요. | ||
| 9 | + <button type="submit" class="btn right" onclick="location.href='/logout/';">로그아웃</button> | ||
| 10 | + </div> | ||
| 11 | + </div> | ||
| 12 | + </div> | ||
| 13 | +{% endblock %} |
khuloud/blog/templates/register.html
0 → 100755
| 1 | +{% extends 'layout.html' %} | ||
| 2 | + | ||
| 3 | +{% block content %} | ||
| 4 | + | ||
| 5 | + <div class="col-md-8 col-md-offset-2"> | ||
| 6 | + <div class="panel panel-default"> | ||
| 7 | + | ||
| 8 | + <div class="panel-body"> | ||
| 9 | + <form class="form-horizontal" role="form" method="POST" action="/register/"> | ||
| 10 | + {% csrf_token %} | ||
| 11 | + | ||
| 12 | + <div class="form-group"> | ||
| 13 | + <div class="col-md-12"> | ||
| 14 | + <label for="username"><span style="color:green;">아이디</span></label> | ||
| 15 | + <input id="username" type="text" class="form-control" name="username" required autofocus> | ||
| 16 | + </div> | ||
| 17 | + </div> | ||
| 18 | + | ||
| 19 | + <div class="form-group"> | ||
| 20 | + <div class="col-md-12"> | ||
| 21 | + <label for="email"><span style="color:green;">이메일</span><h6 style="display:inline;"> - 비밀번호 분실시 사용됩니다.</h6></label> | ||
| 22 | + <input id="email" type="email" class="form-control" name="email" required> | ||
| 23 | + </div> | ||
| 24 | + </div> | ||
| 25 | + | ||
| 26 | + <div class="form-group"> | ||
| 27 | + <div class="col-md-12"> | ||
| 28 | + <label for="password"><span style="color:green;">비밀번호</span><h6 style="display:inline;"> - 비밀번호는 8자리 이상으로 설정되어야 합니다.</h6></label> | ||
| 29 | + <input id="password" type="password" class="form-control" name="password" required> | ||
| 30 | + </div> | ||
| 31 | + </div> | ||
| 32 | + | ||
| 33 | + <div class="form-group"> | ||
| 34 | + | ||
| 35 | + <div class="col-md-12"> | ||
| 36 | + | ||
| 37 | + <label for="first_name"><span style="color:green;">성</span></label> | ||
| 38 | + | ||
| 39 | + <input id="first_name" type="first_name" class="form-control" name="first_name" required> | ||
| 40 | + | ||
| 41 | + </div> | ||
| 42 | + | ||
| 43 | + </div> | ||
| 44 | + | ||
| 45 | + <div class="form-group"> | ||
| 46 | + | ||
| 47 | + <div class="col-md-12"> | ||
| 48 | + | ||
| 49 | + <label for="last_name"><span style="color:green;">이름</span></label> | ||
| 50 | + | ||
| 51 | + <input id="last_name" type="last_name" class="form-control" name="last_name" required> | ||
| 52 | + | ||
| 53 | + </div> | ||
| 54 | + | ||
| 55 | + </div> | ||
| 56 | + | ||
| 57 | + <div class="form-group"> | ||
| 58 | + <div class="col-md-12"> | ||
| 59 | + <button type="submit" class="btn btn-success">회원가입</button> | ||
| 60 | + </div> | ||
| 61 | + </div> | ||
| 62 | + | ||
| 63 | + <div class="form-group"> | ||
| 64 | + <div class="col-md-12 text-center"> | ||
| 65 | + <h6>{{ message }}</h6> | ||
| 66 | + </div> | ||
| 67 | + </div> | ||
| 68 | + | ||
| 69 | + </form> | ||
| 70 | + </div> | ||
| 71 | + </div> | ||
| 72 | + </div> | ||
| 73 | + | ||
| 74 | +{% endblock %} |
khuloud/blog/views.py
0 → 100755
| 1 | +from django.contrib.auth.models import User | ||
| 2 | +from django.contrib.auth import authenticate | ||
| 3 | +from django.shortcuts import render, redirect | ||
| 4 | +from django.core.exceptions import PermissionDenied | ||
| 5 | +from khuloud import settings | ||
| 6 | +from khuloud import cognito | ||
| 7 | +from django.views.decorators.csrf import csrf_exempt | ||
| 8 | +import hashlib | ||
| 9 | + | ||
| 10 | +import django | ||
| 11 | + | ||
| 12 | + | ||
| 13 | +def main(request): | ||
| 14 | + if request.user.is_authenticated: | ||
| 15 | + return render(request, "main.html") | ||
| 16 | + else: | ||
| 17 | + return render(request, "login.html") | ||
| 18 | + | ||
| 19 | +def login(request): | ||
| 20 | + if request.method == "POST": | ||
| 21 | + if not all(i in request.POST for i in ('username', 'password')): | ||
| 22 | + return render(request, "login.html", { | ||
| 23 | + "message": "please enter id and passowrd" | ||
| 24 | + }) | ||
| 25 | + | ||
| 26 | + un = request.POST['username'] | ||
| 27 | + pw = request.POST['password'] | ||
| 28 | + | ||
| 29 | + user = authenticate(username=un, password=pw) | ||
| 30 | + | ||
| 31 | + if user is not None: | ||
| 32 | + auth = django.contrib.auth.login(request, user) | ||
| 33 | + | ||
| 34 | + hashcode = hashlib.md5(request.POST['password'].encode('utf-8')).hexdigest() | ||
| 35 | + | ||
| 36 | + cog = cognito.Cognito() | ||
| 37 | + cog.sign_in_admin(username=un, password=hashcode) | ||
| 38 | + | ||
| 39 | + return redirect('/main') | ||
| 40 | + else: | ||
| 41 | + return render(request, "login.html", { | ||
| 42 | + "message": "check id and password" | ||
| 43 | + }) | ||
| 44 | + else: | ||
| 45 | + return render(request, "login.html") | ||
| 46 | + | ||
| 47 | +def logout(request): | ||
| 48 | + if request.user.is_authenticated: | ||
| 49 | + django.contrib.auth.logout(request) | ||
| 50 | + return redirect("/main") | ||
| 51 | +def register(request): | ||
| 52 | + Cog = cognito.Cognito() | ||
| 53 | + if request.method == "POST": | ||
| 54 | + require_keys = ('username', 'password', 'first_name', 'last_name', 'email') | ||
| 55 | + if all(i in request.POST for i in require_keys): | ||
| 56 | + if User.objects.filter(username=request.POST['username']).count(): | ||
| 57 | + return render(request, 'register.html', { | ||
| 58 | + "message": 'alreay exist id!' | ||
| 59 | + }) | ||
| 60 | + if User.objects.filter(email=request.POST['email']).count(): | ||
| 61 | + return render(request, 'register.html', { | ||
| 62 | + "message": 'already exist email' | ||
| 63 | + }) | ||
| 64 | + | ||
| 65 | + userobj = User.objects.create_user( | ||
| 66 | + username=request.POST['username'], | ||
| 67 | + password=request.POST['password'], | ||
| 68 | + first_name=request.POST['first_name'], | ||
| 69 | + last_name=request.POST['last_name'], | ||
| 70 | + email=request.POST['email'] | ||
| 71 | + ) | ||
| 72 | + | ||
| 73 | + hashcode = hashlib.md5(request.POST['password'].encode('utf-8')).hexdigest() | ||
| 74 | + | ||
| 75 | + Cog.sign_up( | ||
| 76 | + username=request.POST['username'], | ||
| 77 | + password=hashcode, | ||
| 78 | + UserAttributes=[ | ||
| 79 | + { | ||
| 80 | + 'Name' : 'email', | ||
| 81 | + 'Value' : request.POST['email'], | ||
| 82 | + }, | ||
| 83 | + { | ||
| 84 | + 'Name' : 'family_name', | ||
| 85 | + 'Value': request.POST['first_name'], | ||
| 86 | + }, | ||
| 87 | + { | ||
| 88 | + 'Name' : 'given_name', | ||
| 89 | + 'Value': request.POST['last_name'], | ||
| 90 | + }, | ||
| 91 | + ]) | ||
| 92 | + | ||
| 93 | + Cog.confirm_sign_up(username=request.POST['username']); | ||
| 94 | + | ||
| 95 | + return redirect('/main') | ||
| 96 | + else: | ||
| 97 | + return render(request, 'register.html', { | ||
| 98 | + "message": 'erroe!' | ||
| 99 | + }) | ||
| 100 | + else: | ||
| 101 | + return render(request, 'register.html') |
khuloud/khuloud/urls.py
0 → 100644
| 1 | +"""khuloud URL Configuration | ||
| 2 | + | ||
| 3 | +The `urlpatterns` list routes URLs to views. For more information please see: | ||
| 4 | + https://docs.djangoproject.com/en/1.11/topics/http/urls/ | ||
| 5 | +Examples: | ||
| 6 | +Function views | ||
| 7 | + 1. Add an import: from my_app import views | ||
| 8 | + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') | ||
| 9 | +Class-based views | ||
| 10 | + 1. Add an import: from other_app.views import Home | ||
| 11 | + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') | ||
| 12 | +Including another URLconf | ||
| 13 | + 1. Import the include() function: from django.conf.urls import url, include | ||
| 14 | + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) | ||
| 15 | +""" | ||
| 16 | +import blog.views | ||
| 17 | +from django.contrib import admin | ||
| 18 | +from django.conf import settings | ||
| 19 | +from django.conf.urls.static import static | ||
| 20 | +from django.conf.urls import include, url | ||
| 21 | +urlpatterns = [ | ||
| 22 | + url(r'^admin/', admin.site.urls), | ||
| 23 | + url('main/',blog.views.main, name='main'), | ||
| 24 | + url(r'^login/', blog.views.login, name='login'), | ||
| 25 | + url(r'^logout/', blog.views.logout, name='logout'), | ||
| 26 | + url(r'^register/', blog.views.register, name='register'), | ||
| 27 | +]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) |
khuloud/khuloud/views.py
0 → 100644
File mode changed
-
Please register or login to post a comment