Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
TDDD97 Web Programming
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Lawrence Zawahri
TDDD97 Web Programming
Commits
cd7927bc
Commit
cd7927bc
authored
3 years ago
by
Johan Thörnblom
Browse files
Options
Downloads
Plain Diff
ddd
parents
e87f4603
25bf0017
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Lab_4/Twidder/server.py
+79
-98
79 additions, 98 deletions
Lab_4/Twidder/server.py
Lab_4/Twidder/static/client.js
+51
-143
51 additions, 143 deletions
Lab_4/Twidder/static/client.js
with
130 additions
and
241 deletions
Lab_4/Twidder/server.py
+
79
−
98
View file @
cd7927bc
"""
Server
"""
"""
Server
"""
from
flask
import
Flask
,
jsonify
,
request
,
make_response
from
flask
import
Flask
,
jsonify
,
request
,
make_response
from
gevent.pywsgi
import
WSGIServer
from
gevent.pywsgi
import
WSGIServer
...
@@ -7,8 +8,6 @@ import json
...
@@ -7,8 +8,6 @@ import json
from
flask_sock
import
Sock
from
flask_sock
import
Sock
from
gevent
import
monkey
from
gevent
import
monkey
monkey
.
patch_all
()
monkey
.
patch_all
()
#Remember:
#Remember:
#PUT for updating data, POST for adding new data
#PUT for updating data, POST for adding new data
#save token on client and server (lab 3)
#save token on client and server (lab 3)
...
@@ -17,28 +16,20 @@ monkey.patch_all()
...
@@ -17,28 +16,20 @@ monkey.patch_all()
# python3 server.py
# python3 server.py
# http://127.0.0.1:5000/myServer
# http://127.0.0.1:5000/myServer
# sqlite3 database.db ".read schema.sql"
# sqlite3 database.db ".read schema.sql"
#Questions:
#Questions:
#Why does localhost in URL not work?
#Why does localhost in URL not work?
app
=
Flask
(
__name__
,
static_url_path
=
'
/static
'
)
#in case flask does not recognize folder
app
=
Flask
(
__name__
,
static_url_path
=
'
/static
'
)
#in case flask does not recognize folder
sock
=
Sock
(
app
)
sock
=
Sock
(
app
)
app
.
debug
=
True
app
.
debug
=
True
session
=
{
'
token
'
:
(
"
email
"
,
"
wsObj
"
)}
session
=
{
'
token
'
:
(
"
email
"
,
"
wsObj
"
)}
@app.route
(
'
/
'
)
@app.route
(
'
/
'
)
def
root
():
def
root
():
return
app
.
send_static_file
(
'
client.html
'
)
return
app
.
send_static_file
(
'
client.html
'
)
@app.route
(
'
/myServer
'
)
@app.route
(
'
/myServer
'
)
def
myServer
():
def
myServer
():
return
app
.
send_static_file
(
'
client.html
'
)
return
app
.
send_static_file
(
'
client.html
'
)
def
token_has_error
(
token
):
def
token_has_error
(
token
):
"""
All token standard error checks
"""
"""
All token standard error checks
"""
if
token
is
None
:
if
token
is
None
:
...
@@ -51,7 +42,6 @@ def token_has_error(token):
...
@@ -51,7 +42,6 @@ def token_has_error(token):
#"User not signed in or invalid access token"
#"User not signed in or invalid access token"
return
True
,
401
return
True
,
401
return
False
,
0
return
False
,
0
def
input_has_error
(
input
):
def
input_has_error
(
input
):
"""
All standard input error checks
"""
"""
All standard input error checks
"""
try
:
try
:
...
@@ -63,16 +53,25 @@ def input_has_error(input):
...
@@ -63,16 +53,25 @@ def input_has_error(input):
if
len
(
str
)
>
50
:
# "Server received too long " + str
if
len
(
str
)
>
50
:
# "Server received too long " + str
return
True
,
400
,
""
return
True
,
400
,
""
return
False
,
0
,
str
return
False
,
0
,
str
#--------------------------------------
# # Close my socket
# print(session)
# try:
# session[token][1].close()
# except:
# pass # samma sak som ingenting
# print(session)
#
#
# set user to not logged in
#session.pop(token)
#--------------------------------------
@sock.route
(
'
/myServer/api
'
)
@sock.route
(
'
/myServer/api
'
)
def
echo
(
socket
):
def
echo
(
socket
):
while
True
:
while
True
:
# Making sure we have a valid socket
# Making sure we have a valid socket
if
not
socket
:
if
not
socket
:
return
return
# Making sure message format is OK and store email & token in string
# Making sure message format is OK and store email & token in string
data
=
socket
.
receive
()
data
=
socket
.
receive
()
try
:
try
:
...
@@ -83,24 +82,54 @@ def echo(socket):
...
@@ -83,24 +82,54 @@ def echo(socket):
myToken
=
json
.
loads
(
data
)[
"
token
"
]
myToken
=
json
.
loads
(
data
)[
"
token
"
]
except
:
except
:
return
return
try
:
# sign out if I am logged in somewhere else
mode
=
json
.
loads
(
data
)[
"
mode
"
]
print
(
session
)
except
:
for
token
in
list
(
session
.
keys
()):
return
if
session
[
token
][
0
]
==
myEmail
and
token
!=
myToken
:
if
session
[
token
][
1
]
!=
""
:
#When sign_in is called
session
[
token
][
1
].
send
(
json
.
dumps
({
"
action
"
:
"
signOut
"
}))
if
mode
==
0
:
session
[
token
][
1
].
close
()
print
(
"
/n
"
)
print
(
"
You got kicked out
"
)
print
(
"
Inside mode 0
"
)
session
.
pop
(
token
)
print
(
"
/n
"
)
print
(
session
)
# sign out if I am logged in somewhere else
print
(
"
/n
"
)
# Put socket in global dict so server knows my connection is open
print
(
session
)
session
[
myToken
]
=
(
myEmail
,
socket
)
print
(
"
/n
"
)
print
(
session
)
for
token
in
list
(
session
.
keys
()):
socket
.
send
(
json
.
dumps
({
"
action
"
:
"
signIn
"
}))
if
session
[
token
][
0
]
==
myEmail
and
token
!=
myToken
:
print
(
"
after first if
"
)
if
session
[
token
][
1
]
!=
""
:
print
(
"
after second if
"
)
session
[
token
][
1
].
send
(
json
.
dumps
({
"
action
"
:
"
signOut
"
}))
session
[
token
][
1
].
close
()
print
(
"
You got kicked out
"
)
session
.
pop
(
token
)
print
(
"
/n
"
)
print
(
session
)
print
(
"
/n
"
)
print
(
"
-------------------------------
"
)
# Put socket in global dict so server knows my connection is open
session
[
myToken
]
=
(
myEmail
,
socket
)
print
(
session
)
socket
.
send
(
json
.
dumps
({
"
action
"
:
"
signIn
"
}))
#When sign_out is called
else
:
# Close my socket
print
(
"
/n
"
)
print
(
"
Inside mode 1
"
)
print
(
"
/n
"
)
print
(
session
)
print
(
"
/n
"
)
session
[
token
][
1
].
send
(
json
.
dumps
({
"
action
"
:
"
signOut
"
}))
session
[
token
][
1
].
close
()
session
.
pop
(
token
)
print
(
"
/n
"
)
print
(
session
)
print
(
"
/n
"
)
#set user to not logged in
@app.route
(
"
/myServer/sign_in
"
,
methods
=
[
'
POST
'
])
@app.route
(
"
/myServer/sign_in
"
,
methods
=
[
'
POST
'
])
def
sign_in
():
def
sign_in
():
"""
Sign in user
"""
"""
Sign in user
"""
...
@@ -110,21 +139,17 @@ def sign_in():
...
@@ -110,21 +139,17 @@ def sign_in():
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
email
=
tmp
[
2
]
email
=
tmp
[
2
]
# Validate Password
# Validate Password
tmp
=
input_has_error
(
'
password
'
)
tmp
=
input_has_error
(
'
password
'
)
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
password
=
tmp
[
2
]
password
=
tmp
[
2
]
# Do the user have an account?
# Do the user have an account?
rows
=
database_helper
.
find_user
(
email
)
rows
=
database_helper
.
find_user
(
email
)
if
rows
is
None
or
rows
==
[]:
if
rows
is
None
or
rows
==
[]:
return
jsonify
({}),
404
#"No user found by your email"
return
jsonify
({}),
404
#"No user found by your email"
if
password
!=
rows
[
1
]:
if
password
!=
rows
[
1
]:
return
jsonify
({}),
401
#"Incorrect password")
return
jsonify
({}),
401
#"Incorrect password")
# Generate a random token
# Generate a random token
token
=
str
(
uuid
.
uuid4
())
token
=
str
(
uuid
.
uuid4
())
session
[
token
]
=
(
email
,
""
)
session
[
token
]
=
(
email
,
""
)
...
@@ -134,18 +159,14 @@ def sign_in():
...
@@ -134,18 +159,14 @@ def sign_in():
response
.
headers
.
add
(
"
Access-Control-Allow-Origin
"
,
"
*
"
)
response
.
headers
.
add
(
"
Access-Control-Allow-Origin
"
,
"
*
"
)
response
.
headers
[
"
Authorization
"
]
=
token
response
.
headers
[
"
Authorization
"
]
=
token
return
response
,
204
return
response
,
204
@app.route
(
"
/myServer/sign_up
"
,
methods
=
[
'
POST
'
])
@app.route
(
"
/myServer/sign_up
"
,
methods
=
[
'
POST
'
])
def
sign_up
():
def
sign_up
():
"""
Sign up a user
"""
"""
Sign up a user
"""
tmp
=
input_has_error
(
'
email
'
)
tmp
=
input_has_error
(
'
email
'
)
if
tmp
[
0
]:
if
tmp
[
0
]:
print
(
tmp
[
1
])
#
print(tmp[1])
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
email
=
tmp
[
2
]
email
=
tmp
[
2
]
# Checking that the user does not already exist
# Checking that the user does not already exist
if
database_helper
.
find_user
(
email
)
is
not
None
:
if
database_helper
.
find_user
(
email
)
is
not
None
:
return
jsonify
({}),
409
#"Error: User already exists"
return
jsonify
({}),
409
#"Error: User already exists"
...
@@ -176,14 +197,11 @@ def sign_up():
...
@@ -176,14 +197,11 @@ def sign_up():
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
country
=
tmp
[
2
]
country
=
tmp
[
2
]
# Attempts to insert the user data to the database
# Attempts to insert the user data to the database
if
database_helper
.
create_user
(
email
,
password
,
firstname
,
familyname
,
gender
,
city
,
country
):
if
database_helper
.
create_user
(
email
,
password
,
firstname
,
familyname
,
gender
,
city
,
country
):
return
jsonify
({}),
204
#"Server inserted user data into database"
return
jsonify
({}),
204
#"Server inserted user data into database"
else
:
else
:
return
jsonify
({}),
500
#"General Error: Server failed to insert user data into database"
return
jsonify
({}),
500
#"General Error: Server failed to insert user data into database"
@app.route
(
"
/myServer/sign_out
"
,
methods
=
[
'
POST
'
])
@app.route
(
"
/myServer/sign_out
"
,
methods
=
[
'
POST
'
])
def
sign_out
():
def
sign_out
():
"""
Sign out user
"""
"""
Sign out user
"""
...
@@ -194,121 +212,97 @@ def sign_out():
...
@@ -194,121 +212,97 @@ def sign_out():
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
# Close my socket
#--------------------------------------
print
(
session
)
# # Close my socket
try
:
# print(session)
session
[
token
][
1
].
close
()
# try:
except
:
# session[token][1].close()
pass
# samma sak som ingenting
# except:
print
(
session
)
# pass # samma sak som ingenting
# print(session)
# set user to not logged in
try
:
session
.
pop
(
token
)
# #set user to not logged in
except
:
# session.pop(token)
pass
# samma sak som ingenting
#--------------------------------------
return
jsonify
({}),
204
# "Successfully signed out")
return
jsonify
({}),
204
# "Successfully signed out")
@app.route
(
"
/myServer/change_password
"
,
methods
=
[
'
PUT
'
])
@app.route
(
"
/myServer/change_password
"
,
methods
=
[
'
PUT
'
])
def
change_password
():
def
change_password
():
"""
Change password for the current user
"""
"""
Change password for the current user
"""
token
=
request
.
headers
[
"
Authorization
"
]
token
=
request
.
headers
[
"
Authorization
"
]
# Validate Token
# Validate Token
tmp
=
token_has_error
(
token
)
tmp
=
token_has_error
(
token
)
if
tmp
[
0
]:
if
tmp
[
0
]:
print
(
"
validate token
"
)
#
print("validate token")
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
# Validate Old Password
# Validate Old Password
tmp
=
input_has_error
(
'
old_password
'
)
tmp
=
input_has_error
(
'
old_password
'
)
if
tmp
[
0
]:
if
tmp
[
0
]:
print
(
"
validate old password
"
)
#
print("validate old password")
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
old_password
=
tmp
[
2
]
old_password
=
tmp
[
2
]
# Validate New Password
# Validate New Password
tmp
=
input_has_error
(
'
new_password
'
)
tmp
=
input_has_error
(
'
new_password
'
)
if
tmp
[
0
]:
if
tmp
[
0
]:
print
(
"
validate new password
"
)
#
print("validate new password")
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
new_password
=
tmp
[
2
]
new_password
=
tmp
[
2
]
# Extracting theemail of the current user
# Extracting theemail of the current user
email
=
session
[
token
][
0
]
email
=
session
[
token
][
0
]
# Validation of the old password and attemption to change it to the new one
# Validation of the old password and attemption to change it to the new one
if
old_password
==
database_helper
.
find_user
(
email
)[
1
]:
#checks if old_password is correct
if
old_password
==
database_helper
.
find_user
(
email
)[
1
]:
#checks if old_password is correct
status
=
database_helper
.
update_user
(
new_password
,
email
)
status
=
database_helper
.
update_user
(
new_password
,
email
)
if
status
:
if
status
:
print
(
"
Password changed
"
)
#
print("Password changed")
return
jsonify
({}),
204
# "Password has been changed!"
return
jsonify
({}),
204
# "Password has been changed!"
else
:
else
:
return
jsonify
({}),
500
# "Password has not been changed"
return
jsonify
({}),
500
# "Password has not been changed"
else
:
else
:
return
jsonify
({}),
400
# "Old password is incorrect"
return
jsonify
({}),
400
# "Old password is incorrect"
@app.route
(
"
/myServer/getDataByToken
"
,
methods
=
[
'
GET
'
])
@app.route
(
"
/myServer/getDataByToken
"
,
methods
=
[
'
GET
'
])
def
get_user_data_by_token
():
def
get_user_data_by_token
():
"""
Verify current user through token and attemp to return the data of the user
"""
"""
Verify current user through token and attemp to return the data of the user
"""
token
=
request
.
headers
[
"
Authorization
"
]
token
=
request
.
headers
[
"
Authorization
"
]
# Validate token
# Validate token
if
token
not
in
session
:
if
token
not
in
session
:
return
jsonify
({}),
401
# "User not signed in or invalid access token"
return
jsonify
({}),
401
# "User not signed in or invalid access token"
# Extracting the email of the current user
# Extracting the email of the current user
email
=
session
[
token
][
0
]
email
=
session
[
token
][
0
]
return
get_user_data_by_email
(
email
)
return
get_user_data_by_email
(
email
)
@app.route
(
"
/myServer/getDataByEmail/<email>
"
,
methods
=
[
'
GET
'
])
@app.route
(
"
/myServer/getDataByEmail/<email>
"
,
methods
=
[
'
GET
'
])
def
get_user_data_by_email
(
email
):
def
get_user_data_by_email
(
email
):
"""
Get user data by email
"""
"""
Get user data by email
"""
token
=
request
.
headers
[
"
Authorization
"
]
token
=
request
.
headers
[
"
Authorization
"
]
# Validate Token
# Validate Token
tmp
=
token_has_error
(
token
)
tmp
=
token_has_error
(
token
)
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
# Validate email
# Validate email
if
email
is
None
:
if
email
is
None
:
return
True
,
400
return
True
,
400
if
len
(
email
)
>
50
:
if
len
(
email
)
>
50
:
return
True
,
400
return
True
,
400
# Attempting to find the data of the current user in the database
# Attempting to find the data of the current user in the database
data
=
database_helper
.
find_user
(
email
)
data
=
database_helper
.
find_user
(
email
)
if
data
is
None
or
data
==
[]:
if
data
is
None
or
data
==
[]:
return
jsonify
({}),
404
#"No user found by your destination email"
return
jsonify
({}),
404
#"No user found by your destination email"
formated_data
=
{
"
email
"
:
data
[
0
],
"
firstname
"
:
data
[
2
],
"
familyname
"
:
data
[
3
],
"
gender
"
:
data
[
4
],
"
city
"
:
data
[
5
],
"
country
"
:
data
[
6
]}
formated_data
=
{
"
email
"
:
data
[
0
],
"
firstname
"
:
data
[
2
],
"
familyname
"
:
data
[
3
],
"
gender
"
:
data
[
4
],
"
city
"
:
data
[
5
],
"
country
"
:
data
[
6
]}
return
jsonify
({
"
data
"
:
formated_data
}),
200
# "Data successfully sent to you!"
return
jsonify
({
"
data
"
:
formated_data
}),
200
# "Data successfully sent to you!"
@app.route
(
"
/myServer/getUserMessageByToken
"
,
methods
=
[
'
GET
'
])
@app.route
(
"
/myServer/getUserMessageByToken
"
,
methods
=
[
'
GET
'
])
def
get_user_messages_by_token
():
def
get_user_messages_by_token
():
"""
Get user
'
s message wall thought the token of the user
"""
"""
Get user
'
s message wall thought the token of the user
"""
token
=
request
.
headers
[
"
Authorization
"
]
token
=
request
.
headers
[
"
Authorization
"
]
# Validate Token
# Validate Token
tmp
=
token_has_error
(
token
)
tmp
=
token_has_error
(
token
)
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
# Extracting the email of the current user
# Extracting the email of the current user
email
=
session
[
token
][
0
]
email
=
session
[
token
][
0
]
return
get_user_messages_by_email
(
email
)
return
get_user_messages_by_email
(
email
)
@app.route
(
"
/myServer/getMessagesByEmail/<req_email>
"
,
methods
=
[
'
GET
'
])
@app.route
(
"
/myServer/getMessagesByEmail/<req_email>
"
,
methods
=
[
'
GET
'
])
def
get_user_messages_by_email
(
req_email
):
def
get_user_messages_by_email
(
req_email
):
"""
Get user
'
s message wall thought the email of the user
"""
"""
Get user
'
s message wall thought the email of the user
"""
token
=
request
.
headers
[
"
Authorization
"
]
token
=
request
.
headers
[
"
Authorization
"
]
# Validate Token
# Validate Token
tmp
=
token_has_error
(
token
)
tmp
=
token_has_error
(
token
)
if
tmp
[
0
]:
if
tmp
[
0
]:
...
@@ -319,36 +313,28 @@ def get_user_messages_by_email(req_email):
...
@@ -319,36 +313,28 @@ def get_user_messages_by_email(req_email):
return
True
,
400
return
True
,
400
if
len
(
req_email
)
>
50
:
if
len
(
req_email
)
>
50
:
return
True
,
400
return
True
,
400
# Find requested user in the data base
# Find requested user in the data base
rows
=
database_helper
.
find_user
(
req_email
)
rows
=
database_helper
.
find_user
(
req_email
)
# Error check
# Error check
if
rows
is
None
or
rows
==
[]:
if
rows
is
None
or
rows
==
[]:
return
jsonify
({}),
404
#"No user found by your destination email"
return
jsonify
({}),
404
#"No user found by your destination email"
# Insert post-info into array
# Insert post-info into array
rows
=
database_helper
.
get_post
(
req_email
)
rows
=
database_helper
.
get_post
(
req_email
)
result
=
[]
result
=
[]
for
row
in
rows
:
for
row
in
rows
:
result
.
append
({
"
email
"
:
row
[
0
],
"
person_who_posted
"
:
row
[
1
],
"
message
"
:
row
[
2
]})
result
.
append
({
"
email
"
:
row
[
0
],
"
person_who_posted
"
:
row
[
1
],
"
message
"
:
row
[
2
]})
# Notify user if the wall is empty or not, and if not, return the all messages
# Notify user if the wall is empty or not, and if not, return the all messages
if
result
==
[]:
if
result
==
[]:
return
jsonify
({}),
204
#"user's wall had no messages to collect"
return
jsonify
({}),
204
#"user's wall had no messages to collect"
return
jsonify
({
"
data
"
:
result
}),
200
# User posts has been displayed"
return
jsonify
({
"
data
"
:
result
}),
200
# User posts has been displayed"
@app.route
(
"
/myServer/post
"
,
methods
=
[
'
POST
'
])
@app.route
(
"
/myServer/post
"
,
methods
=
[
'
POST
'
])
def
post_message
():
def
post_message
():
"""
Post a message on sombody
'
s wall
"""
"""
Post a message on sombody
'
s wall
"""
# Find out sender's email
# Find out sender's email
token
=
request
.
headers
[
"
Authorization
"
]
token
=
request
.
headers
[
"
Authorization
"
]
tmp
=
token_has_error
(
token
)
tmp
=
token_has_error
(
token
)
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
# Extracting the email of the current user
# Extracting the email of the current user
my_email
=
session
[
token
][
0
]
my_email
=
session
[
token
][
0
]
...
@@ -357,24 +343,19 @@ def post_message():
...
@@ -357,24 +343,19 @@ def post_message():
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
destination_email
=
tmp
[
2
]
destination_email
=
tmp
[
2
]
# Finding out if the user exist, who we wanna write a message to
# Finding out if the user exist, who we wanna write a message to
rows
=
database_helper
.
find_user
(
destination_email
)
rows
=
database_helper
.
find_user
(
destination_email
)
if
rows
is
None
or
rows
==
[]:
if
rows
is
None
or
rows
==
[]:
return
jsonify
({}),
404
#"No user found by your destination email"
return
jsonify
({}),
404
#"No user found by your destination email"
# Verify message that we want to post
# Verify message that we want to post
tmp
=
input_has_error
(
'
message
'
)
tmp
=
input_has_error
(
'
message
'
)
if
tmp
[
0
]:
if
tmp
[
0
]:
return
jsonify
({}),
tmp
[
1
]
return
jsonify
({}),
tmp
[
1
]
message
=
tmp
[
2
]
message
=
tmp
[
2
]
# Calling and error checking function
# Calling and error checking function
if
not
database_helper
.
create_post
(
my_email
,
destination_email
,
message
):
if
not
database_helper
.
create_post
(
my_email
,
destination_email
,
message
):
return
jsonify
({}),
500
#"Server failed to post message to database"
return
jsonify
({}),
500
#"Server failed to post message to database"
return
jsonify
({}),
204
#"Succeeded to post message")
return
jsonify
({}),
204
#"Succeeded to post message")
if
__name__
==
'
__main__
'
:
if
__name__
==
'
__main__
'
:
# app.run(port=5000, debug=True)
# app.run(port=5000, debug=True)
app
.
debug
=
True
app
.
debug
=
True
...
...
This diff is collapsed.
Click to expand it.
Lab_4/Twidder/static/client.js
+
51
−
143
View file @
cd7927bc
// Global variables
// Global variables
var
minPassLength
=
2
;
var
minPassLength
=
2
;
var
windowDiv
;
var
windowDiv
;
...
@@ -6,76 +7,63 @@ var profileDiv;
...
@@ -6,76 +7,63 @@ var profileDiv;
var
url
=
'
http://
'
+
document
.
domain
+
'
:5000/myServer/
'
;
var
url
=
'
http://
'
+
document
.
domain
+
'
:5000/myServer/
'
;
var
curr_page
=
""
;
var
curr_page
=
""
;
var
socket
;
var
socket
;
// source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate"
// source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate"
function
allowDrop
(
event
)
{
function
allowDrop
(
event
)
{
event
.
preventDefault
();
event
.
preventDefault
();
}
}
function
drag
(
event
)
{
function
drag
(
event
)
{
event
.
dataTransfer
.
setData
(
"
text/plain
"
,
event
.
target
.
innerHTML
);
event
.
dataTransfer
.
setData
(
"
text/plain
"
,
event
.
target
.
innerHTML
);
}
}
function
dropHome
(
event
)
{
function
dropHome
(
event
)
{
event
.
preventDefault
();
event
.
preventDefault
();
let
data
=
event
.
dataTransfer
.
getData
(
"
text/plain
"
);
let
data
=
event
.
dataTransfer
.
getData
(
"
text/plain
"
);
// Replaces parts of the string. "g" gör att alla accurences av substringen byts ut
// Replaces parts of the string. "g" gör att alla accurences av substringen byts ut
let
newStr
=
data
.
replace
(
/<br>/g
,
"
\n
"
);
let
newStr
=
data
.
replace
(
/<br>/g
,
"
\n
"
);
// newStr = tmp.replace(/ /g, '');
// newStr = tmp.replace(/ /g, '');
document
.
getElementById
(
"
homeTextarea
"
).
innerHTML
=
newStr
;
document
.
getElementById
(
"
homeTextarea
"
).
innerHTML
=
newStr
;
}
}
function
dropBrowse
(
event
)
{
function
dropBrowse
(
event
)
{
event
.
preventDefault
();
event
.
preventDefault
();
let
data
=
event
.
dataTransfer
.
getData
(
"
text/plain
"
);
let
data
=
event
.
dataTransfer
.
getData
(
"
text/plain
"
);
// Replaces parts of the string. "g" gör att alla accurences av substringen byts ut
// Replaces parts of the string. "g" gör att alla accurences av substringen byts ut
let
newStr
=
data
.
replace
(
/<br>/g
,
"
\n
"
);
let
newStr
=
data
.
replace
(
/<br>/g
,
"
\n
"
);
// newStr = tmp.replace(/ /g, '');
// newStr = tmp.replace(/ /g, '');
document
.
getElementById
(
"
browseTextarea
"
).
innerHTML
=
newStr
;
document
.
getElementById
(
"
browseTextarea
"
).
innerHTML
=
newStr
;
}
}
// Socket
// Socket
function
connectWithSocket
()
{
function
connectWithSocket
(
mode
)
{
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
// Changes the view to profile view and loads user info
// Changes the view to profile view and loads user info
displayView
();
displayView
();
setUserDetails
(
"
home
"
);
setUserDetails
(
"
home
"
);
// Establish web socket
// Establish web socket
socket
=
new
WebSocket
(
'
ws://
'
+
document
.
domain
+
'
:5000/myServer/api
'
);
socket
=
new
WebSocket
(
'
ws://
'
+
document
.
domain
+
'
:5000/myServer/api
'
);
socket
.
onopen
=
function
(
event
)
{
socket
.
onopen
=
function
(
event
)
{
let
myEmail
=
localStorage
.
getItem
(
"
homeEmail
"
);
let
myEmail
=
localStorage
.
getItem
(
"
homeEmail
"
);
if
(
mode
==
0
)
{
//Once sign_in is called
console
.
log
(
"
Inside connectWithSocket mode 0
"
)
this
.
send
(
JSON
.
stringify
({
token
:
token
,
email
:
myEmail
,
mode
:
mode
}));
}
else
{
//Once sign_out is called
console
.
log
(
"
Inside connectWithSocket mode 1
"
)
this
.
send
(
JSON
.
stringify
({
token
:
token
,
email
:
myEmail
,
mode
:
mode
}));
}
// Todo - ändra så att token skickas i header istället
// Todo - ändra så att token skickas i header istället
this
.
send
(
JSON
.
stringify
({
token
:
token
,
email
:
myEmail
}));
console
.
log
(
"
Nu har jag skickat
"
);
console
.
log
(
"
Nu har jag skickat
"
);
}
}
socket
.
onmessage
=
function
(
event
)
{
socket
.
onmessage
=
function
(
event
)
{
let
response
=
JSON
.
parse
(
event
.
data
);
let
response
=
JSON
.
parse
(
event
.
data
);
console
.
log
(
"
Nu fick jag svar
"
);
console
.
log
(
"
Nu fick jag svar
"
);
switch
(
response
[
"
action
"
])
{
switch
(
response
[
"
action
"
])
{
case
"
signOut
"
:
case
"
signOut
"
:
// If old socket open, close it.
// If old socket open, close it.
socket
.
close
();
socket
.
close
();
console
.
log
(
response
);
console
.
log
(
response
);
// Reset token in the localStorage
// Reset token in the localStorage
localStorage
.
setItem
(
"
currentUser
"
,
""
);
localStorage
.
setItem
(
"
currentUser
"
,
""
);
localStorage
.
setItem
(
"
homeEmail
"
,
""
);
localStorage
.
setItem
(
"
homeEmail
"
,
""
);
localStorage
.
setItem
(
"
browseEmail
"
,
""
);
localStorage
.
setItem
(
"
browseEmail
"
,
""
);
// Changes the view to welcome view
// Changes the view to welcome view
displayView
();
displayView
();
document
.
getElementById
(
"
error
"
).
innerHTML
=
"
Signed Out, you signed in elsewhere
"
;
document
.
getElementById
(
"
error
"
).
innerHTML
=
"
Signed Out, you signed in elsewhere
"
;
...
@@ -84,50 +72,46 @@ function connectWithSocket() {
...
@@ -84,50 +72,46 @@ function connectWithSocket() {
console
.
log
(
response
);
console
.
log
(
response
);
console
.
log
(
"
ja är signed in
"
);
console
.
log
(
"
ja är signed in
"
);
break
;
break
;
}
}
}
}
}
}
// - - - - - Init Request Objects - - - - - //
// - - - - - Init Request Objects - - - - - //
// Sign In Request Object
// Sign In Request Object
var
signInRequest
=
new
XMLHttpRequest
();
var
signInRequest
=
new
XMLHttpRequest
();
signInRequest
.
onreadystatechange
=
function
()
{
signInRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
let
errorMessage
=
document
.
getElementById
(
"
error
"
);
let
errorMessage
=
document
.
getElementById
(
"
error
"
);
if
(
this
.
status
==
204
)
{
if
(
this
.
status
==
204
)
{
let
token
=
this
.
getResponseHeader
(
"
Authorization
"
);
let
token
=
this
.
getResponseHeader
(
"
Authorization
"
);
localStorage
.
setItem
(
"
currentUser
"
,
token
);
localStorage
.
setItem
(
"
currentUser
"
,
token
);
connectWithSocket
();
console
.
log
(
"
Inside SignInRequest
"
)
connectWithSocket
(
0
);
}
}
else
if
(
this
.
status
==
400
)
{
else
if
(
this
.
status
==
400
)
{
errorMessage
.
innerHTML
=
"
Error 400: Incorrect format
"
;
errorMessage
.
innerHTML
=
"
Error 400: Incorrect format
"
;
}
}
else
if
(
this
.
status
==
404
)
{
else
if
(
this
.
status
==
404
)
{
errorMessage
.
innerHTML
=
"
Error 404: No user with that email exists
"
;
errorMessage
.
innerHTML
=
"
Error 404: No user with that email exists
"
;
}
}
else
if
(
this
.
status
==
401
)
{
else
if
(
this
.
status
==
401
)
{
errorMessage
.
innerHTML
=
"
Error 401: Incorrect password
"
;
errorMessage
.
innerHTML
=
"
Error 401: Incorrect password
"
;
}
}
else
{
else
{
errorMessage
.
innerHTML
=
"
Unknown error
"
;
errorMessage
.
innerHTML
=
"
Unknown error
"
;
}
}
}
}
};
};
// Sign Out Request Object
// Sign Out Request Object
var
signOutRequest
=
new
XMLHttpRequest
();
var
signOutRequest
=
new
XMLHttpRequest
();
signOutRequest
.
onreadystatechange
=
function
()
{
signOutRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
// Reset token in the localStorage
// Reset token in the localStorage
localStorage
.
setItem
(
"
currentUser
"
,
""
);
localStorage
.
setItem
(
"
currentUser
"
,
""
);
localStorage
.
setItem
(
"
homeEmail
"
,
""
);
localStorage
.
setItem
(
"
homeEmail
"
,
""
);
localStorage
.
setItem
(
"
browseEmail
"
,
""
);
localStorage
.
setItem
(
"
browseEmail
"
,
""
);
console
.
log
(
"
Inside signOutRequest
"
)
if
(
this
.
status
==
204
)
{
if
(
this
.
status
==
204
)
{
connectWithSocket
(
1
);
// Changes the view to welcome view
// Changes the view to welcome view
displayView
();
displayView
();
}
}
...
@@ -138,15 +122,13 @@ signOutRequest.onreadystatechange = function() {
...
@@ -138,15 +122,13 @@ signOutRequest.onreadystatechange = function() {
else
{
else
{
console
.
log
(
"
Unknown error
"
);
console
.
log
(
"
Unknown error
"
);
displayView
();
displayView
();
}
}
}
}
};
};
// Sign Up Request Object
// Sign Up Request Object
var
signUpRequest
=
new
XMLHttpRequest
();
var
signUpRequest
=
new
XMLHttpRequest
();
signUpRequest
.
onreadystatechange
=
function
()
{
signUpRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
let
errorMessage
=
document
.
getElementById
(
"
error
"
);
let
errorMessage
=
document
.
getElementById
(
"
error
"
);
if
(
this
.
status
==
204
)
{
if
(
this
.
status
==
204
)
{
errorMessage
.
innerHTML
=
"
You have signed up
"
;
errorMessage
.
innerHTML
=
"
You have signed up
"
;
...
@@ -159,18 +141,16 @@ signUpRequest.onreadystatechange = function () {
...
@@ -159,18 +141,16 @@ signUpRequest.onreadystatechange = function () {
}
}
else
if
(
this
.
status
==
500
)
{
else
if
(
this
.
status
==
500
)
{
errorMessage
.
innerHTML
=
"
Error 500: Error at server side
"
;
errorMessage
.
innerHTML
=
"
Error 500: Error at server side
"
;
}
}
else
{
else
{
errorMessage
.
innerHTML
=
"
Unknown error
"
;
errorMessage
.
innerHTML
=
"
Unknown error
"
;
}
}
}
}
};
};
// Change Password Request Object
// Change Password Request Object
var
ChangePassRequest
=
new
XMLHttpRequest
();
var
ChangePassRequest
=
new
XMLHttpRequest
();
ChangePassRequest
.
onreadystatechange
=
function
()
{
ChangePassRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
let
errorMessage
=
document
.
getElementById
(
"
match_error
"
);
let
errorMessage
=
document
.
getElementById
(
"
match_error
"
);
if
(
this
.
status
==
204
)
{
if
(
this
.
status
==
204
)
{
errorMessage
.
innerHTML
=
"
Password has been changed!
"
;
errorMessage
.
innerHTML
=
"
Password has been changed!
"
;
...
@@ -190,15 +170,12 @@ ChangePassRequest.onreadystatechange = function () {
...
@@ -190,15 +170,12 @@ ChangePassRequest.onreadystatechange = function () {
errorMessage
.
style
.
display
=
"
block
"
;
errorMessage
.
style
.
display
=
"
block
"
;
}
}
};
};
// Get user data by token Request Object
// Get user data by token Request Object
var
dataByTokenRequest
=
new
XMLHttpRequest
();
var
dataByTokenRequest
=
new
XMLHttpRequest
();
dataByTokenRequest
.
onreadystatechange
=
function
()
{
dataByTokenRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
status
==
200
)
{
if
(
this
.
status
==
200
)
{
let
userDataArray
=
JSON
.
parse
(
this
.
responseText
);
let
userDataArray
=
JSON
.
parse
(
this
.
responseText
);
// Putting the user data we retrieved from server to the corresponding html table
// Putting the user data we retrieved from server to the corresponding html table
let
userTable
=
document
.
getElementById
(
"
homeUserInfo
"
);
let
userTable
=
document
.
getElementById
(
"
homeUserInfo
"
);
userTable
.
rows
[
0
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
email
;
userTable
.
rows
[
0
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
email
;
...
@@ -207,7 +184,6 @@ dataByTokenRequest.onreadystatechange = function() {
...
@@ -207,7 +184,6 @@ dataByTokenRequest.onreadystatechange = function() {
userTable
.
rows
[
3
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
gender
;
userTable
.
rows
[
3
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
gender
;
userTable
.
rows
[
4
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
city
;
userTable
.
rows
[
4
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
city
;
userTable
.
rows
[
5
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
country
;
userTable
.
rows
[
5
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
country
;
localStorage
.
setItem
(
"
homeEmail
"
,
userDataArray
[
"
data
"
].
email
);
localStorage
.
setItem
(
"
homeEmail
"
,
userDataArray
[
"
data
"
].
email
);
reloadWall
(
"
home
"
);
reloadWall
(
"
home
"
);
}
}
...
@@ -225,17 +201,13 @@ dataByTokenRequest.onreadystatechange = function() {
...
@@ -225,17 +201,13 @@ dataByTokenRequest.onreadystatechange = function() {
}
}
}
}
};
};
// Get user data by email Request Object
// Get user data by email Request Object
var
dataByEmailRequest
=
new
XMLHttpRequest
();
var
dataByEmailRequest
=
new
XMLHttpRequest
();
dataByEmailRequest
.
onreadystatechange
=
function
()
{
dataByEmailRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
let
errorMessage
=
document
.
getElementById
(
"
searchMessage
"
);
let
errorMessage
=
document
.
getElementById
(
"
searchMessage
"
);
if
(
this
.
status
==
200
)
{
if
(
this
.
status
==
200
)
{
let
userDataArray
=
JSON
.
parse
(
this
.
responseText
);
let
userDataArray
=
JSON
.
parse
(
this
.
responseText
);
// Putting the user data we retrieved from server to the corresponding html table
// Putting the user data we retrieved from server to the corresponding html table
let
userTable
=
document
.
getElementById
(
"
browseUserInfo
"
);
let
userTable
=
document
.
getElementById
(
"
browseUserInfo
"
);
userTable
.
rows
[
0
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
email
;
userTable
.
rows
[
0
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
email
;
...
@@ -244,38 +216,33 @@ dataByEmailRequest.onreadystatechange = function() {
...
@@ -244,38 +216,33 @@ dataByEmailRequest.onreadystatechange = function() {
userTable
.
rows
[
3
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
gender
;
userTable
.
rows
[
3
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
gender
;
userTable
.
rows
[
4
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
city
;
userTable
.
rows
[
4
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
city
;
userTable
.
rows
[
5
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
country
;
userTable
.
rows
[
5
].
cells
[
1
].
innerHTML
=
userDataArray
[
"
data
"
].
country
;
localStorage
.
setItem
(
"
browseEmail
"
,
userDataArray
[
"
data
"
].
email
);
localStorage
.
setItem
(
"
browseEmail
"
,
userDataArray
[
"
data
"
].
email
);
errorMessage
.
iinnerHTML
=
""
errorMessage
.
iinnerHTML
=
""
reloadWall
(
"
browse
"
);
reloadWall
(
"
browse
"
);
}
}
else
{
else
{
if
(
this
.
status
==
401
)
{
if
(
this
.
status
==
401
)
{
errorMessage
.
innerHTML
=
"
Error 401: You are not loged in
"
;
errorMessage
.
innerHTML
=
"
Error 401: You are not loged in
"
;
}
}
else
if
(
this
.
status
==
400
)
{
else
if
(
this
.
status
==
400
)
{
errorMessage
.
innerHTML
=
"
Error 400: Incorrect format
"
;
errorMessage
.
innerHTML
=
"
Error 400: Incorrect format
"
;
}
}
else
if
(
this
.
status
==
404
)
{
else
if
(
this
.
status
==
404
)
{
errorMessage
.
innerHTML
=
"
Error 404: No user with that email exists
"
;
errorMessage
.
innerHTML
=
"
Error 404: No user with that email exists
"
;
}
}
else
{
else
{
errorMessage
.
innerHTML
=
"
Unknown error
"
;
errorMessage
.
innerHTML
=
"
Unknown error
"
;
}
}
localStorage
.
setItem
(
"
browseEmail
"
,
""
);
localStorage
.
setItem
(
"
browseEmail
"
,
""
);
}
}
}
}
};
};
// Get Messages By Token Request Object
// Get Messages By Token Request Object
var
messagesByTokenRequest
=
new
XMLHttpRequest
();
var
messagesByTokenRequest
=
new
XMLHttpRequest
();
messagesByTokenRequest
.
onreadystatechange
=
function
()
{
messagesByTokenRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
status
==
200
)
{
if
(
this
.
status
==
200
)
{
let
currentWall
=
JSON
.
parse
(
this
.
responseText
);
let
currentWall
=
JSON
.
parse
(
this
.
responseText
);
// Formating the text before putting to wall
// Formating the text before putting to wall
let
complete
=
""
;
let
complete
=
""
;
for
(
let
i
=
0
;
i
<
currentWall
.
data
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
currentWall
.
data
.
length
;
i
++
)
{
...
@@ -297,26 +264,21 @@ messagesByTokenRequest.onreadystatechange = function() {
...
@@ -297,26 +264,21 @@ messagesByTokenRequest.onreadystatechange = function() {
}
}
else
{
else
{
console
.
log
(
"
Unknown error
"
);
console
.
log
(
"
Unknown error
"
);
}
}
}
}
};
};
// Get Messages By Email Request Object
// Get Messages By Email Request Object
var
messagesByEmailRequest
=
new
XMLHttpRequest
();
var
messagesByEmailRequest
=
new
XMLHttpRequest
();
messagesByEmailRequest
.
onreadystatechange
=
function
()
{
messagesByEmailRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
status
==
200
)
{
if
(
this
.
status
==
200
)
{
let
currentWall
=
JSON
.
parse
(
this
.
responseText
);
let
currentWall
=
JSON
.
parse
(
this
.
responseText
);
// Fromating the text before putting to wall
// Fromating the text before putting to wall
let
complete
=
""
;
let
complete
=
""
;
for
(
let
i
=
0
;
i
<
currentWall
.
data
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
currentWall
.
data
.
length
;
i
++
)
{
complete
+=
currentWall
.
data
[
i
].
person_who_posted
+
'
:
'
+
currentWall
.
data
[
i
].
message
+
"
</br>
"
;
complete
+=
currentWall
.
data
[
i
].
person_who_posted
+
'
:
'
+
currentWall
.
data
[
i
].
message
+
"
</br>
"
;
}
}
document
.
getElementById
(
'
browsePostedMessagesDiv
'
).
innerHTML
=
complete
;
document
.
getElementById
(
'
browsePostedMessagesDiv
'
).
innerHTML
=
complete
;
}
}
else
if
(
this
.
status
==
204
)
{
else
if
(
this
.
status
==
204
)
{
console
.
log
(
"
Success, but no messages to receive
"
);
console
.
log
(
"
Success, but no messages to receive
"
);
...
@@ -332,17 +294,15 @@ messagesByEmailRequest.onreadystatechange = function() {
...
@@ -332,17 +294,15 @@ messagesByEmailRequest.onreadystatechange = function() {
}
}
else
{
else
{
console
.
log
(
"
Unknown error
"
);
console
.
log
(
"
Unknown error
"
);
}
}
}
}
};
};
// Post Message Request Object
// Post Message Request Object
var
postMessageRequest
=
new
XMLHttpRequest
();
var
postMessageRequest
=
new
XMLHttpRequest
();
postMessageRequest
.
onreadystatechange
=
function
()
{
postMessageRequest
.
onreadystatechange
=
function
()
{
if
(
this
.
readyState
==
4
)
{
if
(
this
.
readyState
==
4
)
{
let
errorMessage
=
document
.
getElementById
(
'
searchMessage
'
);
let
errorMessage
=
document
.
getElementById
(
'
searchMessage
'
);
if
(
this
.
status
==
204
)
{
if
(
this
.
status
==
204
)
{
console
.
log
(
'
Message posted!
'
)
console
.
log
(
'
Message posted!
'
)
errorMessage
.
innerHTML
=
""
;
errorMessage
.
innerHTML
=
""
;
if
(
curr_page
!=
null
&&
curr_page
!=
""
)
if
(
curr_page
!=
null
&&
curr_page
!=
""
)
...
@@ -365,28 +325,20 @@ postMessageRequest.onreadystatechange = function () {
...
@@ -365,28 +325,20 @@ postMessageRequest.onreadystatechange = function () {
}
}
}
}
};
};
// - - - - - Init functions - - - - - //
// - - - - - Init functions - - - - - //
// Function for displaying the right view
// Function for displaying the right view
displayView
=
function
(){
displayView
=
function
()
{
if
(
localStorage
.
getItem
(
"
currentUser
"
)
==
""
)
if
(
localStorage
.
getItem
(
"
currentUser
"
)
==
""
)
windowDiv
.
innerHTML
=
welcomeDiv
.
innerHTML
;
windowDiv
.
innerHTML
=
welcomeDiv
.
innerHTML
;
else
else
windowDiv
.
innerHTML
=
profileDiv
.
innerHTML
;
windowDiv
.
innerHTML
=
profileDiv
.
innerHTML
;
};
};
// - - - - - The function when page loads - - - - - //
// - - - - - The function when page loads - - - - - //
window
.
onload
=
function
()
{
window
.
onload
=
function
()
{
// Delete when done - används för att hoppa tillbaka till rtt view under utveckling
// Delete when done - används för att hoppa tillbaka till rtt view under utveckling
// localStorage.setItem("currentUser", "");
// localStorage.setItem("currentUser", "");
// localStorage.setItem("homeEmail", "");
// localStorage.setItem("homeEmail", "");
// localStorage.setItem("browseEmail", "");
// localStorage.setItem("browseEmail", "");
// All key/value pairs stored in out localStorage
// All key/value pairs stored in out localStorage
// If first time? check this:
// If first time? check this:
if
(
localStorage
.
getItem
(
"
homeEmail
"
)
==
null
)
if
(
localStorage
.
getItem
(
"
homeEmail
"
)
==
null
)
...
@@ -395,31 +347,25 @@ window.onload = function () {
...
@@ -395,31 +347,25 @@ window.onload = function () {
localStorage
.
setItem
(
"
browseEmail
"
,
""
);
localStorage
.
setItem
(
"
browseEmail
"
,
""
);
if
(
localStorage
.
getItem
(
"
currentUser
"
)
==
null
)
if
(
localStorage
.
getItem
(
"
currentUser
"
)
==
null
)
localStorage
.
setItem
(
"
currentUser
"
,
""
);
localStorage
.
setItem
(
"
currentUser
"
,
""
);
// Initialize div objects (global variables)
// Initialize div objects (global variables)
welcomeDiv
=
document
.
getElementById
(
"
welcomeview
"
);
welcomeDiv
=
document
.
getElementById
(
"
welcomeview
"
);
profileDiv
=
document
.
getElementById
(
"
profileview
"
);
profileDiv
=
document
.
getElementById
(
"
profileview
"
);
windowDiv
=
document
.
getElementById
(
"
windowDiv
"
);
windowDiv
=
document
.
getElementById
(
"
windowDiv
"
);
if
(
localStorage
.
getItem
(
"
currentUser
"
)
!=
""
)
{
//if logged in
if
(
localStorage
.
getItem
(
"
currentUser
"
)
!=
""
)
{
//if logged in
connectWithSocket
();
connectWithSocket
(
0
);
}
}
else
{
else
{
// Set correct view depending on if someone is signed in or not
// Set correct view depending on if someone is signed in or not
displayView
();
displayView
();
}
}
};
};
// Function for setting user details, either for yourself or for some other user
// Function for setting user details, either for yourself or for some other user
function
setUserDetails
(
who
)
{
function
setUserDetails
(
who
)
{
// "who" could be either home or browse, this way know which info we are displaying and where
// "who" could be either home or browse, this way know which info we are displaying and where
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
if
(
token
!=
null
&&
token
!=
""
){
if
(
token
!=
null
&&
token
!=
""
)
{
let
userTable
=
document
.
getElementById
(
who
+
"
UserInfo
"
);
let
userTable
=
document
.
getElementById
(
who
+
"
UserInfo
"
);
let
email
=
localStorage
.
getItem
(
who
+
"
Email
"
);
let
email
=
localStorage
.
getItem
(
who
+
"
Email
"
);
// Display my own info
// Display my own info
if
(
who
==
'
home
'
)
{
if
(
who
==
'
home
'
)
{
// Send request to server about receiving the info
// Send request to server about receiving the info
...
@@ -428,7 +374,6 @@ function setUserDetails(who) {
...
@@ -428,7 +374,6 @@ function setUserDetails(who) {
dataByTokenRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
dataByTokenRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
dataByTokenRequest
.
send
();
dataByTokenRequest
.
send
();
}
}
// Display the info about the searched user
// Display the info about the searched user
else
if
(
who
==
'
browse
'
&&
email
!=
null
&&
email
!=
""
)
{
else
if
(
who
==
'
browse
'
&&
email
!=
null
&&
email
!=
""
)
{
// Send request to server about receiving the info
// Send request to server about receiving the info
...
@@ -440,11 +385,8 @@ function setUserDetails(who) {
...
@@ -440,11 +385,8 @@ function setUserDetails(who) {
}
}
return
false
;
return
false
;
}
}
// - - - - - Sign Up/In/Out - - - - - //
// - - - - - Sign Up/In/Out - - - - - //
function
sign_up
()
{
function
sign_up
()
{
let
form
=
document
.
getElementById
(
"
signup_form
"
);
let
form
=
document
.
getElementById
(
"
signup_form
"
);
let
errorMess
=
document
.
getElementById
(
"
signUpError
"
);
let
errorMess
=
document
.
getElementById
(
"
signUpError
"
);
let
user
=
{
let
user
=
{
...
@@ -457,15 +399,12 @@ function sign_up() {
...
@@ -457,15 +399,12 @@ function sign_up() {
password
:
form
[
6
].
value
,
password
:
form
[
6
].
value
,
repeat_password
:
form
[
7
].
value
repeat_password
:
form
[
7
].
value
};
};
// Error checks
// Error checks
if
(
user
.
password
.
length
<
minPassLength
)
if
(
user
.
password
.
length
<
minPassLength
)
errorMess
.
innerHTML
=
"
Password's length is too short
"
;
errorMess
.
innerHTML
=
"
Password's length is too short
"
;
else
if
(
user
.
password
!=
user
.
repeat_password
)
else
if
(
user
.
password
!=
user
.
repeat_password
)
errorMess
.
innerHTML
=
"
Passwords does not match
"
;
errorMess
.
innerHTML
=
"
Passwords does not match
"
;
else
{
else
{
// Sending sign_ou request to "server"
// Sending sign_ou request to "server"
signUpRequest
.
open
(
"
POST
"
,
url
+
"
sign_up
"
,
true
);
signUpRequest
.
open
(
"
POST
"
,
url
+
"
sign_up
"
,
true
);
signUpRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
signUpRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
...
@@ -473,44 +412,34 @@ function sign_up() {
...
@@ -473,44 +412,34 @@ function sign_up() {
}
}
return
false
;
return
false
;
}
}
function
sign_in
()
{
function
sign_in
()
{
let
form
=
document
.
getElementById
(
"
sign_in_form
"
);
let
form
=
document
.
getElementById
(
"
sign_in_form
"
);
let
email
=
form
[
0
].
value
;
let
email
=
form
[
0
].
value
;
let
password
=
form
[
1
].
value
;
let
password
=
form
[
1
].
value
;
let
errorMess
=
document
.
getElementById
(
"
error
"
);
let
errorMess
=
document
.
getElementById
(
"
error
"
);
// Error checks
// Error checks
if
(
password
.
length
<
minPassLength
)
if
(
password
.
length
<
minPassLength
)
errorMess
.
innerHTML
=
"
Password's length is too short
"
;
errorMess
.
innerHTML
=
"
Password's length is too short
"
;
else
{
else
{
// Sending sign_in request to "server"
// Sending sign_in request to "server"
signInRequest
.
open
(
"
POST
"
,
url
+
"
sign_in
"
,
true
);
signInRequest
.
open
(
"
POST
"
,
url
+
"
sign_in
"
,
true
);
signInRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
signInRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
signInRequest
.
send
(
JSON
.
stringify
({
email
:
email
,
password
:
password
}));
signInRequest
.
send
(
JSON
.
stringify
({
email
:
email
,
password
:
password
}));
}
}
return
false
;
return
false
;
}
}
function
sign_out
()
{
function
sign_out
(){
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
// Sending sign_out request to "server"
// Sending sign_out request to "server"
signOutRequest
.
open
(
"
POST
"
,
url
+
"
sign_out
"
,
true
);
signOutRequest
.
open
(
"
POST
"
,
url
+
"
sign_out
"
,
true
);
signOutRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
signOutRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
signOutRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
signOutRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
signOutRequest
.
send
();
signOutRequest
.
send
();
return
false
;
return
false
;
}
}
// - - - - - Changing tabs - - - - - //
// - - - - - Changing tabs - - - - - //
function
showPage
(
ourEvent
,
name
)
{
function
showPage
(
ourEvent
,
name
)
{
// - - Fixing the tabs - - //
// - - Fixing the tabs - - //
// Unselect all
// Unselect all
let
tabcontent
=
document
.
getElementById
(
"
tabDiv
"
);
let
tabcontent
=
document
.
getElementById
(
"
tabDiv
"
);
...
@@ -520,8 +449,6 @@ function showPage(ourEvent, name) {
...
@@ -520,8 +449,6 @@ function showPage(ourEvent, name) {
// Select only the one we want
// Select only the one we want
let
div
=
ourEvent
.
target
;
let
div
=
ourEvent
.
target
;
div
.
style
.
backgroundColor
=
"
lightgreen
"
;
div
.
style
.
backgroundColor
=
"
lightgreen
"
;
// - - Fixing the content - - //
// - - Fixing the content - - //
// Unselect all
// Unselect all
let
allPages
=
document
.
getElementsByClassName
(
"
tabcontent
"
);
let
allPages
=
document
.
getElementsByClassName
(
"
tabcontent
"
);
...
@@ -531,22 +458,17 @@ function showPage(ourEvent, name) {
...
@@ -531,22 +458,17 @@ function showPage(ourEvent, name) {
// Select only the one we want
// Select only the one we want
let
selected_tab
=
document
.
getElementById
(
name
);
let
selected_tab
=
document
.
getElementById
(
name
);
selected_tab
.
style
.
display
=
"
block
"
;
selected_tab
.
style
.
display
=
"
block
"
;
return
false
;
return
false
;
}
}
// - - - - - Changing Password - - - - - //
// - - - - - Changing Password - - - - - //
//Function for changing password
//Function for changing password
function
change_password
(
ourEvent
){
function
change_password
(
ourEvent
)
{
let
old_pass
=
document
.
getElementById
(
"
old_password
"
).
value
;
let
old_pass
=
document
.
getElementById
(
"
old_password
"
).
value
;
let
new_pass
=
document
.
getElementById
(
"
new_password
"
).
value
;
let
new_pass
=
document
.
getElementById
(
"
new_password
"
).
value
;
let
confirm_pass
=
document
.
getElementById
(
"
confirm_pass
"
).
value
;
let
confirm_pass
=
document
.
getElementById
(
"
confirm_pass
"
).
value
;
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
error_text
=
document
.
getElementById
(
"
match_error
"
);
let
error_text
=
document
.
getElementById
(
"
match_error
"
);
// New password have to be entered twice, otherwise throw error
// New password have to be entered twice, otherwise throw error
if
(
new_pass
.
length
<
minPassLength
)
{
if
(
new_pass
.
length
<
minPassLength
)
{
error_text
.
innerHTML
=
"
New password too short
"
;
error_text
.
innerHTML
=
"
New password too short
"
;
...
@@ -558,47 +480,39 @@ function change_password(ourEvent){
...
@@ -558,47 +480,39 @@ function change_password(ourEvent){
ChangePassRequest
.
open
(
"
PUT
"
,
url
+
"
change_password
"
,
true
);
ChangePassRequest
.
open
(
"
PUT
"
,
url
+
"
change_password
"
,
true
);
ChangePassRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
ChangePassRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
ChangePassRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
ChangePassRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
ChangePassRequest
.
send
(
JSON
.
stringify
({
old_password
:
old_pass
,
new_password
:
new_pass
}));
ChangePassRequest
.
send
(
JSON
.
stringify
({
old_password
:
old_pass
,
new_password
:
new_pass
}));
}
}
return
false
;
return
false
;
}
}
// - - - - - Changing the wall - - - - - //
// - - - - - Changing the wall - - - - - //
// Submit text button
// Submit text button
function
updateWall
(
who
){
function
updateWall
(
who
)
{
// "who" could be either home or browse, this way know which wall to write on
// "who" could be either home or browse, this way know which wall to write on
let
messageToWall
=
document
.
getElementById
(
who
+
'
Textarea
'
).
value
;
let
messageToWall
=
document
.
getElementById
(
who
+
'
Textarea
'
).
value
;
let
errorMessage
=
document
.
getElementById
(
'
searchMessage
'
);
let
errorMessage
=
document
.
getElementById
(
'
searchMessage
'
);
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
email
=
localStorage
.
getItem
(
who
+
"
Email
"
);
let
email
=
localStorage
.
getItem
(
who
+
"
Email
"
);
curr_page
=
who
;
curr_page
=
who
;
if
(
email
!=
null
&&
email
!=
""
&&
token
!=
null
&&
token
!=
""
)
{
if
(
email
!=
null
&&
email
!=
""
&&
token
!=
null
&&
token
!=
""
)
{
// Send user's message to the server
// Send user's message to the server
postMessageRequest
.
open
(
"
POST
"
,
url
+
"
post
"
,
true
);
postMessageRequest
.
open
(
"
POST
"
,
url
+
"
post
"
,
true
);
postMessageRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
postMessageRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
postMessageRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
postMessageRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
postMessageRequest
.
send
(
JSON
.
stringify
({
email
:
email
,
message
:
messageToWall
}));
postMessageRequest
.
send
(
JSON
.
stringify
({
email
:
email
,
message
:
messageToWall
}));
errorMessage
.
innerHTML
=
""
;
errorMessage
.
innerHTML
=
""
;
}
}
else
{
else
{
errorMessage
.
innerHTML
=
"
No user selected to write to
"
;
errorMessage
.
innerHTML
=
"
No user selected to write to
"
;
}
}
// Clear the text area the user just wrote in
// Clear the text area the user just wrote in
document
.
getElementById
(
who
+
'
Textarea
'
).
value
=
""
;
document
.
getElementById
(
who
+
'
Textarea
'
).
value
=
""
;
return
false
;
return
false
;
}
}
// Reload button
// Reload button
function
reloadWall
(
who
)
{
function
reloadWall
(
who
)
{
// "who" could be either home or browse, this way know which wall to load to
// "who" could be either home or browse, this way know which wall to load to
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
email
=
localStorage
.
getItem
(
who
+
"
Email
"
);
let
email
=
localStorage
.
getItem
(
who
+
"
Email
"
);
// If wanting messages from my own wall
// If wanting messages from my own wall
if
(
who
==
'
home
'
)
{
if
(
who
==
'
home
'
)
{
// Send request to server about receiving the info
// Send request to server about receiving the info
...
@@ -607,7 +521,6 @@ function reloadWall(who) {
...
@@ -607,7 +521,6 @@ function reloadWall(who) {
messagesByTokenRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
messagesByTokenRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
messagesByTokenRequest
.
send
();
messagesByTokenRequest
.
send
();
}
}
// If wanting messages from another's wall
// If wanting messages from another's wall
else
if
(
who
==
'
browse
'
&&
email
!=
null
&&
email
!=
""
)
{
else
if
(
who
==
'
browse
'
&&
email
!=
null
&&
email
!=
""
)
{
// Send request to server about receiving the info
// Send request to server about receiving the info
...
@@ -615,24 +528,19 @@ function reloadWall(who) {
...
@@ -615,24 +528,19 @@ function reloadWall(who) {
messagesByEmailRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
messagesByEmailRequest
.
setRequestHeader
(
"
Content-Type
"
,
"
application/json;charset=UTF-8
"
);
messagesByEmailRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
messagesByEmailRequest
.
setRequestHeader
(
"
Authorization
"
,
token
);
messagesByEmailRequest
.
send
();
messagesByEmailRequest
.
send
();
}
}
return
false
;
return
false
;
}
}
// Changing another's wall
// Changing another's wall
function
searchAnotherUser
(
event
){
function
searchAnotherUser
(
event
)
{
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
let
token
=
localStorage
.
getItem
(
"
currentUser
"
);
// Reseting the error messages
// Reseting the error messages
document
.
getElementById
(
'
searchMessage
'
).
innerHTML
=
""
;
document
.
getElementById
(
'
searchMessage
'
).
innerHTML
=
""
;
if
(
token
!=
""
)
{
if
(
token
!=
""
)
{
// Store the searched email in localStorage so that it can be reached in "setUserDetails()"
// Store the searched email in localStorage so that it can be reached in "setUserDetails()"
let
email
=
event
.
target
[
"
searchInput
"
].
value
;
let
email
=
event
.
target
[
"
searchInput
"
].
value
;
localStorage
.
setItem
(
"
browseEmail
"
,
email
);
localStorage
.
setItem
(
"
browseEmail
"
,
email
);
setUserDetails
(
"
browse
"
);
setUserDetails
(
"
browse
"
);
}
}
return
false
;
return
false
;
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment