នៅក្នុងសាស្ត្រា Bottle.py បណ្តាទិន្នន័យដែលត្រូវបានបញ្ជូនមកកាន់ server ត្រូវបានចំលងយកនិងកត់ត្រាទុកនៅក្នុងសំណុំទិន្នន័យឈ្មោះ forms នៅក្នុងវត្ថុដែលជា request ។ អាស្រ័យហេតុនេះ យើងអាចស្រង់យកទិន្នន័យពីក្នុងសំណុំទិន្នន័យឈ្មោះ forms នេះបានដោយធ្វើដូចខាងក្រោមនេះ៖
#routes/frontend/login.py
from bottle import Bottle, redirect
from controllers.frontend.login import checkLogged
app = Bottle()
@app.route('/')
def index():
if checkLogged.call():
redirect('/admin/post')
else:
from controllers.frontend.login import get
return get.call()
@app.route('/', method="post")
def checkUser():
from controllers.frontend.login import checkUser
return checkUser.call()
@app.route('/logout')
def logout():
from controllers.frontend.login import logout
return logout.call()
#controllers/frontend/login/checkUser.py
import config, bcrypt
from copy import deepcopy
from bottle import template, request, response, redirect
from models.userdb import checkUserDB
def call():
kdict = deepcopy(config.kdict)
kdict['pageTitle'] = 'ទំព័រចុះឈ្មោះ'
password = request.forms.getunicode('password')
email = request.forms.getunicode('email')
user = checkUserDB.call(email)
if user:
if(bcrypt.checkpw(password.encode('utf-8'), user['password'])):
kdict["siteLogo"] = 'ទំព័រការផ្សាយ'
response.set_cookie('userID', user['userID'], path='/', secret=kdict['SECRET_KEY'])
response.set_cookie('userRole', user['role'], path='/', secret=kdict['SECRET_KEY'])
return redirect('/admin/post')
else:
kdict['message'] = 'ពាក្យសំងាត់របស់អ្នកមិនត្រឹមត្រូវទេ!'
return template('frontend/login', data=kdict)
else:
kdict['message'] = 'Email របស់អ្នកមិនត្រឹមត្រូវទេ!'
return template('frontend/login', data=kdict)
#models/userdb/checkUserDB.py
import setConnection, pymongo, config
def call(email):
myclient = pymongo.MongoClient(config.kdict['MONGODB_URI'])
mydb = myclient["multimedia"]
mycol = mydb["users"]
myquery = {'email':email}
user = mycol.find_one(myquery)
return user