From 68c301c95cb8debe9edd0d523838bebe3c0dc006 Mon Sep 17 00:00:00 2001 From: cspark Date: Wed, 24 Apr 2024 15:06:28 +0100 Subject: [PATCH] Implement getting users public info --- main.py | 28 ++++++++++++++++++++++++++++ userHandler.py | 7 +++++++ 2 files changed, 35 insertions(+) diff --git a/main.py b/main.py index 5a6607c..9e457d6 100644 --- a/main.py +++ b/main.py @@ -134,6 +134,34 @@ def getuserIDByAuthToken(authToken: Annotated[str | None, Header()] = None): print(msg) return {"success": False, "authToken": None, "message": msg} +@app.get("/api/publicInfo/{userID}") +def getpublicInfo(userID: int): + try: + if userHandler.checkIDExistence(dbConnection, userID): + return { + "success": True, + "username": userHandler.getUserInfoByID(dbConnection, userID, "username"), + "firstName": userHandler.getUserInfoByID(dbConnection, userID, "firstname"), + "lastName": userHandler.getUserInfoByID(dbConnection, userID, "lastname"), + "message": "Get public info succeeded!" + } + else: + return { + "success": False, + "username": None, + "firstName": None, + "lastName": None, + "message": "Get public info failed! UserID provided does not exist." + } + except Exception as error: + return { + "success": False, + "username": None, + "firstName": None, + "lastName": None, + "message": "Get public info failed! Unexpected server error. " + repr(error) + } + # GET # /api/userByAuthToken diff --git a/userHandler.py b/userHandler.py index f0cf353..d3e8406 100644 --- a/userHandler.py +++ b/userHandler.py @@ -17,6 +17,9 @@ def createUser(dbConnection: psycopg2.extensions.connection, username: str, firs ['username', 'firstname', 'lastname', 'description', 'country', 'theme', 'accentcolor', 'passwordhash'], [username, firstName, lastName, description, country, theme, accentColor, securityHandler.hashPassword(password)]) +def checkIDExistence(dbConnection: psycopg2.extensions.connection, userID: int) -> bool: + return dbHandler.checkFieldValueExistence(dbConnection, "users", "id", userID) + def checkUserExistence(dbConnection: psycopg2.extensions.connection, username: str) -> bool: return dbHandler.checkFieldValueExistence(dbConnection, "users", "username", username) @@ -32,6 +35,10 @@ def getIDByUsername(dbConnection: psycopg2.extensions.connection, username: str) ) return int(dbHandler._execQuery(dbConnection, sanitisedQuery)[0][0]) +def getUserInfoByID(dbConnection: psycopg2.extensions.connection, userID: int, userField: str) -> str: + debugPrint("Attempting to get " + userField + " of userID " + str(userID) + "...") + return str(dbHandler.getFieldValueByID(dbConnection, "users", userID, userField)) + def getIDByAuthToken(dbConnection: psycopg2.extensions.connection, authToken: str) -> int: debugPrint("Attempting to get ID from authToken...") sanitisedQuery = sql.SQL("""