diff --git a/Lab2/__pycache__/database_helper.cpython-311.pyc b/Lab2/__pycache__/database_helper.cpython-311.pyc index b55baac245e748f252af404f47fbf0d0dba6711e..100e86dddec4b61d24a4b59b06594d316c8cdfae 100644 Binary files a/Lab2/__pycache__/database_helper.cpython-311.pyc and b/Lab2/__pycache__/database_helper.cpython-311.pyc differ diff --git a/Lab2/database.db b/Lab2/database.db index 5d50e4d8eb86358998d1080012be4916b4a8829f..90122c90f888e039f3d560758c37b102b1d369e3 100644 Binary files a/Lab2/database.db and b/Lab2/database.db differ diff --git a/Lab2/database.db-journal b/Lab2/database.db-journal new file mode 100644 index 0000000000000000000000000000000000000000..ba0f47b6b76fa79c14766425157136767b110c6d Binary files /dev/null and b/Lab2/database.db-journal differ diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py index 66853cf3a74ce0253651396574ddd3173ef02fe5..a4153f6a4b4fc53920197d7d2ab893096e35d1f3 100644 --- a/Lab2/database_helper.py +++ b/Lab2/database_helper.py @@ -7,13 +7,20 @@ def get_db(): db = getattr(g, 'db', None) if db is None: db = g.db = sqlite3.connect(DATABASE_URI) - return db +def create_database(): + conn = sqlite3.connect('database.db') + cursor = conn.cursor() + with open('schema.sql', 'r') as file: + sql = file.read() + cursor.executescript(sql) + conn.commit() + conn.close() 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]); + get_db().execute("INSERT into USERS values(?, ?, ?, ?, ?, ?, ?);", [firstname, familyname, gender, city, country, email, password]) get_db().commit() return True except: @@ -25,3 +32,15 @@ def clean_db(): return True except: return False + +def authenticate(email, password): + try: + 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 + \ No newline at end of file diff --git a/Lab2/server.py b/Lab2/server.py index 0f2b6708536ab16eff13e4613b63154c3afa9b08..9e0bc2dad439fe8d0c85321a2ce56d96baba2b96 100644 --- a/Lab2/server.py +++ b/Lab2/server.py @@ -1,9 +1,13 @@ from flask import Flask, request, jsonify import database_helper +import random +import string app = Flask(__name__) +#database_helper.create_database() + @app.route("/", methods = ['GET']) def hello_world(): return "<p>Hello, Lab_2!</p>", 200 @@ -34,7 +38,19 @@ def sign_up(): else: return "test", 400 - +@app.route("/sign_in", methods = ['POST']) +def sign_in(): + data = request.get_json() + if('email' in data + and 'password' in data): + if not database_helper.authenticate(data['email'], data['password']): + return "", 401 + else : + token = generate_token() + print(token) + return token, 200 + else: + return "", 400 @app.route("/delete", methods = ['GET']) def delete(): @@ -45,6 +61,10 @@ def delete(): return "", 409 +def generate_token(): + characters = string.ascii_letters + string.digits + return ''.join(random.choices(characters, k=36)) + if __name__ == '__main__': app.debug = True app.run()