Browse Source

Init commit

master
kdxcxs 4 years ago
commit
0d2fcdb067
  1. 39
      app.py
  2. 20
      dao.py
  3. 21
      sr_jwt.py

39
app.py

@ -0,0 +1,39 @@
from flask import Flask, request, make_response
import json
import dao
import sr_jwt as jwt
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
cookie_jwt = request.cookies.get('jwt')
if cookie_jwt is not None:
if jwt.check_jwt(cookie_jwt):
return make_response(json.dumps({'result': 'success'}))
rdata = json.loads(request.data.decode()) # request data
username = rdata['username']
password = rdata['password']
if dao.valid(username, password):
return make_response(json.dumps({'result': 'success'})).set_cookie('jwt', jwt.generate_jwt(username))
else:
return make_response(json.dumps({'result': 'fail'}))
@app.route('/register', methods=['POST'])
def register():
cookie_jwt = request.cookies.get('jwt')
rdata = json.loads(request.data.decode()) # request data
username = rdata['username']
program_type = rdata['program_type']
program_name = rdata['program_name']
if cookie_jwt is not None:
if jwt.check_jwt(cookie_jwt):
if dao.register(username, program_type, program_name):
return make_response(json.dumps({'result': 'success'}))
return make_response(json.dumps({'result': 'fail'}))
if __name__ == '__main__':
app.run()

20
dao.py

@ -0,0 +1,20 @@
import sqlite3
def valid(username, password):
db_connection = sqlite3.connect('sports-registration.sqlite')
base_cursor = db_connection.cursor()
password_cursor = base_cursor.execute(f'SELECT password FROM user WHERE username=="{username}";')
db_password = password_cursor.fetchone()
if len(db_password != 1):
return False
if db_password[0] == password:
return True
def register(username, program_type, program_name):
db_connection = sqlite3.connect('sports-registration.sqlite')
base_cursor = db_connection.cursor()
base_cursor.execute(f'INSERT INTO list (username, program_type, program_name) '
f'VALUES ("{username}", "{program_type}", "{program_name}")')
return True

21
sr_jwt.py

@ -0,0 +1,21 @@
import jwt
def generate_jwt(username):
# https://www.jianshu.com/p/03ad32c1586c
headers = {
"alg": "HS256",
"typ": "JWT"
}
salt = "acvv"
payload = {
"name": username
}
token = jwt.encode(payload=payload, key=salt, algorithm='HS256', headers=headers).decode('utf-8')
return jwt
def check_jwt(cookie_jwt):
salt = "acvv"
info = jwt.decode(cookie_jwt, salt, True, algorithm='HS256')
return info['name']
Loading…
Cancel
Save