From a255155c1b1b2725e7ce0a3cabce5f8ae8776b4d Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Thu, 17 Nov 2022 12:46:10 +0300 Subject: auth: Define the `User` type * gn3/auth/authentication.py -> gn3/auth/authentication/__init__.py: Convert module to package * gn3/auth/authentication/users.py: Define the `User` type --- gn3/auth/authentication.py | 24 ------------------------ gn3/auth/authentication/__init__.py | 24 ++++++++++++++++++++++++ gn3/auth/authentication/users.py | 9 +++++++++ 3 files changed, 33 insertions(+), 24 deletions(-) delete mode 100644 gn3/auth/authentication.py create mode 100644 gn3/auth/authentication/__init__.py create mode 100644 gn3/auth/authentication/users.py (limited to 'gn3') diff --git a/gn3/auth/authentication.py b/gn3/auth/authentication.py deleted file mode 100644 index 42ceacb..0000000 --- a/gn3/auth/authentication.py +++ /dev/null @@ -1,24 +0,0 @@ -"""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.user_id = user_credentials.user_id " - "WHERE users.email = :email"), - {"email": email}) - results = cursor.fetchall() - if len(results) == 0: - return False - - assert len(results) == 1, "Expected one row." - row = results[0] - return (email == row[0] and - bcrypt.checkpw(password.encode("utf-8"), row[1])) diff --git a/gn3/auth/authentication/__init__.py b/gn3/auth/authentication/__init__.py new file mode 100644 index 0000000..42ceacb --- /dev/null +++ b/gn3/auth/authentication/__init__.py @@ -0,0 +1,24 @@ +"""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.user_id = user_credentials.user_id " + "WHERE users.email = :email"), + {"email": email}) + results = cursor.fetchall() + if len(results) == 0: + return False + + assert len(results) == 1, "Expected one row." + row = results[0] + return (email == row[0] and + bcrypt.checkpw(password.encode("utf-8"), row[1])) diff --git a/gn3/auth/authentication/users.py b/gn3/auth/authentication/users.py new file mode 100644 index 0000000..4854d18 --- /dev/null +++ b/gn3/auth/authentication/users.py @@ -0,0 +1,9 @@ +"""User-specific code and data structures.""" +from uuid import UUID +from typing import NamedTuple + +class User(NamedTuple): + """Class representing a user.""" + user_id: UUID + email: str + name: str -- cgit v1.2.3