diff --git a/lab3/twidder/database.db b/lab3/twidder/database.db index 7f8b4c47c8b9224e9a2b10c3bee780fc3f53e50a..b46fceb8a2352e0276d2f3f4579482b0737cc090 100644 Binary files a/lab3/twidder/database.db and b/lab3/twidder/database.db differ diff --git a/lab3/twidder/server.py b/lab3/twidder/server.py index 3791a69c6763449fda1224a953d763a82bb11d66..46d60a97c10d60f1f235591e3ba6c3acf8abfc9a 100644 --- a/lab3/twidder/server.py +++ b/lab3/twidder/server.py @@ -6,17 +6,17 @@ import secrets import database_helper import json import uuid - +import logging app = Flask(__name__, static_url_path="") - +app.logger.setLevel(logging.DEBUG) active_sockets = dict() """ Helper functions """ def hash_password(pw): - hashed_pw = sha256_crypt.encrypt(pw) + hashed_pw = sha256_crypt.hash(pw) return hashed_pw @@ -89,8 +89,9 @@ def root(): @app.route("/sign-in", methods=["POST"]) def sign_in(): - email = request.form["email"] - password = request.form["password"] + data = request.get_json() + email = data["email"] + password = data["password"] if validate_user(email, password): @@ -120,7 +121,7 @@ def sign_in(): @app.route("/sign-up", methods=["POST"]) def sign_up(): - user_data = request.form + user_data = request.get_json() if not is_signup_form_valid(user_data): return create_response( success=False, message="One or more fields are incorrect" @@ -162,14 +163,15 @@ def change_password(): if user: email = user[0] hashed_pw = user[1] - if validate_password(request.form["oldPassword"], hashed_pw): - - if len(request.form["newPassword"]) < 6: + data = request.get_json() + if validate_password(data["oldPassword"], hashed_pw): + data = request.get_json() + if len(data["newPassword"]) < 6: return create_response( success=False, message="Password must be at least 6 characters" ) - hashed_password = hash_password(request.form["newPassword"]) + hashed_password = hash_password(data["newPassword"]) database_helper.set_password(email, hashed_password) return create_response(success=True, message="Password has been changed") @@ -270,15 +272,16 @@ def post_message(): token = get_token() current_user = get_user_by_token(token) if current_user: + data = request.get_json() sender_email = current_user[0] - receiver_email = request.form["email"] + receiver_email = data["email"] receiver_email = receiver_email if receiver_email else sender_email msg_id = uuid.uuid4().hex database_helper.add_message( msg_id=msg_id, to_email=receiver_email, from_email=sender_email, - message=request.form["message"], + message=data["message"], ) return create_response(success=True, message="Message sent") else: diff --git a/lab3/twidder/static/client.js b/lab3/twidder/static/client.js index 8c1c57ee6a9c7630b09a89ed3e0d3f7ef0dec4e6..3410338b7c2015920a017a8de533edc9a5f1ce35 100644 --- a/lab3/twidder/static/client.js +++ b/lab3/twidder/static/client.js @@ -136,7 +136,12 @@ function postUserMessage() { let email = document.getElementById("user-email").innerHTML.slice(7); // strip email clean let userToken = window.localStorage.getItem("token"); - let params = "&email=" + email + "&message=" + message_form.value; + + let params = { + email: email, + message: message_form.value, + }; + let myCallback = function (res) { if (res.success) { message_form.value = null; @@ -155,7 +160,11 @@ function postMessageToSelf() { } let userToken = window.localStorage.getItem("token"); - let params = "&email" + "" + "&message=" + message_form.value; + let params = { + email: "", + message: message_form.value, + }; + let myCallback = function (res) { if (res.success) { message_form.value = null; @@ -205,7 +214,10 @@ function handleLogin() { } function signIn(email, password) { - let params = "&email=" + email + "&password=" + password; + let params = { + email: email, + password: password, + }; let myCallback = function (res) { if (res.success) { localStorage.setItem("token", res.data); @@ -282,21 +294,16 @@ function handleSignUp() { country: document.forms["signup-form"]["country"].value, }; - let params = - "firstname=" + - userData.firstname + - "&familyname=" + - userData.familyname + - "&gender=" + - userData.gender + - "&city=" + - userData.city + - "&country=" + - userData.country + - "&email=" + - userData.email + - "&password=" + - userData.password; + let params = { + firstname: userData.firstname, + familyname: userData.familyname, + gender: userData.gender, + city: userData.city, + country: userData.country, + email: userData.email, + password: userData.password, + }; + let myCallback = function (res) { if (res.success) { @@ -319,7 +326,11 @@ function changePassword() { return; } - let params = "&oldPassword=" + oldPw + "&newPassword=" + newPw; + let params = { + oldPassword: oldPw, + newPassword: newPw, + }; + let myCallback = function (res) { showModal(res.message); }; @@ -399,7 +410,7 @@ function connectWebSocket() { function xmlOther(url, callback, params, token, requestType) { let xhttp = new XMLHttpRequest(); xhttp.open(requestType, url, true); - xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xhttp.setRequestHeader("Content-type", "application/json"); if (token) { xhttp.setRequestHeader("Authorization", "Bearer " + token); } @@ -408,5 +419,5 @@ function xmlOther(url, callback, params, token, requestType) { callback(JSON.parse(xhttp.responseText)); } }; - xhttp.send(params); + xhttp.send(JSON.stringify(params)); }