user.py 2.17 KB
import time
import hashlib
from flask import Blueprint, redirect, render_template, request, Flask, session

from utils.query import query
from utils.errorResponse import errorResponse

ub = Blueprint('user',
               __name__,
               url_prefix='/user',
               template_folder='templates')


@ub.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login_and_register.html')
    else:

        def filter_fn(user):
            hash_with_salt = hashlib.sha256('XiaoXueQi2024'.encode('utf-8'))
            hash_with_salt.update(request.form['password'].encode('utf-8'))
            return request.form[
                'username'] in user and hash_with_salt.hexdigest() in user

        users = query('select * from user', [], 'select')
        login_success = list(filter(filter_fn, users))
        if not len(login_success): return errorResponse('账号或密码错误')

        session['username'] = request.form['username']
        return redirect('/page/home')


@ub.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'GET':
        return render_template('login_and_register.html')
    else:

        def filter_fn(user):
            return request.form['username'] in user

        users = query('select * from user', [], 'select')
        filter_list = list(filter(filter_fn, users))
        if len(filter_list):
            return errorResponse('该用户名已被注册')
        else:
            time_tuple = time.localtime(time.time())
            hash_with_salt = hashlib.sha256('XiaoXueQi2024'.encode('utf-8'))
            hash_with_salt.update(request.form['password'].encode('utf-8'))
            query(
                '''
                insert into user(username,password,createTime) values(%s,%s,%s)
            ''', [
                    request.form['username'],
                    hash_with_salt.hexdigest(),
                    str(time_tuple[0]) + '-' + str(time_tuple[1]) + '-' +
                    str(time_tuple[2])
                ])

        return redirect('/user/login')


@ub.route('/logOut')
def logOut():
    session.clear()
    return redirect('/user/login')