diff --git a/src/rb/admin.rs b/src/rb/admin.rs new file mode 100644 index 0000000..352f086 --- /dev/null +++ b/src/rb/admin.rs @@ -0,0 +1,8 @@ +use crate::errors::RBError; +use crate::models::User; +use diesel::prelude::*; +use crate::schema::users::dsl as users; + +pub fn get_users(conn: &PgConnection) -> crate::Result> { + users::users.load::(conn).map_err(|_| RBError::DBError) +} diff --git a/src/rb/errors.rs b/src/rb/errors.rs index b5b01a9..2e1afca 100644 --- a/src/rb/errors.rs +++ b/src/rb/errors.rs @@ -37,7 +37,9 @@ impl<'r> Responder<'r, 'static> for RBError { RBError::JWTCreationError | RBError::MissingJWTKey => { (Status::InternalServerError, "Failed to create tokens.") } - RBError::InvalidRefreshToken | RBError::DuplicateRefreshToken => (Status::Unauthorized, "Invalid refresh token."), + RBError::InvalidRefreshToken | RBError::DuplicateRefreshToken => { + (Status::Unauthorized, "Invalid refresh token.") + } _ => (Status::InternalServerError, "Internal server error"), }; diff --git a/src/rb/lib.rs b/src/rb/lib.rs index 457665d..c1b0c4a 100644 --- a/src/rb/lib.rs +++ b/src/rb/lib.rs @@ -3,7 +3,8 @@ extern crate diesel; pub mod auth; pub mod errors; -mod models; +pub mod admin; +pub mod models; pub(crate) mod schema; pub use errors::Result; diff --git a/src/rbs/admin.rs b/src/rbs/admin.rs new file mode 100644 index 0000000..9bd9d7b --- /dev/null +++ b/src/rbs/admin.rs @@ -0,0 +1,13 @@ +use crate::guards::Admin; +use crate::RbDbConn; +use rb::models::User; +use rocket::serde::json::Json; + +pub fn routes() -> Vec { + routes![get_users] +} + +#[get("/users")] +async fn get_users(admin: Admin, conn: RbDbConn) -> rb::Result>> { + Ok(Json(conn.run(|c| rb::admin::get_users(c)).await?)) +} diff --git a/src/rbs/auth.rs b/src/rbs/auth.rs index 119d973..903b52f 100644 --- a/src/rbs/auth.rs +++ b/src/rbs/auth.rs @@ -45,6 +45,7 @@ async fn refresh_token( let refresh_token = refresh_token_request.into_inner().refresh_token; Ok(Json( - conn.run(move |c| rb::auth::refresh_token(c, &refresh_token)).await? + conn.run(move |c| rb::auth::refresh_token(c, &refresh_token)) + .await?, )) } diff --git a/src/rbs/main.rs b/src/rbs/main.rs index 7e9ea26..38e03d8 100644 --- a/src/rbs/main.rs +++ b/src/rbs/main.rs @@ -11,6 +11,7 @@ use rocket::{fairing::AdHoc, Build, Rocket}; use rocket_sync_db_pools::{database, diesel}; mod auth; +mod admin; pub(crate) mod guards; embed_migrations!(); @@ -55,4 +56,5 @@ fn rocket() -> _ { )) .attach(AdHoc::try_on_ignite("Create admin user", create_admin_user)) .mount("/api/auth", auth::routes()) + .mount("/api/admin", admin::routes()) }