Newer
Older
import random
import hashlib
import database_helper as dbh
@app.route('/')
def index():
return 'Hello world!'
@app.route('/signin', methods=['POST'])
"""
Authenticate the username by the provided password.
"""
if set(args) != {'email', 'password'}:
return {"success": "false", "message": "Form data missing or incorrect type."}
pw_hash = hashlib.sha256((args['password'] + args['email']).encode()).hexdigest()
# TODO: test if empty email and password will sign in
if pw_hash != dbh.get_password(args['email']):
return { "success": "false", "message": "Wrong username or password." }
letters = "abcdefghiklmnopqrstuvwwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
token = ''.join(letters[random.randint(0,len(letters)-1)] for _ in range(36))
dbh.update_logged_in_users(args['email'], token)
return { "success": "true", "message": "Successfully signed in.", "data": token }
@app.route('/signup', methods=['POST'])
def sign_up():
"""
Register a user in the database.
"""
if set(args) != {'email', 'password', 'firstname', 'familyname', 'gender', 'city', 'country'}:
return {"success": "false", "message": "Form data missing or incorrect type."}
if re.fullmatch(r'\w+@\w+.\w+', args['email']) is None:
return {"success": "false", "message": "Invalid email address."}
if len(args['password']) < 8:
return {"success": "false", "message": "Password needs to be at least 8 characters long."}
if dbh.get_user_data(args['email']) is not None:
return {"success": "false", "message": "User already exists."}
pw_hash = hashlib.sha256((args['password'] + args['email']).encode()).hexdigest()
dbh.create_user(
args['email'],
pw_hash,
args['firstname'],
args['gender'],
args['city'],
args['country'],
)
return {"success": "true", "message": "Successfully created a new user."}
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
def sign_out(token):
"""
Sign out a user from the system.
"""
return
def change_password(token, oldPassword, newPassword):
"""
Change the password of the current user to a new one.
"""
pass
def get_user_data_by_token(token):
#return email, firstname, familyname, gender, city, country
pass
def get_user_data_by_email(token, email):
#return email, firstname, familyname, gender, city, country
message = {"status": "", "message": "", "data": ""}
if dbh.get_token_from_email(email) == token:
data = dbh.get_user_data(email)
if data:
message["data"] = data
else:
"you are not logged in"
pass
def get_user_messages_by_token(token):
#return messages
pass
def get_user_messages_by_email(token, email):
#return messages
pass
def post_message(token, message, email):
pass