diff --git a/Lab2/__pycache__/database_helper.cpython-310.pyc b/Lab2/__pycache__/database_helper.cpython-310.pyc index 3ebbc7beb6dff05b871c1ac6c6b345a31a21ff7e..adb1fc481d008e3961a353b6de73c0183b481ad2 100644 Binary files a/Lab2/__pycache__/database_helper.cpython-310.pyc and b/Lab2/__pycache__/database_helper.cpython-310.pyc differ diff --git a/Lab2/__pycache__/server.cpython-310.pyc b/Lab2/__pycache__/server.cpython-310.pyc index d9221492281ddef57ac6629235aaeb7ff1bc2918..6c064d338417cf4b6e71c129cd25d4444cad19d5 100644 Binary files a/Lab2/__pycache__/server.cpython-310.pyc and b/Lab2/__pycache__/server.cpython-310.pyc differ diff --git a/Lab2/database.db b/Lab2/database.db index df5370f416fc0b03b3b7453c4ffa0a2129de1920..54ebaacbed664a2c1e4e273e1e464e8ab799fc61 100644 Binary files a/Lab2/database.db and b/Lab2/database.db differ diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py index c6047fc703ff7de4b3df1ed319a64b8e5830affb..9c812170bf3e2b227e510656d4bfa15b1e08ffd2 100644 --- a/Lab2/database_helper.py +++ b/Lab2/database_helper.py @@ -59,7 +59,6 @@ def log_in(token, email): return False - def log_out(token): try: cursor = get_db().cursor() @@ -72,3 +71,43 @@ def log_out(token): return False except: return False + + +def tokenToEmail(token): + try: + cursor = get_db().cursor() + cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token]) + result = cursor.fetchone() + email = result[1] + if email: + return email + return None + except: + return None + + +def is_online(token): + try: + cursor = get_db().cursor() + cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token]) + result = cursor.fetchone() + if result: + return True + return False + except: + return False + + +def get_data_email(email): + try: + cursor = get_db().cursor() + cursor.execute("SELECT * FROM USERS WHERE EMAIL=?;", [email]) + result = cursor.fetchone() + if result: + data = [] + for r in result: + data.append(r) + return data + return None + except: + return None diff --git a/Lab2/server.py b/Lab2/server.py index edf405a79ee56cdafb7ddb531990e9086cbb6f51..bc7ad6523b1b7355af03d115e537f03ae3f07ddf 100644 --- a/Lab2/server.py +++ b/Lab2/server.py @@ -8,12 +8,22 @@ app = Flask(__name__) #database_helper.create_database() + @app.route("/", methods = ['GET']) def hello_world(): return "<p>Hello, Lab_2!</p>", 200 -@app.route("/sign_up", methods = ['POST']) +@app.route("/delete", methods = ['GET']) +def delete(): + resp = database_helper.clean_db() + if resp: + return "", 200 + else: + return "", 409 + + +@app.route("/users/sign_up", methods = ['POST']) def sign_up(): data = request.get_json() if ('email' in data and isinstance(data['email'], str) @@ -38,7 +48,8 @@ def sign_up(): else: return "", 400 -@app.route("/sign_in", methods = ['POST']) + +@app.route("/users/sign_in", methods = ['POST']) def sign_in(): data = request.get_json() if('email' in data @@ -54,7 +65,8 @@ def sign_in(): else: return "", 400 -@app.route("/sign_out", methods = ['POST']) + +@app.route("/users/sign_out", methods = ['POST']) def sign_out(): data = request.get_json() if('token' in data): @@ -66,15 +78,45 @@ def sign_out(): return "", 400 -@app.route("/delete", methods = ['GET']) -def delete(): - resp = database_helper.clean_db() - if resp: - return "", 200 +@app.route("/account/change_password", methods = ['PUT']) +def change_password(): + data = request.get_json() + if('token' in data and 'oldPassword' in data and 'newPassword' in data): + return True + #return "", 204 else: - return "", 409 + return "", 400 +@app.route("/account/get/data/<token>", methods = ['GET']) +def get_user_data_token(token): + email = database_helper.tokenToEmail(token) + if email: + return get_user_data_email(token, email) + else: + return "", 403 + + +@app.route("/account/get/data/<token>/<email>", methods = ['GET']) +def get_user_data_email(token, email): + if database_helper.is_online(token): + data = database_helper.get_data_email(email) + if data: + value = { + "firstname": data[0], + "familyname": data[1], + "gender": data[2], + "city": data[3], + "country": data[4], + "email": data[5], + "password": data[6], + } + return jsonify(value), 200 + else: + return "", 404 + else: + return "", 403 + def generate_token(): characters = string.ascii_letters + string.digits return ''.join(random.choices(characters, k=36))