diff --git a/.gitignore b/.gitignore
index d59608291516e27408e63474667374da7be39e01..243e6e3666139aa1a8c94d6728d26538ae7b4f5c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
-lab2/venv/
-database.db
\ No newline at end of file
+database.db
+__pycache__
+venv
diff --git a/lab2/database_helper.py b/lab2/database_helper.py
index 97435368f87251116fed4253a1f76020719bcd22..1187a2fa1537bd7bbe525d33e6db96110db2d37a 100644
--- a/lab2/database_helper.py
+++ b/lab2/database_helper.py
@@ -4,24 +4,28 @@ con = sqlite3.connect("database.db")
 
 cur = con.cursor()
 
-def get_token_from_email(email):
-    res = cur.execute(f"SELECT token FROM logged_in_users WHERE email='{email}'")
+
+def get_token(email):
+    res = cur.execute(f"SELECT token FROM logged_in_users WHERE email=?", (email,))
     return res.fetchone()
 
+
 def get_password(email):
 
-    res = cur.execute(f"SELECT password_hash FROM user_data WHERE email='{email}'")
+    res = cur.execute("SELECT password_hash FROM user_data WHERE email=?", (email,))
     
     return res.fetchone()
 
 
 def update_logged_in_users(email, token):
 
-    cur.execute(f"Insert INTO logged_in_users")
-    
+    cur.execute("Insert INTO logged_in_users VALUES (?,?)", (email,token))
 
 
 def get_user_data(email):
-    data = cur.execute(f"SELECT * FROM user_data WHERE email='{email}'")
+    data = cur.execute("SELECT * FROM user_data WHERE email=?", (email,))
     return data.fetchall()
 
+
+def create_user(email, pw_hash, fname, lname, gender, city, country):
+    cur.execute(f"Insert INTO user_data VALUES (?,?,?,?,?,?,?)", (email, pw_hash, fname, lname, gender, city, country))
\ No newline at end of file
diff --git a/lab2/schema.sql b/lab2/schema.sql
index 4059f4936dbe7c88a5dd68781d3d7a5ef25ed7e2..70b09b45139f4023a659e5899013295c145b88af 100644
--- a/lab2/schema.sql
+++ b/lab2/schema.sql
@@ -5,11 +5,6 @@ CREATE TABLE "logged_in_users" (
 	PRIMARY KEY("email")
 );
 
-CREATE TABLE "all_users" (
-    "email" TEXT,
-	PRIMARY KEY("email")
-);
-
 CREATE TABLE "user_data" (
 	"email"	TEXT,
 	"password_hash"	TEXT,
diff --git a/lab2/server.py b/lab2/server.py
index 1a10f7586d77945cc27bde114d59dea890f0116a..1445c1d4ec7391190b9b6087dd44a02e313f0524 100644
--- a/lab2/server.py
+++ b/lab2/server.py
@@ -1,7 +1,8 @@
 import random
 import hashlib
+import re
 
-from flask import Flask
+from flask import Flask, request
 
 import database_helper as dbh
 
@@ -14,11 +15,28 @@ def index():
     return 'Hello world!'
 
 
-@app.route('/signin')
+@app.route('/signin', methods=['POST'])
 def sign_in(email='test@gmail.com', password='123123123'):
     """
      Authenticate the username by the provided password.
     """
+
+
+    args = request.get_json()
+
+    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 False
+
+    if len(args['password']) < 8: return False
+
+
+
+    email = args['email']
+    password = args['password']
+    
+
     hashed_password = hashlib.sha256((password + email).encode()).hexdigest()
 
     database_password = dbh.get_password(email)
@@ -34,11 +52,35 @@ def sign_in(email='test@gmail.com', password='123123123'):
 
     return { "success": "false", "message": "Wrong username or password." }
 
-@app.route('/signup')
-def sign_up(jsonObj):
+@app.route('/signup', methods=['POST'])
+def sign_up():
     """
     Register a user in the database.
     """
+    args = request.get_json()
+
+
+    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['lastname'],
+        args['gender'],
+        args['city'],
+        args['country'],
+    )
+
+    return {"success": "true", "message": "Successfully created a new user."};
+        } else {
+        }
+
+      } else {
+      }   
     pass