kdxcxs
4 years ago
commit
0d2fcdb067
3 changed files with 80 additions and 0 deletions
@ -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() |
@ -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 |
@ -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…
Reference in new issue