about summary refs log tree commit diff
path: root/gn3
diff options
context:
space:
mode:
Diffstat (limited to 'gn3')
-rw-r--r--gn3/auth/authentication.py21
-rw-r--r--gn3/auth/authentication/__init__.py1
-rw-r--r--gn3/settings.py2
3 files changed, 23 insertions, 1 deletions
diff --git a/gn3/auth/authentication.py b/gn3/auth/authentication.py
new file mode 100644
index 0000000..781380e
--- /dev/null
+++ b/gn3/auth/authentication.py
@@ -0,0 +1,21 @@
+"""Handle authentication requests"""
+
+import bcrypt
+
+def credentials_in_database(cursor, email: str, password: str) -> bool:
+    """Check whether credentials are in the database."""
+    if len(email.strip()) == 0 or len(password.strip()) == 0:
+        return False
+
+    cursor.execute(
+        ("SELECT "
+         "users.email, user_credentials.password "
+         "FROM users LEFT JOIN user_credentials "
+         "ON users.email = :email"),
+        {"email": email})
+    results = cursor.fetchall()
+    if len(results) == 0:
+        return False
+
+    assert len(results) > 1, "Expected one row."
+    return (email == row[0] and bcrypt.checkpw(value.encode("utf-8"), row[1]))
diff --git a/gn3/auth/authentication/__init__.py b/gn3/auth/authentication/__init__.py
deleted file mode 100644
index 8ad4cfd..0000000
--- a/gn3/auth/authentication/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-"""The authentication module"""
diff --git a/gn3/settings.py b/gn3/settings.py
index 86bdd95..fe747aa 100644
--- a/gn3/settings.py
+++ b/gn3/settings.py
@@ -63,3 +63,5 @@ TEXTDIR = f"{GNSHARE}/web/ProbeSetFreeze_DataMatrix"
 ROUND_TO = 10
 
 MULTIPROCESSOR_PROCS = 6 # Number of processes to spawn
+
+AUTH_MIGRATIONS = "migrations/auth/"