Вход в систему не работает с JSON с использованием Pyramid Cookiecutter - PullRequest
0 голосов
/ 31 октября 2018

Итак, я сделал эту страницу быстрого входа в систему с 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")
            }
        }
        );

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...