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!(get_index_status))
|
||||
// User management
|
||||
.route("/user", post(post_user))
|
||||
.route("/user/{name}", delete(delete_user))
|
||||
.route("/user/{name}", put(put_user))
|
||||
.route("/users", get(get_users))
|
||||
.routes(routes!(post_user))
|
||||
.routes(routes!(delete_user, put_user))
|
||||
.routes(routes!(get_users))
|
||||
// File browser
|
||||
.route("/browse", get(get_browse_root))
|
||||
.route("/browse/{*path}", get(get_browse))
|
||||
|
@ -229,6 +228,13 @@ async fn post_auth(
|
|||
Ok(Json(authorization))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
get,
|
||||
path = "/users",
|
||||
responses(
|
||||
(status = 200, body = Vec<dto::User>),
|
||||
),
|
||||
)]
|
||||
async fn get_users(
|
||||
_admin_rights: AdminRights,
|
||||
State(config_manager): State<config::Manager>,
|
||||
|
@ -238,6 +244,16 @@ async fn get_users(
|
|||
Ok(Json(users))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
post,
|
||||
path = "/user",
|
||||
request_body = dto::NewUser,
|
||||
responses(
|
||||
(status = 200),
|
||||
(status = 400),
|
||||
(status = 409)
|
||||
)
|
||||
)]
|
||||
async fn post_user(
|
||||
_admin_rights: AdminRights,
|
||||
State(config_manager): State<config::Manager>,
|
||||
|
@ -249,6 +265,16 @@ async fn post_user(
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
put,
|
||||
path = "/user/{name}",
|
||||
request_body = dto::UserUpdate,
|
||||
responses(
|
||||
(status = 200),
|
||||
(status = 404),
|
||||
(status = 409)
|
||||
)
|
||||
)]
|
||||
async fn put_user(
|
||||
admin_rights: AdminRights,
|
||||
State(config_manager): State<config::Manager>,
|
||||
|
@ -272,6 +298,15 @@ async fn put_user(
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
delete,
|
||||
path = "/user/{name}",
|
||||
responses(
|
||||
(status = 200),
|
||||
(status = 404),
|
||||
(status = 409)
|
||||
)
|
||||
)]
|
||||
async fn delete_user(
|
||||
admin_rights: AdminRights,
|
||||
State(config_manager): State<config::Manager>,
|
||||
|
|
|
@ -106,7 +106,7 @@ pub struct SavePlaylistInput {
|
|||
pub tracks: Vec<PathBuf>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
#[derive(Serialize, Deserialize, ToSchema)]
|
||||
pub struct User {
|
||||
pub name: String,
|
||||
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 name: String,
|
||||
pub password: String,
|
||||
pub admin: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
|
||||
pub struct UserUpdate {
|
||||
pub new_password: Option<String>,
|
||||
pub new_is_admin: Option<bool>,
|
||||
|
|
Loading…
Add table
Reference in a new issue