#models/userdb.py
import os
import psycopg2
def createTable():
if 'DYNO' in os.environ:
DATABASE_URL = os.environ['DATABASE_URL']
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
cursor = conn.cursor()
else:
conn = psycopg2.connect(
database="postgres",
user="postgres",
password="sokhavuth",
host="localhost",
port="5432"
)
cursor = conn.cursor()
SQL = '''CREATE TABLE IF NOT EXISTS USERS(
ID SERIAL PRIMARY KEY,
USERNAME TEXT,
PASSWORD TEXT,
RIGHTS TEXT,
EMAIL TEXT
)'''
cursor.execute(SQL)
cursor.execute("SELECT ID FROM USERS LIMIT 1")
result = cursor.fetchone()
conn.commit()
conn.close()
return result
def insert(*user):
if 'DYNO' in os.environ:
DATABASE_URL = os.environ['DATABASE_URL']
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
cursor = conn.cursor()
else:
conn = psycopg2.connect(
database="postgres",
user="postgres",
password="sokhavuth",
host="localhost",
port="5432"
)
cursor = conn.cursor()
cursor.execute("INSERT INTO USERS (USERNAME, PASSWORD, RIGHTS, EMAIL) VALUES %s ", (user,))
conn.commit()
conn.close()
def check(username, password):
if 'DYNO' in os.environ:
DATABASE_URL = os.environ['DATABASE_URL']
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
cursor = conn.cursor()
else:
conn = psycopg2.connect(
database="postgres",
user="postgres",
password="sokhavuth",
host="localhost",
port="5432"
)
cursor = conn.cursor()
cursor.execute("SELECT USERNAME, PASSWORD FROM USERS WHERE USERNAME = '"+ username + "' and PASSWORD = '" + password + "' LIMIT 1")
result = cursor.fetchone()
if result:
return True
else:
return False
#controllers/login.py
import config
from pytz import timezone
from datetime import datetime
from bottle import route, template, request, response, redirect
from models import userdb
def checkLogin(username, password):
if (username == 'Guest') and (password == 'password'):
return True
elif userdb.check(username,password):
return True
else:
return False
def getTimeZone():
khtz = timezone('Asia/Phnom_Penh')
date = datetime.now().astimezone(tz=khtz).strftime('%d-%m-%Y')
time = datetime.now().astimezone(tz=khtz).strftime('%H:%M')
return (date, time)
@route('/signup', method="POST")
def signup():
username = request.forms.get('fusername')
password = request.forms.get('fpassword')
rights = request.forms.get('frights')
email = request.forms.get('femail')
userdb.insert(username, password, rights, email)
redirect('/login')
@route('/login', method="POST")
def user():
username = request.forms.get('fusername')
password = request.forms.get('fpassword')
if checkLogin(username, password):
response.set_cookie("logged-in", username, secret=config.kargs['secretKey'])
redirect('/login')
@route('/login')
def login():
user = userdb.createTable()
username = request.get_cookie("logged-in", secret=config.kargs['secretKey'])
if not user:
return template('dashboard/signup', data=config.kargs)
elif username:
config.kargs['blogTitle'] = "ទំព័រគ្រប់គ្រង"
config.kargs['datetime'] = getTimeZone()
return template('dashboard/home', data=config.kargs)
else:
return template('login', data=config.kargs)
<!--views/signup.tpl-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>{{data['blogTitle']}}</title>
<link href="/static/styles/login.css" rel="stylesheet"></link>
<link href="/static/images/site_logo.png" rel="icon" ></link>
<link href="/static/fonts/setup.css" rel="stylesheet"></link>
</head>
<body>
<form id='login' action="/signup" method="POST">
<a>ឈ្មោះអ្នកប្រើប្រាស់ៈ</a> <input type="text" name='fusername' required />
<a>ពាក្យសំងាត់ៈ</a><input type="password" name="fpassword" required />
<a>តួនាទីៈ</a><input type="text" name="frights" required />
<a>Email:</a><input type="text" name="femail" required />
<a></a><input type='submit' />
</form>
</body>
</html>
GitHub: https://github.com/Sokhavuth/kwblog
Heroku: https://khmerweb-kwblog.herokuapp.com/














