Итак, я сделал эту страницу быстрого входа в систему с Pyramid в качестве фреймворка и, используя JSON, регистр работает нормально и добавляет введенные данные в базу данных MongoDB, но вход в систему не работает, всегда недействителен, хотя остальное в цикле всегда работает. логин не читает базу данных
views.py
from pyramid.view import view_config
import RPi.GPIO as GPIO
import os
from .models import *
from bson import ObjectId
from pyramid.httpexceptions import HTTPFound
import sys
from mongoengine import *
GPIO.setmode(GPIO.BOARD)
GPIO.setup(10, GPIO.OUT)
@view_config(route_name='home', renderer='templates/mytemplate.jinja2')
def my_view(request):
if 'switch' in request.params:
raise SystemExit
if 'blink' in request.params:
os.system("python3 /home/pi/Desktop/pi-drowsiness-detection/pi_detect_drowsiness.py -c haarcascade_frontalface_default.xml -p shape_predictor_68_face_landmarks.dat")
if 'register-now' in request.params:
print("REGISTER")
firstname = request.params['fname']
lastname = request.params['lname']
username = request.params['username']
password = request.params['password']
if AppUsers.objects(username=username).first():
return{"error": "USERNAME ALREADY EXISTS"}
x = AppUsers(firstname=firstname,lastname=lastname,username=username,password=password)
x.save()
return {'project': 'web-app-namin'}
@view_config(route_name='register', renderer='templates/register.jinja2')
def register(request):
if 'switch' in request.params:
location.assign('register')
if 'blink' in request.params:
os.system("python3 /home/pi/Desktop/pi-drowsiness-detection/pi_detect_drowsiness.py -c haarcascade_frontalface_default.xml -p shape_predictor_68_face_landmarks.dat")
if 'register-now' in request.params:
print("REGISTER")
firstname = request.params['fname']
lastname = request.params['lname']
username = request.params['username']
password = request.params['password']
if AppUsers.objects(username=username).first():
return{"error": "USERNAME ALREADY EXISTS"}
x = AppUsers(firstname=firstname,lastname=lastname,username=username,password=password)
x.save()
return {'project': 'web-app-namin'}
def app_users(request):
finame=str(request.POST.get('firstname'))
laname=str(request.POST.get('lastname'))
uname=str(request.POST.get('username'))
if AppUsers.objects(username=uname).first():
return{"error": "USERNAME ALREADY EXISTS"}
x=AppUsers(firstname=finame,lastname=laname,username=uname)
x.save()
return{"response": "DATA ADDED"}
@view_config(route_name='login', renderer='json')
def login(request):
uname=str(request.POST.get('username'))
pword=str(request.POST.get('password'))
hash_pword=hashlib.md5()
hash_pword.update(pword.encode('ascii'))
pword=hash_pword.hexdigest()
is_valid=Admin.objects(username=uname, password=pword).first()
if is_valid:
request.session['app_users']=is_valid.username
return{"response": True}
return{"response": False}
models.py
from mongoengine import *
from datetime import datetime
import hashlib
#connect to a mongodb database
connect('database_namin')
'''hashes a string using md5 hashing algorithm
returns a 32 character-length hashed string'''
def hash_mo_to(raw_string):
hasher=hashlib.md5()
hasher.update(raw_string.encode('ascii'))
return str(hasher.hexdigest())
#default admin credentials for the system
class Admin(DynamicDocument):
username=StringField(default='admin')
password=StringField(default=hash_mo_to('admin'))
#schema for mobile application users set by the admin...
class AppUsers(DynamicDocument):
firstname=StringField()
lastname=StringField()
username=StringField()
password=StringField(default=hash_mo_to("1234"))
app.js
var user_id;
$(document).ready(function()
{
$("#login_btn").click(function()
{
login();
});
});
//DITO YUNG LOGIN FUNCTIONALITY
function login()
{
$.post(
'login',
{
username: $("#username").val(),
password: $("#password").val()
},
function(data, status)
{
if(data.response)
{
location.assign('register')
}
else{
$("#login_response").html("Invalid Username or Password")
}
}
);
}