diff --git a/Lab2/__pycache__/database_helper.cpython-310.pyc b/Lab2/__pycache__/database_helper.cpython-310.pyc index d37e5e85171172afe6ad9b5abdbe258c244d477d..3ebbc7beb6dff05b871c1ac6c6b345a31a21ff7e 100644 Binary files a/Lab2/__pycache__/database_helper.cpython-310.pyc and b/Lab2/__pycache__/database_helper.cpython-310.pyc differ diff --git a/Lab2/__pycache__/server.cpython-310.pyc b/Lab2/__pycache__/server.cpython-310.pyc index 643957fffe8a2fd38c2dbc2da828d3507eca7cf5..d9221492281ddef57ac6629235aaeb7ff1bc2918 100644 Binary files a/Lab2/__pycache__/server.cpython-310.pyc and b/Lab2/__pycache__/server.cpython-310.pyc differ diff --git a/Lab2/database.db b/Lab2/database.db index 076379e3f40ce91f451625cb3b7fea57713a1c68..df5370f416fc0b03b3b7453c4ffa0a2129de1920 100644 Binary files a/Lab2/database.db and b/Lab2/database.db differ diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py index a4153f6a4b4fc53920197d7d2ab893096e35d1f3..c6047fc703ff7de4b3df1ed319a64b8e5830affb 100644 --- a/Lab2/database_helper.py +++ b/Lab2/database_helper.py @@ -9,6 +9,7 @@ def get_db(): db = g.db = sqlite3.connect(DATABASE_URI) return db + def create_database(): conn = sqlite3.connect('database.db') cursor = conn.cursor() @@ -18,6 +19,16 @@ def create_database(): conn.commit() conn.close() + +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]) @@ -26,21 +37,38 @@ def create_user(email, password, firstname, familyname, gender, city, country): except: return False -def clean_db(): + +def authenticate(email, password): try: - get_db().execute("DROP table USERS;") + cursor = get_db().cursor() + cursor.execute("SELECT * FROM USERS WHERE EMAIL=? AND PASSWORD=?;", [email, password]) + user = cursor.fetchone() + if user: + return True + return False + except: + return False + + +def log_in(token, email): + try: + get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email]) + get_db().commit() return True except: return False -def authenticate(email, password): + + +def log_out(token): try: cursor = get_db().cursor() - cursor.execute("SELECT * FROM USERS WHERE EMAIL=? AND PASSWORD=?;", [email, password]) + cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token]) user = cursor.fetchone() if user: + cursor.execute("DELETE FROM LOGGEDINUSERS WHERE TOKEN=?;", [token]) + get_db().commit() return True return False except: return False - \ No newline at end of file diff --git a/Lab2/schema.sql b/Lab2/schema.sql index 9f6c426264f830a4ae354985724eefc000dfa322..446b1f8eb630a2eba367730215e1fc1978be035c 100644 --- a/Lab2/schema.sql +++ b/Lab2/schema.sql @@ -4,7 +4,13 @@ CREATE TABLE USERS( GENDER VARCHAR(6) NOT NULL, CITY VARCHAR(20) NOT NULL, COUNTRY VARCHAR(20) NOT NULL, - EMAIL VARCHAR(20) NOT NULL, + EMAIL VARCHAR(30) NOT NULL, PASSWORD VARCHAR(20) NOT NULL, PRIMARY KEY (EMAIL) ); + +CREATE TABLE LOGGEDINUSERS( + TOKEN VARCHAR(40) NOT NULL, + EMAIL VARCHAR(30) NOT NULL, + PRIMARY KEY (EMAIl) +) diff --git a/Lab2/server.py b/Lab2/server.py index 9e0bc2dad439fe8d0c85321a2ce56d96baba2b96..edf405a79ee56cdafb7ddb531990e9086cbb6f51 100644 --- a/Lab2/server.py +++ b/Lab2/server.py @@ -36,7 +36,7 @@ def sign_up(): else: return "", 400 else: - return "test", 400 + return "", 400 @app.route("/sign_in", methods = ['POST']) def sign_in(): @@ -47,11 +47,25 @@ def sign_in(): return "", 401 else : token = generate_token() - print(token) - return token, 200 + if database_helper.log_in(token, data['email']): + return token, 201 + else: + return "", 409 + else: + return "", 400 + +@app.route("/sign_out", methods = ['POST']) +def sign_out(): + data = request.get_json() + if('token' in data): + if database_helper.log_out(data['token']): + return "", 200 + else: + return "", 401 else: return "", 400 + @app.route("/delete", methods = ['GET']) def delete(): resp = database_helper.clean_db()