utoipa user management endpoints
This commit is contained in:
parent
1c3ba3d709
commit
23facd96b9
2 changed files with 42 additions and 7 deletions
|
@ -35,10 +35,9 @@ pub fn router() -> OpenApiRouter<App> {
|
||||||
.routes(routes!(post_trigger_index))
|
.routes(routes!(post_trigger_index))
|
||||||
.routes(routes!(get_index_status))
|
.routes(routes!(get_index_status))
|
||||||
// User management
|
// User management
|
||||||
.route("/user", post(post_user))
|
.routes(routes!(post_user))
|
||||||
.route("/user/{name}", delete(delete_user))
|
.routes(routes!(delete_user, put_user))
|
||||||
.route("/user/{name}", put(put_user))
|
.routes(routes!(get_users))
|
||||||
.route("/users", get(get_users))
|
|
||||||
// File browser
|
// File browser
|
||||||
.route("/browse", get(get_browse_root))
|
.route("/browse", get(get_browse_root))
|
||||||
.route("/browse/{*path}", get(get_browse))
|
.route("/browse/{*path}", get(get_browse))
|
||||||
|
@ -229,6 +228,13 @@ async fn post_auth(
|
||||||
Ok(Json(authorization))
|
Ok(Json(authorization))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[utoipa::path(
|
||||||
|
get,
|
||||||
|
path = "/users",
|
||||||
|
responses(
|
||||||
|
(status = 200, body = Vec<dto::User>),
|
||||||
|
),
|
||||||
|
)]
|
||||||
async fn get_users(
|
async fn get_users(
|
||||||
_admin_rights: AdminRights,
|
_admin_rights: AdminRights,
|
||||||
State(config_manager): State<config::Manager>,
|
State(config_manager): State<config::Manager>,
|
||||||
|
@ -238,6 +244,16 @@ async fn get_users(
|
||||||
Ok(Json(users))
|
Ok(Json(users))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[utoipa::path(
|
||||||
|
post,
|
||||||
|
path = "/user",
|
||||||
|
request_body = dto::NewUser,
|
||||||
|
responses(
|
||||||
|
(status = 200),
|
||||||
|
(status = 400),
|
||||||
|
(status = 409)
|
||||||
|
)
|
||||||
|
)]
|
||||||
async fn post_user(
|
async fn post_user(
|
||||||
_admin_rights: AdminRights,
|
_admin_rights: AdminRights,
|
||||||
State(config_manager): State<config::Manager>,
|
State(config_manager): State<config::Manager>,
|
||||||
|
@ -249,6 +265,16 @@ async fn post_user(
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[utoipa::path(
|
||||||
|
put,
|
||||||
|
path = "/user/{name}",
|
||||||
|
request_body = dto::UserUpdate,
|
||||||
|
responses(
|
||||||
|
(status = 200),
|
||||||
|
(status = 404),
|
||||||
|
(status = 409)
|
||||||
|
)
|
||||||
|
)]
|
||||||
async fn put_user(
|
async fn put_user(
|
||||||
admin_rights: AdminRights,
|
admin_rights: AdminRights,
|
||||||
State(config_manager): State<config::Manager>,
|
State(config_manager): State<config::Manager>,
|
||||||
|
@ -272,6 +298,15 @@ async fn put_user(
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[utoipa::path(
|
||||||
|
delete,
|
||||||
|
path = "/user/{name}",
|
||||||
|
responses(
|
||||||
|
(status = 200),
|
||||||
|
(status = 404),
|
||||||
|
(status = 409)
|
||||||
|
)
|
||||||
|
)]
|
||||||
async fn delete_user(
|
async fn delete_user(
|
||||||
admin_rights: AdminRights,
|
admin_rights: AdminRights,
|
||||||
State(config_manager): State<config::Manager>,
|
State(config_manager): State<config::Manager>,
|
||||||
|
|
|
@ -106,7 +106,7 @@ pub struct SavePlaylistInput {
|
||||||
pub tracks: Vec<PathBuf>,
|
pub tracks: Vec<PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize, ToSchema)]
|
||||||
pub struct User {
|
pub struct User {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub is_admin: bool,
|
pub is_admin: bool,
|
||||||
|
@ -121,14 +121,14 @@ impl From<config::User> for User {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
|
||||||
pub struct NewUser {
|
pub struct NewUser {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub password: String,
|
pub password: String,
|
||||||
pub admin: bool,
|
pub admin: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
|
||||||
pub struct UserUpdate {
|
pub struct UserUpdate {
|
||||||
pub new_password: Option<String>,
|
pub new_password: Option<String>,
|
||||||
pub new_is_admin: Option<bool>,
|
pub new_is_admin: Option<bool>,
|
||||||
|
|
Loading…
Add table
Reference in a new issue