From d775723b7b11afc7e6cb8497fac404497c0f926e Mon Sep 17 00:00:00 2001 From: JustTemmie <47639983+JustTemmie@users.noreply.github.com> Date: Sun, 13 Jul 2025 16:20:03 +0200 Subject: [PATCH] fix: require username, instead of username OR email --- src/api/v1/me/friends/mod.rs | 4 ++-- src/utils.rs | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/api/v1/me/friends/mod.rs b/src/api/v1/me/friends/mod.rs index 5980adc..8de0a5d 100644 --- a/src/api/v1/me/friends/mod.rs +++ b/src/api/v1/me/friends/mod.rs @@ -8,7 +8,7 @@ use crate::{ api::v1::auth::check_access_token, error::Error, objects::Me, - utils::{get_auth_header, global_checks, user_uuid_from_identifier}, + utils::{get_auth_header, global_checks, user_uuid_from_username} }; /// Returns a list of users that are your friends @@ -73,7 +73,7 @@ pub async fn post( let me = Me::get(&mut conn, uuid).await?; - let target_uuid = user_uuid_from_identifier(&mut conn, &json.username).await?; + let target_uuid = user_uuid_from_username(&mut conn, &json.username).await?; me.add_friend(&mut conn, target_uuid).await?; Ok(HttpResponse::Ok().finish()) diff --git a/src/utils.rs b/src/utils.rs index 7a5581a..01a7f0d 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -168,6 +168,26 @@ pub async fn user_uuid_from_identifier( } } +pub async fn user_uuid_from_username( + conn: &mut Conn, + identifier: &String, +) -> Result { + if USERNAME_REGEX.is_match(identifier) { + use users::dsl; + let user_uuid = dsl::users + .filter(dsl::username.eq(identifier)) + .select(dsl::uuid) + .get_result(conn) + .await?; + + Ok(user_uuid) + } else { + Err(Error::BadRequest( + "Please provide a valid username".to_string(), + )) + } +} + pub async fn global_checks(data: &Data, user_uuid: Uuid) -> Result<(), Error> { if data.config.instance.require_email_verification { let mut conn = data.pool.get().await?;