aboutsummaryrefslogtreecommitdiff
path: root/gn3/auth/authentication/users.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2022-12-15 08:28:03 +0300
committerFrederick Muriuki Muriithi2022-12-21 06:13:41 +0300
commit9fc7ab5701aaef66ec6fc47e10a2b6421e23f83f (patch)
tree6840009eedee60216efafddc39b7d2063d9a606d /gn3/auth/authentication/users.py
parentdaa3a9cade431b21bbc48b690c16dcb8746f3dce (diff)
downloadgenenetwork3-9fc7ab5701aaef66ec6fc47e10a2b6421e23f83f.tar.gz
Enable authentication
* gn3/auth/authentication/routes.py: Add `/login` endpoint and a function to validate the login credentials. * gn3/auth/authentication/users.py: add function to fetch user details by email
Diffstat (limited to 'gn3/auth/authentication/users.py')
-rw-r--r--gn3/auth/authentication/users.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/gn3/auth/authentication/users.py b/gn3/auth/authentication/users.py
index 4854d18..4adee61 100644
--- a/gn3/auth/authentication/users.py
+++ b/gn3/auth/authentication/users.py
@@ -2,8 +2,22 @@
from uuid import UUID
from typing import NamedTuple
+from pymonad.maybe import Just, Maybe, Nothing
+
+from gn3.auth import db
+
class User(NamedTuple):
"""Class representing a user."""
user_id: UUID
email: str
name: str
+
+def user_by_email(conn: db.DbConnection, email: str) -> Maybe:
+ with db.cursor(conn) as cursor:
+ cursor.execute("SELECT * FROM users WHERE email=?", (email,))
+ row = cursor.fetchone()
+
+ if row:
+ return Just(User(UUID(row["user_id"]), row["email"], row["name"]))
+
+ return Nothing