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): ...@@ -31,7 +31,7 @@ def authenticate(email, password):
return False return False
def log_in(token, email): def addToLoggedInUsers(token, email):
try: try:
get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email]) get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email])
get_db().commit() get_db().commit()
...@@ -40,7 +40,7 @@ def log_in(token, email): ...@@ -40,7 +40,7 @@ def log_in(token, email):
return False return False
def log_out(token): def removeFromLoggedInUsers(token):
try: try:
cursor = get_db().cursor() cursor = get_db().cursor()
cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token]) cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token])
......
...@@ -4,6 +4,7 @@ import database_helper ...@@ -4,6 +4,7 @@ import database_helper
import random import random
import string import string
import json import json
import re
app = Flask(__name__) app = Flask(__name__)
...@@ -26,7 +27,8 @@ def sign_up(): ...@@ -26,7 +27,8 @@ def sign_up():
and 'country' in data and isinstance(data['country'], str) and 'country' in data and isinstance(data['country'], str)
): ):
if(len(data['password']) > 5 and len(data['password']) < 21 and len(data['email']) > 0 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 ): and len(data['city']) > 0 and len(data['country']) > 0 ):
resp = database_helper.create_user(data['email'], data['password'], data['firstname'], resp = database_helper.create_user(data['email'], data['password'], data['firstname'],
data['familyname'], data['gender'], data['city'], data['country']) data['familyname'], data['gender'], data['city'], data['country'])
...@@ -43,25 +45,28 @@ def sign_up(): ...@@ -43,25 +45,28 @@ def sign_up():
@app.route("/users/sign_in", methods = ['POST']) @app.route("/users/sign_in", methods = ['POST'])
def sign_in(): def sign_in():
data = request.get_json() data = request.get_json()
if('email' in data if('email' in data and is_valid_email(data['email'])
and 'password' in data): and 'password' in data and len(data['password']) > 5):
if not database_helper.authenticate(data['email'], data['password']): if not database_helper.authenticate(data['email'], data['password']):
return "", 401 return "", 401
else : else :
token = generate_token() token = generate_token()
if database_helper.log_in(token, data['email']): value = {
return token, 201 "token" : token
}
if database_helper.addToLoggedInUsers(token, data['email']):
return jsonify(value), 201
else: else:
return "", 409 return "", 409
else: else:
return "", 400 return "", 400
@app.route("/users/sign_out", methods = ['POST']) @app.route("/users/sign_out", methods = ['PUT'])
def sign_out(): def sign_out():
token = get_token_from_header() token = get_token_from_header()
if(token != 1): if(token != 1):
if database_helper.log_out(token): if database_helper.removeFromLoggedInUsers(token):
return "", 200 return "", 200
else: else:
return "", 401 return "", 401
...@@ -214,6 +219,10 @@ def generate_token(): ...@@ -214,6 +219,10 @@ def generate_token():
characters = string.ascii_letters + string.digits characters = string.ascii_letters + string.digits
return ''.join(random.choices(characters, k=36)) 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__': if __name__ == '__main__':
app.debug = True app.debug = True
......
...@@ -10,15 +10,6 @@ def get_db(): ...@@ -10,15 +10,6 @@ def get_db():
return 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): def create_user(email, password, firstname, familyname, gender, city, country):
try: try:
get_db().execute("INSERT into USERS values(?, ?, ?, ?, ?, ?, ?);", [firstname, familyname, gender, city, country, email, password]) get_db().execute("INSERT into USERS values(?, ?, ?, ?, ?, ?, ?);", [firstname, familyname, gender, city, country, email, password])
...@@ -40,7 +31,7 @@ def authenticate(email, password): ...@@ -40,7 +31,7 @@ def authenticate(email, password):
return False return False
def log_in(token, email): def addToLoggedInUsers(token, email):
try: try:
get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email]) get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email])
get_db().commit() get_db().commit()
...@@ -49,7 +40,7 @@ def log_in(token, email): ...@@ -49,7 +40,7 @@ def log_in(token, email):
return False return False
def log_out(token): def removeFromLoggedInUsers(token):
try: try:
cursor = get_db().cursor() cursor = get_db().cursor()
cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token]) cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token])
......
...@@ -4,14 +4,13 @@ import database_helper ...@@ -4,14 +4,13 @@ import database_helper
import random import random
import string import string
import json import json
import re
app = Flask(__name__) app = Flask(__name__)
@app.route("/", methods = ['GET']) @app.route("/", methods = ['GET'])
def hello_world(): 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']) @app.route("/users/sign_up", methods = ['POST'])
...@@ -26,7 +25,8 @@ def sign_up(): ...@@ -26,7 +25,8 @@ def sign_up():
and 'country' in data and isinstance(data['country'], str) and 'country' in data and isinstance(data['country'], str)
): ):
if(len(data['password']) > 5 and len(data['password']) < 21 and len(data['email']) > 0 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 ): and len(data['city']) > 0 and len(data['country']) > 0 ):
resp = database_helper.create_user(data['email'], data['password'], data['firstname'], resp = database_helper.create_user(data['email'], data['password'], data['firstname'],
data['familyname'], data['gender'], data['city'], data['country']) data['familyname'], data['gender'], data['city'], data['country'])
...@@ -43,8 +43,8 @@ def sign_up(): ...@@ -43,8 +43,8 @@ def sign_up():
@app.route("/users/sign_in", methods = ['POST']) @app.route("/users/sign_in", methods = ['POST'])
def sign_in(): def sign_in():
data = request.get_json() data = request.get_json()
if('email' in data if('email' in data and is_valid_email(data['email'])
and 'password' in data): and 'password' in data and len(data['password']) > 5):
if not database_helper.authenticate(data['email'], data['password']): if not database_helper.authenticate(data['email'], data['password']):
return "", 401 return "", 401
else : else :
...@@ -52,7 +52,7 @@ def sign_in(): ...@@ -52,7 +52,7 @@ def sign_in():
value = { value = {
"token" : token "token" : token
} }
if database_helper.log_in(token, data['email']): if database_helper.addToLoggedInUsers(token, data['email']):
return jsonify(value), 201 return jsonify(value), 201
else: else:
return "", 409 return "", 409
...@@ -60,11 +60,11 @@ def sign_in(): ...@@ -60,11 +60,11 @@ def sign_in():
return "", 400 return "", 400
@app.route("/users/sign_out", methods = ['POST']) @app.route("/users/sign_out", methods = ['PUT'])
def sign_out(): def sign_out():
token = get_token_from_header() token = get_token_from_header()
if(token != 1): if(token != 1):
if database_helper.log_out(token): if database_helper.removeFromLoggedInUsers(token):
return "", 200 return "", 200
else: else:
return "", 401 return "", 401
...@@ -217,6 +217,10 @@ def generate_token(): ...@@ -217,6 +217,10 @@ def generate_token():
characters = string.ascii_letters + string.digits characters = string.ascii_letters + string.digits
return ''.join(random.choices(characters, k=36)) 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__': if __name__ == '__main__':
app.debug = True app.debug = True
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment