Skip to content
Snippets Groups Projects
Commit 8c3db2d1 authored by MaximeOLIVA's avatar MaximeOLIVA
Browse files

fix lab2 and 3 FINAL

parent f96f7159
No related branches found
No related tags found
No related merge requests found
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -31,7 +31,7 @@ def authenticate(email, password):
return False
def log_in(token, email):
def addToLoggedInUsers(token, email):
try:
get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email])
get_db().commit()
......@@ -40,7 +40,7 @@ def log_in(token, email):
return False
def log_out(token):
def removeFromLoggedInUsers(token):
try:
cursor = get_db().cursor()
cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token])
......
......@@ -4,6 +4,7 @@ import database_helper
import random
import string
import json
import re
app = Flask(__name__)
......@@ -26,7 +27,8 @@ def sign_up():
and 'country' in data and isinstance(data['country'], str)
):
if(len(data['password']) > 5 and len(data['password']) < 21 and len(data['email']) > 0
and len(data['firstname']) > 0 and len(data['familyname']) > 0 and len(data['gender']) > 0
and is_valid_email(data['email']) and len(data['firstname']) > 0
and len(data['familyname']) > 0 and len(data['gender']) > 0
and len(data['city']) > 0 and len(data['country']) > 0 ):
resp = database_helper.create_user(data['email'], data['password'], data['firstname'],
data['familyname'], data['gender'], data['city'], data['country'])
......@@ -43,25 +45,28 @@ def sign_up():
@app.route("/users/sign_in", methods = ['POST'])
def sign_in():
data = request.get_json()
if('email' in data
and 'password' in data):
if('email' in data and is_valid_email(data['email'])
and 'password' in data and len(data['password']) > 5):
if not database_helper.authenticate(data['email'], data['password']):
return "", 401
else :
token = generate_token()
if database_helper.log_in(token, data['email']):
return token, 201
value = {
"token" : token
}
if database_helper.addToLoggedInUsers(token, data['email']):
return jsonify(value), 201
else:
return "", 409
else:
return "", 400
@app.route("/users/sign_out", methods = ['POST'])
@app.route("/users/sign_out", methods = ['PUT'])
def sign_out():
token = get_token_from_header()
if(token != 1):
if database_helper.log_out(token):
if database_helper.removeFromLoggedInUsers(token):
return "", 200
else:
return "", 401
......@@ -214,6 +219,10 @@ def generate_token():
characters = string.ascii_letters + string.digits
return ''.join(random.choices(characters, k=36))
def is_valid_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return re.match(pattern, email) is not None
if __name__ == '__main__':
app.debug = True
......
......@@ -10,15 +10,6 @@ def get_db():
return db
def clean_db():
try:
get_db().execute("DROP table USERS;")
get_db().execute("DROP table LOGGEDINUSERS;")
return True
except:
return False
def create_user(email, password, firstname, familyname, gender, city, country):
try:
get_db().execute("INSERT into USERS values(?, ?, ?, ?, ?, ?, ?);", [firstname, familyname, gender, city, country, email, password])
......@@ -40,7 +31,7 @@ def authenticate(email, password):
return False
def log_in(token, email):
def addToLoggedInUsers(token, email):
try:
get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email])
get_db().commit()
......@@ -49,7 +40,7 @@ def log_in(token, email):
return False
def log_out(token):
def removeFromLoggedInUsers(token):
try:
cursor = get_db().cursor()
cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token])
......
......@@ -4,14 +4,13 @@ import database_helper
import random
import string
import json
import re
app = Flask(__name__)
@app.route("/", methods = ['GET'])
def hello_world():
return app.send_static_file("client.html"), 200
return "<p>Hello, Lab_2!</p>", 200
@app.route("/users/sign_up", methods = ['POST'])
......@@ -26,7 +25,8 @@ def sign_up():
and 'country' in data and isinstance(data['country'], str)
):
if(len(data['password']) > 5 and len(data['password']) < 21 and len(data['email']) > 0
and len(data['firstname']) > 0 and len(data['familyname']) > 0 and len(data['gender']) > 0
and is_valid_email(data['email']) and len(data['firstname']) > 0
and len(data['familyname']) > 0 and len(data['gender']) > 0
and len(data['city']) > 0 and len(data['country']) > 0 ):
resp = database_helper.create_user(data['email'], data['password'], data['firstname'],
data['familyname'], data['gender'], data['city'], data['country'])
......@@ -43,8 +43,8 @@ def sign_up():
@app.route("/users/sign_in", methods = ['POST'])
def sign_in():
data = request.get_json()
if('email' in data
and 'password' in data):
if('email' in data and is_valid_email(data['email'])
and 'password' in data and len(data['password']) > 5):
if not database_helper.authenticate(data['email'], data['password']):
return "", 401
else :
......@@ -52,7 +52,7 @@ def sign_in():
value = {
"token" : token
}
if database_helper.log_in(token, data['email']):
if database_helper.addToLoggedInUsers(token, data['email']):
return jsonify(value), 201
else:
return "", 409
......@@ -60,11 +60,11 @@ def sign_in():
return "", 400
@app.route("/users/sign_out", methods = ['POST'])
@app.route("/users/sign_out", methods = ['PUT'])
def sign_out():
token = get_token_from_header()
if(token != 1):
if database_helper.log_out(token):
if database_helper.removeFromLoggedInUsers(token):
return "", 200
else:
return "", 401
......@@ -217,6 +217,10 @@ def generate_token():
characters = string.ascii_letters + string.digits
return ''.join(random.choices(characters, k=36))
def is_valid_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return re.match(pattern, email) is not None
if __name__ == '__main__':
app.debug = True
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment