From ce0c5032ba3b5ef6d5462edc2f96169fd24dbfe8 Mon Sep 17 00:00:00 2001 From: BloxerHD018 Date: Thu, 14 Aug 2025 18:46:19 +0100 Subject: [PATCH 1/5] Feat: Allow Deleting Account via JSON API --- src/json_api/users/delete.rs | 23 +++++++++++++++++++++++ src/json_api/users/mod.rs | 3 ++- src/main.rs | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/json_api/users/delete.rs diff --git a/src/json_api/users/delete.rs b/src/json_api/users/delete.rs new file mode 100644 index 0000000..b58cbce --- /dev/null +++ b/src/json_api/users/delete.rs @@ -0,0 +1,23 @@ +use crate::Pool; +use crate::account::account::{Auth, User}; +use rocket::http::Status; +use rocket::{State, get}; + +#[get("/api/v2/users/@me/delete")] +pub async fn delete_account(pool: &State, auth: Auth) -> Result<(), Status> { + let pool = pool.inner(); + let user: User = auth.into(); + + let result = sqlx::query!( + "DELETE FROM users WHERE username = $1", + user.username + ).execute(pool) + .await + .map_err(|_| Status::InternalServerError)?; + + if result.rows_affected() == 0 { // Account doesn't exist + Err(Status::NotFound) + } else { // Account existed and was deleted + Ok(()) + } +} diff --git a/src/json_api/users/mod.rs b/src/json_api/users/mod.rs index 34c6950..b284f7e 100644 --- a/src/json_api/users/mod.rs +++ b/src/json_api/users/mod.rs @@ -1,2 +1,3 @@ pub mod profile; -pub mod mii; \ No newline at end of file +pub mod mii; +pub mod delete; \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index b99b164..0c16943 100644 --- a/src/main.rs +++ b/src/main.rs @@ -151,6 +151,7 @@ async fn launch() -> _ { json_api::oauth::generate_token::generate_token, json_api::users::profile::get_own_profile, json_api::users::mii::get_mii_data_by_pid, + json_api::users::delete::delete_account, papi::login::login, papi::user::get_user, nnid::people::thing, From bbd3309c5094d9b049567b15671f739e5e0d2bef Mon Sep 17 00:00:00 2001 From: BloxerHD018 Date: Tue, 4 Nov 2025 17:23:05 +0000 Subject: [PATCH 2/5] Update sqlx Cache for Account Deletion Request --- ...8de08cff5a05f04c0a1a5a1703eaf975a216be6a75.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .sqlx/query-33c4cb3bb1675de38c7c438de08cff5a05f04c0a1a5a1703eaf975a216be6a75.json diff --git a/.sqlx/query-33c4cb3bb1675de38c7c438de08cff5a05f04c0a1a5a1703eaf975a216be6a75.json b/.sqlx/query-33c4cb3bb1675de38c7c438de08cff5a05f04c0a1a5a1703eaf975a216be6a75.json new file mode 100644 index 0000000..2c482ad --- /dev/null +++ b/.sqlx/query-33c4cb3bb1675de38c7c438de08cff5a05f04c0a1a5a1703eaf975a216be6a75.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM users WHERE username = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [] + }, + "hash": "33c4cb3bb1675de38c7c438de08cff5a05f04c0a1a5a1703eaf975a216be6a75" +} From 8750928014f601a2ad8c61a50711431fb8dc9c2d Mon Sep 17 00:00:00 2001 From: BloxerHD018 Date: Tue, 4 Nov 2025 17:57:45 +0000 Subject: [PATCH 3/5] Change CI to use Podman --- .gitlab-ci.yml | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 154fbf6..4d07138 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,5 @@ default: - image: docker:28.5.1-dind - services: - - "docker:28.5.1-dind" + image: quay.io/podman/stable variables: DOCKER_TLS_CERTDIR: "/certs" @@ -10,6 +8,7 @@ variables: stages: - test - build-and-push-image + - push-retagged-branch - push-retagged-latest test: @@ -25,17 +24,29 @@ build-and-push-image: stage: build-and-push-image script: - git submodule update --init - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker build -t "$CI_REGISTRY_IMAGE:$IMAGE_TAG" . - - docker push "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - podman build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" . + - podman push "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + +push-retagged-branch: + stage: push-retagged-latest + script: + - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - podman pull "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + - podman tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + - podman push "$CI_REGISTRY_IMAGE:latest" + rules: + - if: $CI_PIPELINE_SOURCE == "push" + when: on_success + push-retagged-latest: stage: push-retagged-latest script: - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker pull "$CI_REGISTRY_IMAGE:$IMAGE_TAG" - - docker tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "$CI_REGISTRY_IMAGE:latest" - - docker push "$CI_REGISTRY_IMAGE:latest" + - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - podman pull "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + - podman tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "$CI_REGISTRY_IMAGE:latest" + - podman push "$CI_REGISTRY_IMAGE:latest" rules: - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push" when: on_success From a3d549aa2aadd99f5fa423b39b2a6f6743ae88b0 Mon Sep 17 00:00:00 2001 From: BloxerHD018 Date: Tue, 4 Nov 2025 19:10:42 +0000 Subject: [PATCH 4/5] Fix Incorrect CI Stages --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4d07138..0bc6969 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ build-and-push-image: - podman push "$CI_REGISTRY_IMAGE:$IMAGE_TAG" push-retagged-branch: - stage: push-retagged-latest + stage: push-retagged-branch script: - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - podman pull "$CI_REGISTRY_IMAGE:$IMAGE_TAG" @@ -39,7 +39,6 @@ push-retagged-branch: - if: $CI_PIPELINE_SOURCE == "push" when: on_success - push-retagged-latest: stage: push-retagged-latest script: From 692e89edca2c287581053a6e77676f4f7792f56d Mon Sep 17 00:00:00 2001 From: BloxerHD018 Date: Tue, 4 Nov 2025 19:20:14 +0000 Subject: [PATCH 5/5] Fix Incorrect CI Tags --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0bc6969..3dcc4c1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,15 +26,15 @@ build-and-push-image: - git submodule update --init - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - podman build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" . - - podman push "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + - podman push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" push-retagged-branch: stage: push-retagged-branch script: - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - podman pull "$CI_REGISTRY_IMAGE:$IMAGE_TAG" - - podman tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "$CI_REGISTRY_IMAGE:$IMAGE_TAG" - - podman push "$CI_REGISTRY_IMAGE:latest" + - podman pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" + - podman tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + - podman push "$CI_REGISTRY_IMAGE:$IMAGE_TAG" rules: - if: $CI_PIPELINE_SOURCE == "push" when: on_success