diff --git a/server/src/auth.rs b/server/src/auth.rs index 5f8f67a..f02eb07 100644 --- a/server/src/auth.rs +++ b/server/src/auth.rs @@ -1,8 +1,11 @@ // Handlers for the base auth routes use crate::users{self, Member}; -use std::{error, fmt}; use crate::rand_utils::new_key; +use rocket::http::Status; +use std::{error, fmt}; +use diesel; + #[derive(FromForm)] struct JoinParams { @@ -10,6 +13,11 @@ struct JoinParams { name: String, } +#[derive(FromForm)] +pub struct AuthKey { + id: u64, + secret: String, +} pub type AuthResult = std::result::Result; @@ -86,11 +94,24 @@ pub fn join(conn: DBConn, params: JoinParams) -> AuthResult, AuthErr> } } -/* - -#[post("/leave", data = "<>")] -pub fn leave() { +#[post("/leave", data = "")] +pub fn leave(conn: DBConn, api_key: AuthKey) -> Status { + /* + * Basic removal of the user from our users table + */ + diesel::delete(users.filter(id.eq(api_key.id), )) + let db_result = diesel::delete(users) + .filter(id.eq(api_key.id)) + .filter(secret.eq(api_key.secret)) + .execute(&conn.0); + if let result = Ok(db_result) { + Status::Accepted + } + else { + Status::BadRequst + } } +/* #[pust("/close")] pub fn close() {