Skip to content
Snippets Groups Projects
Commit 29dc190d authored by Lawrence Zawahri's avatar Lawrence Zawahri
Browse files

step 1 done

parent 389776b0
Branches
No related tags found
No related merge requests found
No preview for this file type
......@@ -9,9 +9,12 @@ import database_helper
# source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate"
# python3 server.py
# http://127.0.0.1:5000/myServer'
# http://127.0.0.1:5000/myServer
# sqlite3 database.db ".read schema.sql"
#Questions:
#Why does localhost in URL not work?
app = Flask(__name__, static_url_path = '/static')#in case flask does not recognize folder
app.debug = True
session = {'token':'email'}
......@@ -92,6 +95,7 @@ def sign_up():
tmp = input_has_error('email')
if tmp[0]:
print(tmp[1])
return jsonify({}), tmp[1]
email = tmp[2]
......@@ -156,17 +160,20 @@ def change_password():
# Validate Token
tmp = token_has_error(token)
if tmp[0]:
print("validate token")
return jsonify({}), tmp[1]
# Validate Old Password
tmp = input_has_error('old_password')
if tmp[0]:
print("validate old password")
return jsonify({}), tmp[1]
old_password = tmp[2]
# Validate New Password
tmp = input_has_error('new_password')
if tmp[0]:
print("validate new password")
return jsonify({}), tmp[1]
new_password = tmp[2]
......@@ -177,6 +184,7 @@ def change_password():
if old_password == database_helper.find_user(email)[1]: #checks if old_password is correct
status = database_helper.update_user(new_password, email)
if status:
print("Password changed")
return jsonify({}), 204 # "Password has been changed!"
else:
return jsonify({}), 500 # "Password has not been changed"
......
......@@ -109,7 +109,7 @@ h1, h3{
#error{
bottom: 20px;
left:30px;
left: 4px;
color: rgb(252, 6, 170);
position: relative;
font-size: 12px;
......
......@@ -4,22 +4,13 @@ var windowDiv;
var welcomeDiv;
var profileDiv;
var url = 'http://127.0.0.1:5000/myServer/';
var curr_page = "";
// source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate"
// - - - - - Init Request Objects - - - - - //
//Todo (Lawrence)
/*
Sign up
change password
post message (+ updateWall)
get message by token (+ kommentera fram stycke i reloadWall)
*/
// Todo - implement
// Sign Up Request Object
// - - - - - Init Request Objects - - - - - //
// Sign In Request Object
var signInRequest = new XMLHttpRequest();
......@@ -32,28 +23,21 @@ signInRequest.onreadystatechange = function() {
let token = this.getResponseHeader("Authorization")
localStorage.setItem("currentUser", token);
// Changes the view to profile view an loads user info
// Changes the view to profile view and loads user info
displayView();
setUserDetails("home");
// Todo - kommentera fram när den är klar
// reloadWall("home");
}
else if (this.status == 400) {
// Todo - implement
console.log('got this: 400')
errorMessage.innerHTML = "Error 400: Incorrect format";
}
else if (this.status == 404) {
// Todo - implement
console.log('got this: 404')
errorMessage.innerHTML = "Error 404: No user with that email exists";
}
else if (this.status == 401) {
// Todo - implement
console.log('got this: 401')
errorMessage.innerHTML = "Error 401: Incorrect password";
}
else {
// Todo - implement
console.log('unknown error -_-')
errorMessage.innerHTML = "Unknown error";
}
}
};
......@@ -73,56 +57,79 @@ signOutRequest.onreadystatechange = function() {
displayView();
}
else if (this.status == 401) {
// Todo - implement
console.log('got this: 401')
console.log("Error 401: You are not loged in");
}
else {
// Todo - implement
console.log('unknown error -_-')
console.log("Unknown error");
}
}
};
// Sign Up Request Object
var signUpRequest = new XMLHttpRequest();
signInRequest.onreadystatechange = function () {
signUpRequest.onreadystatechange = function () {
if (this.readyState == 4) {
let errorMessage = document.getElementById("error");
if (this.status == 204) {
errorMessage.innerHTML = "You are signed in";
let token = this.getResponseHeader("Authorization")
localStorage.setItem("currentUser", token);
// Changes the view to profile view an loads user info
displayView();
setUserDetails("home");
// Todo - kommentera fram när den är klar
// reloadWall("home");
errorMessage.innerHTML = "You have signed up";
}
else if (this.status == 400) {
// Todo - implement
console.log('got this: 400')
errorMessage.innerHTML = "Enter the data in the correct format";
}
else if (this.status == 404) {
else if (this.status == 401) {
// Todo - implement
console.log('got this: 404')
errorMessage.innerHTML = "Enter the data in the correct format";
console.log('got this: 401');
}
else if (this.status == 401) {
else if (this.status == 409) {
// Todo - implement
console.log('got this: 401')
console.log('got this: 409');
}
else if (this.status == 500) {
// Todo - implement
console.log('got this: 500');
}
else {
// Todo - implement
console.log('unknown error -_-')
console.log('unknown error -_-');
}
}
};
// Todo - implement
// Change Password Request Object
var ChangePassRequest = new XMLHttpRequest();
ChangePassRequest.onreadystatechange = function () {
if (this.readyState == 4) {
let errorMessage = document.getElementById("match_error");
if (this.status == 204) {
console.log("inside 204 statement");
errorMessage.innerHTML = "Password has been changed!";
console.log('Password has been changed!');
}
else if (this.status == 400) {
// Todo - implement
console.log('got this: 400');
}
else if (this.status == 401) {
// Todo - implement
console.log('got this: 401');
}
else if (this.status == 500) {
// Todo - implement
console.log('got this: 500');
}
else {
// Todo - implement
console.log('unknown error -_-');
}
errorMessage.style.display = "block";
}
};
// Get use data by token
// Get user data by token Request Object
var dataByTokenRequest = new XMLHttpRequest();
dataByTokenRequest.onreadystatechange = function() {
if (this.readyState == 4) {
......@@ -140,27 +147,24 @@ dataByTokenRequest.onreadystatechange = function() {
userTable.rows[5].cells[1].innerHTML = userDataArray["data"].country;
localStorage.setItem("homeEmail", userDataArray["data"].email);
reloadWall("home");
}
else if (this.status == 401) {
// Todo - implement
console.log('got this: 401')
console.log("Error 401: You are not loged in");
}
else if (this.status == 400) {
// Todo - implement
console.log('got this: 400')
console.log("Error 400: Incorrect format");
}
else if (this.status == 404) {
// Todo - implement
console.log('got this: 404')
console.log("Error 404: No user with that email exists");
}
else {
// Todo - implement
console.log('unknown error -_-')
}
console.log("Unknown error");
}
}
};
// Get use data by email
// Get user data by email Request Object
var dataByEmailRequest = new XMLHttpRequest();
dataByEmailRequest.onreadystatechange = function() {
if (this.readyState == 4) {
......@@ -180,42 +184,67 @@ dataByEmailRequest.onreadystatechange = function() {
userTable.rows[5].cells[1].innerHTML = userDataArray["data"].country;
localStorage.setItem("browseEmail", userDataArray["data"].email);
errorMessage.iinnerHTML = ""
reloadWall("browse");
}
else if (this.status == 401) {
// Todo - implement
console.log('got this: 401')
//errorMessage.innerHTML = "something";
else {
if (this.status == 401) {
errorMessage.innerHTML = "Error 401: You are not loged in";
}
else if (this.status == 400) {
errorMessage.innerHTML = "Error 400: Incorrect format";
}
else if (this.status == 404) {
errorMessage.innerHTML = "Error 404: No user with that email exists";
}
else {
errorMessage.innerHTML = "Unknown error";
}
localStorage.setItem("browseEmail", "");
}
}
};
// Get Messages By Token Request Object
var messagesByTokenRequest = new XMLHttpRequest();
messagesByTokenRequest.onreadystatechange = function() {
if (this.readyState == 4) {
if (this.status == 200) {
let currentWall = JSON.parse(this.responseText);
// Fromating the text before putting to wall
let complete = "";
for (let i = 0; i < currentWall.data.length; i++) {
complete += currentWall.data[i].person_who_posted + ': ' + currentWall.data[i].message + "</br>";
}
document.getElementById('homePostedMessagesDiv').innerHTML = complete;
}
else if (this.status == 204) {
console.log("Success, but no messages to receive");
}
else if (this.status == 401) {
console.log("Error 401: You are not loged in");
}
else if (this.status == 400) {
// Todo - implement
console.log('got this: 400')
localStorage.setItem("browseEmail", "");
console.log("Error 400: Incorrect format");
}
else if (this.status == 404) {
// Todo - implement
console.log('got this: 404')
localStorage.setItem("browseEmail", "");
console.log("Error 404: No user with that email exists");
}
else {
// Todo - implement
console.log('unknown error -_-')
localStorage.setItem("browseEmail", "");
console.log("Unknown error");
}
}
};
// Todo - implement
// Get Messages By Token Request Object
// Get Messages By Email Request Object
var messagesByEmailRequest = new XMLHttpRequest();
messagesByEmailRequest.onreadystatechange = function() {
if (this.readyState == 4) {
if (this.status == 200 || this.status == 204) {
if (this.status == 200) {
let currentWall = JSON.parse(this.responseText);
......@@ -225,30 +254,56 @@ messagesByEmailRequest.onreadystatechange = function() {
complete += currentWall.data[i].person_who_posted + ': ' + currentWall.data[i].message + "</br>";
}
document.getElementById('browsePostedMessagesDiv').innerHTML = complete;
// Todo - implement
}
else if (this.status == 204) {
console.log("Success, but no messages to receive");
}
else if (this.status == 401) {
// Todo - implement
console.log('got this: 401')
console.log("Error 401: You are not loged in");
}
else if (this.status == 400) {
// Todo - implement
console.log('got this: 400')
console.log("Error 400: Incorrect format");
}
else if (this.status == 404) {
// Todo - implement
console.log('got this: 404')
console.log("Error 404: No user with that email exists");
}
else {
// Todo - implement
console.log('unknown error -_-')
console.log("Unknown error");
}
}
};
// Todo - implement
// Post Message Request Object
var postMessageRequest = new XMLHttpRequest();
postMessageRequest.onreadystatechange = function () {
if (this.readyState == 4) {
let errorMessage = document.getElementById('searchMessage');
if (this.status == 204) {
console.log('Message posted!')
errorMessage.innerHTML = "";
if (curr_page != null && curr_page != "")
reloadWall(curr_page);
}
else if (this.status == 400) {
errorMessage.innerHTML = "Error 400: Incorrect format";
}
else if (this.status == 404) {
errorMessage.innerHTML = "Error 404: No user selected to write to";
}
else if (this.status == 401) {
errorMessage.innerHTML = "Error 401: You are not loged in";
}
else if (this.status == 500) {
errorMessage.innerHTML = "Error 500: Error at server side";
}
else {
errorMessage.innerHTML = "Unknown error";
}
}
};
// - - - - - Init functions - - - - - //
......@@ -260,12 +315,15 @@ displayView = function(){
windowDiv.innerHTML = profileDiv.innerHTML;
};
// - - - - - The function when page loads - - - - - //
window.onload = function () {
// Todo - Delete when done - används för att hoppa tillbaka till rtt view under utveckling
localStorage.setItem("currentUser", "");
// Delete when done - används för att hoppa tillbaka till rtt view under utveckling
// localStorage.setItem("currentUser", "");
// localStorage.setItem("homeEmail", "");
// localStorage.setItem("browseEmail", "");
// All key/value pairs stored in out localStorage
// If first time? check this:
......@@ -285,7 +343,6 @@ window.onload = function () {
displayView();
// Load user details to home page and browse page
// Todo - kan bli problem om dess inte innehåller giltig email
setUserDetails("home");
setUserDetails("browse");
};
......@@ -317,9 +374,9 @@ function setUserDetails(who) {
dataByEmailRequest.send();
}
}
return false;
}
// - - - - - Sign Up/In/Out - - - - - //
function sign_up() {
......@@ -337,6 +394,7 @@ function sign_up() {
repeat_password: form[7].value
};
// Error checks
if (user.password.length < minPassLength)
errorMess.innerHTML = "Password's length is too short";
......@@ -344,28 +402,10 @@ function sign_up() {
errorMess.innerHTML = "Passwords does not match";
else {
// // Todo
// // Submission to "server"
// let signUpObj = serverstub.signUp(user);
// // Set message to user
// errorMess.innerHTML = signUpObj["message"];
//xhttp.addEventListener("load", reqListener);
xhttp.open("POST", url + "sign_up", true);
signInRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhttp.send(JSON.stringify({
email: email,
password: password,
firstname: firstname,
familyname: familyname,
gender: gender,
city: city,
country: country
}));
// obj = JSON.parse(xhttp.responseText);
// alert(obj.alert)
//----------------//----------------//----------------//----------------
// Sending sign_ou request to "server"
signUpRequest.open("POST", url + "sign_up", true);
signUpRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
signUpRequest.send(JSON.stringify(user));
}
return false;
}
......@@ -397,6 +437,8 @@ function sign_out(){
signOutRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
signOutRequest.setRequestHeader("Authorization", token)
signOutRequest.send();
return false;
}
......@@ -425,6 +467,8 @@ function showPage(ourEvent, name) {
// Select only the one we want
let selected_tab = document.getElementById(name);
selected_tab.style.display = "block";
return false;
}
......@@ -447,15 +491,12 @@ function change_password(ourEvent){
error_text.innerHTML = "New password and confirm password does not match";
}
else {
// Todo
// Success
let message = serverstub.changePassword(token, old_pass, new_pass);
// Set error text
error_text.innerHTML = message["message"];
ChangePassRequest.open("PUT", url + "change_password", true);
ChangePassRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
ChangePassRequest.setRequestHeader("Authorization", token)
ChangePassRequest.send(JSON.stringify({old_password:old_pass, new_password:new_pass}));
}
error_text.style.display = "block";
return false;
}
// - - - - - Changing the wall - - - - - //
......@@ -464,15 +505,27 @@ function change_password(ourEvent){
function updateWall(who){
// "who" could be either home or browse, this way know which wall to write on
let messageToWall = document.getElementById(who + 'Textarea').value;
let errorMessage = document.getElementById('searchMessage');
let token = localStorage.getItem("currentUser");
let email = localStorage.getItem(who + "Email");
curr_page = who;
// Todo
// Send user's message to the server
serverstub.postMessage(token, messageToWall, email);
if (email != null && email != "" && token != null && token != "") {
// Send user's message to the server
postMessageRequest.open("POST", url + "post", true);
postMessageRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
postMessageRequest.setRequestHeader("Authorization", token)
postMessageRequest.send(JSON.stringify({ email: email, message: messageToWall }));
errorMessage.innerHTML = "";
}
else{
errorMessage.innerHTML = "No user selected to write to";
}
// Clear the text area the user just wrote in
document.getElementById(who + 'Textarea').value = "";
return false;
}
......@@ -482,18 +535,16 @@ function reloadWall(who) {
let token = localStorage.getItem("currentUser");
let email = localStorage.getItem(who + "Email");
// Get messages from my own wall
// If wanting messages from my own wall
if (who == 'home') {
// Send request to server about receiving the info
// Comment
// messagesByTokenRequest.open("GET", url + "getUserMessageByToken/" + email, true);
// messagesByTokenRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
// messagesByTokenRequest.setRequestHeader("Authorization", token)
// messagesByTokenRequest.send();
messagesByTokenRequest.open("GET", url + "getUserMessageByToken", true);
messagesByTokenRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
messagesByTokenRequest.setRequestHeader("Authorization", token)
messagesByTokenRequest.send();
}
// Get messages from another's wall
// If wanting messages from another's wall
else if (who == 'browse' && email != null && email != "") {
// Send request to server about receiving the info
messagesByEmailRequest.open("GET", url + "getMessagesByEmail/" + email, true);
......@@ -509,8 +560,8 @@ function reloadWall(who) {
function searchAnotherUser(event){
let token = localStorage.getItem("currentUser");
// Todo - download the wall of the user we searched for ?
// let user_obj = serverstub.getUserMessagesByEmail(token, email);
// Reseting the error messages
document.getElementById('searchMessage').innerHTML = "";
if(token != "") {
......
......@@ -6,6 +6,8 @@
* If you're a student, you shouldn't need to look through this file,
* the description of how it works is in the lab instructions.
**/
var serverstub = (function() {
'use strict';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment