diff options
author | Frederick Muriuki Muriithi | 2022-12-15 08:28:03 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2022-12-21 06:13:41 +0300 |
commit | 9fc7ab5701aaef66ec6fc47e10a2b6421e23f83f (patch) | |
tree | 6840009eedee60216efafddc39b7d2063d9a606d /gn3/auth/authentication/users.py | |
parent | daa3a9cade431b21bbc48b690c16dcb8746f3dce (diff) | |
download | genenetwork3-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.py | 14 |
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 |