enforce user token check

This commit is contained in:
kasisnu committed 2023-10-04 19:02:16 +05:30
1 parent b67cfb5fbe
commit 484e6788e3
2 files changed
+19 -14

No files matched your search

@@ -96,24 +96,31 @@ pub async fn update_dataset_handler(
}
};
let dataset_token = path.dataset_token.clone();
let dataset_lookup_result = get_dataset_by_token(
&ZsDatasetToken::new(dataset_token.clone()),
&server_state.mysql_pool,
).await;
let dataset = match dataset_lookup_result {
Ok(Some(dataset)) => dataset,
Ok(None) => {
warn!("Dataset not found: {:?}", dataset_token);
return Err(UpdateDatasetError::NotFound);
},
Err(err) => {
let dataset = match dataset_lookup_result {
Ok(Some(dataset)) => dataset,
Ok(None) => {
warn!("Dataset not found: {:?}", dataset_token);
return Err(UpdateDatasetError::NotFound);
},
Err(err) => {
warn!("Error looking up dataset: {:?}", err);
return Err(UpdateDatasetError::ServerError);
}
};
}
};
let is_creator = dataset.maybe_creator_user_token == Some(user_session.user_token);
let is_mod = user_session.can_ban_users;
if !is_creator && !is_mod {
warn!("user is not allowed to edit this dataset: {}", user_session.user_token);
return Err(UpdateDatasetError::NotAuthorized);
}
let mut title = None;
let mut ietf_language_tag = None;
@@ -156,10 +163,8 @@ pub async fn update_dataset_handler(
.map_err(|_| UpdateDatasetError::BadInput("bad record visibility".to_string()))?;
}
let is_mod = user_session.can_ban_users;
let ip_address = get_request_ip(&http_request);
let mut maybe_mod_user_token = None;
if is_mod {
@@ -167,7 +172,7 @@ pub async fn update_dataset_handler(
}
let query_result = update_dataset(
UpdateDatasetArgs {
dataset_token: &ZsDatasetToken::new(path.dataset_token.clone()),
dataset_token: &ZsDatasetToken::new(dataset_token.clone()),
dataset_title: title.as_deref(),
maybe_creator_user_token: Some(user_session.user_token.clone().as_ref()),
creator_ip_address: ip_address.as_ref(),
@@ -174,7 +174,7 @@ pub fn add_routes<T, B> (app: App<T>) -> App<T>
app = add_subscription_routes(app); /* /v1/subscriptions/... */
// TODO find a long term feature flag solution, since this code is likely deployed into production we don't want the route found.
let enable_voice_designer_route = true;
let enable_voice_designer_route = false;
if (enable_voice_designer_route) {
app = add_voice_designer_routes(app); /* /v1/voice_designer */
}