Feat: Allow Deleting Account via JSON API #1
5 changed files with 61 additions and 12 deletions
|
|
@ -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,28 @@ 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:$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:$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
|
||||
|
||||
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
|
||||
|
|
|
|||
14
.sqlx/query-33c4cb3bb1675de38c7c438de08cff5a05f04c0a1a5a1703eaf975a216be6a75.json
generated
Normal file
14
.sqlx/query-33c4cb3bb1675de38c7c438de08cff5a05f04c0a1a5a1703eaf975a216be6a75.json
generated
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"db_name": "PostgreSQL",
|
||||
"query": "DELETE FROM users WHERE username = $1",
|
||||
"describe": {
|
||||
"columns": [],
|
||||
"parameters": {
|
||||
"Left": [
|
||||
"Text"
|
||||
]
|
||||
},
|
||||
"nullable": []
|
||||
},
|
||||
"hash": "33c4cb3bb1675de38c7c438de08cff5a05f04c0a1a5a1703eaf975a216be6a75"
|
||||
}
|
||||
23
src/json_api/users/delete.rs
Normal file
23
src/json_api/users/delete.rs
Normal file
|
|
@ -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<Pool>, auth: Auth<true>) -> 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(())
|
||||
}
|
||||
}
|
||||
|
|
@ -1,2 +1,3 @@
|
|||
pub mod profile;
|
||||
pub mod mii;
|
||||
pub mod mii;
|
||||
pub mod delete;
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue