You've already forked AstralRinth
forked from didirus/AstralRinth
Fix version file visibility (#630)
* Fix version file visibility * add missing * update prepare
This commit is contained in:
1
.env
1
.env
@@ -43,7 +43,6 @@ LOCAL_INDEX_INTERVAL=3600
|
|||||||
VERSION_INDEX_INTERVAL=1800
|
VERSION_INDEX_INTERVAL=1800
|
||||||
|
|
||||||
GITHUB_CLIENT_ID=none
|
GITHUB_CLIENT_ID=none
|
||||||
GITHUB_CLIENT_SECRET=none
|
|
||||||
|
|
||||||
RATE_LIMIT_IGNORE_IPS='["127.0.0.1"]'
|
RATE_LIMIT_IGNORE_IPS='["127.0.0.1"]'
|
||||||
|
|
||||||
|
|||||||
1046
sqlx-data.json
1046
sqlx-data.json
File diff suppressed because it is too large
Load Diff
@@ -776,7 +776,7 @@ impl Project {
|
|||||||
FROM versions v
|
FROM versions v
|
||||||
INNER JOIN game_versions_versions gvv ON v.id = gvv.joining_version_id
|
INNER JOIN game_versions_versions gvv ON v.id = gvv.joining_version_id
|
||||||
INNER JOIN game_versions gv on gvv.game_version_id = gv.id
|
INNER JOIN game_versions gv on gvv.game_version_id = gv.id
|
||||||
WHERE v.mod_id = mods.id AND v.status != ANY($2)
|
WHERE v.mod_id = mods.id AND v.status != ALL($2)
|
||||||
)
|
)
|
||||||
WHERE id = $1
|
WHERE id = $1
|
||||||
",
|
",
|
||||||
@@ -801,7 +801,7 @@ impl Project {
|
|||||||
FROM versions v
|
FROM versions v
|
||||||
INNER JOIN loaders_versions lv ON lv.version_id = v.id
|
INNER JOIN loaders_versions lv ON lv.version_id = v.id
|
||||||
INNER JOIN loaders l on lv.loader_id = l.id
|
INNER JOIN loaders l on lv.loader_id = l.id
|
||||||
WHERE v.mod_id = mods.id AND v.status != ANY($2)
|
WHERE v.mod_id = mods.id AND v.status != ALL($2)
|
||||||
)
|
)
|
||||||
WHERE id = $1
|
WHERE id = $1
|
||||||
",
|
",
|
||||||
|
|||||||
@@ -430,7 +430,6 @@ fn check_env_vars() -> bool {
|
|||||||
failed |= check_var::<usize>("VERSION_INDEX_INTERVAL");
|
failed |= check_var::<usize>("VERSION_INDEX_INTERVAL");
|
||||||
|
|
||||||
failed |= check_var::<String>("GITHUB_CLIENT_ID");
|
failed |= check_var::<String>("GITHUB_CLIENT_ID");
|
||||||
failed |= check_var::<String>("GITHUB_CLIENT_SECRET");
|
|
||||||
|
|
||||||
failed |= check_var::<String>("ARIADNE_ADMIN_KEY");
|
failed |= check_var::<String>("ARIADNE_ADMIN_KEY");
|
||||||
failed |= check_var::<String>("ARIADNE_URL");
|
failed |= check_var::<String>("ARIADNE_URL");
|
||||||
|
|||||||
@@ -61,9 +61,9 @@ pub async fn get_version_from_hash(
|
|||||||
SELECT f.version_id version_id
|
SELECT f.version_id version_id
|
||||||
FROM hashes h
|
FROM hashes h
|
||||||
INNER JOIN files f ON h.file_id = f.id
|
INNER JOIN files f ON h.file_id = f.id
|
||||||
INNER JOIN versions v on f.version_id = v.id AND v.status != ANY($1)
|
INNER JOIN versions v on f.version_id = v.id AND v.status != ALL($1)
|
||||||
INNER JOIN mods m on v.mod_id = m.id
|
INNER JOIN mods m on v.mod_id = m.id
|
||||||
WHERE h.algorithm = $3 AND h.hash = $2 AND m.status != ANY($4)
|
WHERE h.algorithm = $3 AND h.hash = $2 AND m.status != ALL($4)
|
||||||
ORDER BY v.date_published ASC
|
ORDER BY v.date_published ASC
|
||||||
",
|
",
|
||||||
&*crate::models::projects::VersionStatus::iterator()
|
&*crate::models::projects::VersionStatus::iterator()
|
||||||
@@ -121,9 +121,9 @@ pub async fn download_version(
|
|||||||
"
|
"
|
||||||
SELECT f.url url, f.id id, f.version_id version_id, v.mod_id project_id FROM hashes h
|
SELECT f.url url, f.id id, f.version_id version_id, v.mod_id project_id FROM hashes h
|
||||||
INNER JOIN files f ON h.file_id = f.id
|
INNER JOIN files f ON h.file_id = f.id
|
||||||
INNER JOIN versions v ON v.id = f.version_id AND v.status != ANY($1)
|
INNER JOIN versions v ON v.id = f.version_id AND v.status != ALL($1)
|
||||||
INNER JOIN mods m on v.mod_id = m.id
|
INNER JOIN mods m on v.mod_id = m.id
|
||||||
WHERE h.algorithm = $3 AND h.hash = $2 AND m.status != ANY($4)
|
WHERE h.algorithm = $3 AND h.hash = $2 AND m.status != ALL($4)
|
||||||
ORDER BY v.date_published ASC
|
ORDER BY v.date_published ASC
|
||||||
",
|
",
|
||||||
&*crate::models::projects::VersionStatus::iterator()
|
&*crate::models::projects::VersionStatus::iterator()
|
||||||
@@ -278,9 +278,9 @@ pub async fn get_update_from_hash(
|
|||||||
"
|
"
|
||||||
SELECT v.mod_id project_id FROM hashes h
|
SELECT v.mod_id project_id FROM hashes h
|
||||||
INNER JOIN files f ON h.file_id = f.id
|
INNER JOIN files f ON h.file_id = f.id
|
||||||
INNER JOIN versions v ON v.id = f.version_id AND v.status != ANY($1)
|
INNER JOIN versions v ON v.id = f.version_id AND v.status != ALL($1)
|
||||||
INNER JOIN mods m on v.mod_id = m.id
|
INNER JOIN mods m on v.mod_id = m.id
|
||||||
WHERE h.algorithm = $3 AND h.hash = $2 AND m.status != ANY($4)
|
WHERE h.algorithm = $3 AND h.hash = $2 AND m.status != ALL($4)
|
||||||
ORDER BY v.date_published ASC
|
ORDER BY v.date_published ASC
|
||||||
",
|
",
|
||||||
&*crate::models::projects::VersionStatus::iterator()
|
&*crate::models::projects::VersionStatus::iterator()
|
||||||
@@ -358,9 +358,9 @@ pub async fn get_versions_from_hashes(
|
|||||||
"
|
"
|
||||||
SELECT h.hash hash, h.algorithm algorithm, f.version_id version_id FROM hashes h
|
SELECT h.hash hash, h.algorithm algorithm, f.version_id version_id FROM hashes h
|
||||||
INNER JOIN files f ON h.file_id = f.id
|
INNER JOIN files f ON h.file_id = f.id
|
||||||
INNER JOIN versions v ON v.id = f.version_id AND v.status != ANY($1)
|
INNER JOIN versions v ON v.id = f.version_id AND v.status != ALL($1)
|
||||||
INNER JOIN mods m on v.mod_id = m.id
|
INNER JOIN mods m on v.mod_id = m.id
|
||||||
WHERE h.algorithm = $3 AND h.hash = ANY($2::bytea[]) AND m.status != ANY($4)
|
WHERE h.algorithm = $3 AND h.hash = ANY($2::bytea[]) AND m.status != ALL($4)
|
||||||
",
|
",
|
||||||
&*crate::models::projects::VersionStatus::iterator()
|
&*crate::models::projects::VersionStatus::iterator()
|
||||||
.filter(|x| x.is_hidden())
|
.filter(|x| x.is_hidden())
|
||||||
@@ -419,9 +419,9 @@ pub async fn get_projects_from_hashes(
|
|||||||
"
|
"
|
||||||
SELECT h.hash hash, h.algorithm algorithm, m.id project_id FROM hashes h
|
SELECT h.hash hash, h.algorithm algorithm, m.id project_id FROM hashes h
|
||||||
INNER JOIN files f ON h.file_id = f.id
|
INNER JOIN files f ON h.file_id = f.id
|
||||||
INNER JOIN versions v ON v.id = f.version_id AND v.status != ANY($1)
|
INNER JOIN versions v ON v.id = f.version_id AND v.status != ALL($1)
|
||||||
INNER JOIN mods m on v.mod_id = m.id
|
INNER JOIN mods m on v.mod_id = m.id
|
||||||
WHERE h.algorithm = $3 AND h.hash = ANY($2::bytea[]) AND m.status != ANY($4)
|
WHERE h.algorithm = $3 AND h.hash = ANY($2::bytea[]) AND m.status != ALL($4)
|
||||||
",
|
",
|
||||||
&*crate::models::projects::VersionStatus::iterator()
|
&*crate::models::projects::VersionStatus::iterator()
|
||||||
.filter(|x| x.is_hidden())
|
.filter(|x| x.is_hidden())
|
||||||
@@ -482,9 +482,9 @@ pub async fn download_files(
|
|||||||
"
|
"
|
||||||
SELECT f.url url, h.hash hash, h.algorithm algorithm, f.version_id version_id, v.mod_id project_id FROM hashes h
|
SELECT f.url url, h.hash hash, h.algorithm algorithm, f.version_id version_id, v.mod_id project_id FROM hashes h
|
||||||
INNER JOIN files f ON h.file_id = f.id
|
INNER JOIN files f ON h.file_id = f.id
|
||||||
INNER JOIN versions v ON v.id = f.version_id AND v.status != ANY($1)
|
INNER JOIN versions v ON v.id = f.version_id AND v.status != ALL($1)
|
||||||
INNER JOIN mods m on v.mod_id = m.id
|
INNER JOIN mods m on v.mod_id = m.id
|
||||||
WHERE h.algorithm = $3 AND h.hash = ANY($2::bytea[]) AND m.status != ANY($4)
|
WHERE h.algorithm = $3 AND h.hash = ANY($2::bytea[]) AND m.status != ALL($4)
|
||||||
",
|
",
|
||||||
&*crate::models::projects::VersionStatus::iterator().filter(|x| x.is_hidden()).map(|x| x.to_string()).collect::<Vec<String>>(),
|
&*crate::models::projects::VersionStatus::iterator().filter(|x| x.is_hidden()).map(|x| x.to_string()).collect::<Vec<String>>(),
|
||||||
hashes_parsed.as_slice(),
|
hashes_parsed.as_slice(),
|
||||||
@@ -536,9 +536,9 @@ pub async fn update_files(
|
|||||||
"
|
"
|
||||||
SELECT h.hash, v.mod_id FROM hashes h
|
SELECT h.hash, v.mod_id FROM hashes h
|
||||||
INNER JOIN files f ON h.file_id = f.id
|
INNER JOIN files f ON h.file_id = f.id
|
||||||
INNER JOIN versions v ON v.id = f.version_id AND v.status != ANY($1)
|
INNER JOIN versions v ON v.id = f.version_id AND v.status != ALL($1)
|
||||||
INNER JOIN mods m on v.mod_id = m.id
|
INNER JOIN mods m on v.mod_id = m.id
|
||||||
WHERE h.algorithm = $3 AND h.hash = ANY($2::bytea[]) AND m.status != ANY($4)
|
WHERE h.algorithm = $3 AND h.hash = ANY($2::bytea[]) AND m.status != ALL($4)
|
||||||
",
|
",
|
||||||
&*crate::models::projects::VersionStatus::iterator()
|
&*crate::models::projects::VersionStatus::iterator()
|
||||||
.filter(|x| x.is_hidden())
|
.filter(|x| x.is_hidden())
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ pub async fn index_local(pool: PgPool) -> Result<Vec<UploadSearchProject>, Index
|
|||||||
FROM mods m
|
FROM mods m
|
||||||
LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id
|
LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id
|
||||||
LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id
|
LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id
|
||||||
LEFT OUTER JOIN versions v ON v.mod_id = m.id AND v.status != ANY($1)
|
LEFT OUTER JOIN versions v ON v.mod_id = m.id AND v.status != ALL($1)
|
||||||
LEFT OUTER JOIN game_versions_versions gvv ON gvv.joining_version_id = v.id
|
LEFT OUTER JOIN game_versions_versions gvv ON gvv.joining_version_id = v.id
|
||||||
LEFT OUTER JOIN game_versions gv ON gvv.game_version_id = gv.id
|
LEFT OUTER JOIN game_versions gv ON gvv.game_version_id = gv.id
|
||||||
LEFT OUTER JOIN loaders_versions lv ON lv.version_id = v.id
|
LEFT OUTER JOIN loaders_versions lv ON lv.version_id = v.id
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ pub enum AuthenticationError {
|
|||||||
InvalidCredentials,
|
InvalidCredentials,
|
||||||
#[error("Authentication method was not valid")]
|
#[error("Authentication method was not valid")]
|
||||||
InvalidAuthMethod,
|
InvalidAuthMethod,
|
||||||
|
#[error("GitHub Token from incorrect Client ID")]
|
||||||
|
InvalidClientId,
|
||||||
}
|
}
|
||||||
|
|
||||||
// A user as stored in the Minos database
|
// A user as stored in the Minos database
|
||||||
@@ -360,17 +362,26 @@ pub async fn get_user_from_github_token<'a, E>(
|
|||||||
where
|
where
|
||||||
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
|
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
|
||||||
{
|
{
|
||||||
let github_user: GitHubUser = reqwest::Client::new()
|
let response = reqwest::Client::new()
|
||||||
.get("https://api.github.com/user")
|
.get("https://api.github.com/user")
|
||||||
.header(reqwest::header::USER_AGENT, "Modrinth")
|
.header(reqwest::header::USER_AGENT, "Modrinth")
|
||||||
.header(
|
.header(AUTHORIZATION, format!("token {access_token}"))
|
||||||
reqwest::header::AUTHORIZATION,
|
|
||||||
format!("token {access_token}"),
|
|
||||||
)
|
|
||||||
.send()
|
.send()
|
||||||
.await?
|
|
||||||
.json()
|
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
if access_token.starts_with("gho_") {
|
||||||
|
let client_id = response
|
||||||
|
.headers()
|
||||||
|
.get("x-oauth-client-id")
|
||||||
|
.and_then(|x| x.to_str().ok());
|
||||||
|
|
||||||
|
if client_id != Some(&*dotenvy::var("GITHUB_CLIENT_ID").unwrap()) {
|
||||||
|
return Err(AuthenticationError::InvalidClientId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let github_user: GitHubUser = response.json().await?;
|
||||||
|
|
||||||
Ok(user_item::User::get_from_github_id(github_user.id, executor).await?)
|
Ok(user_item::User::get_from_github_id(github_user.id, executor).await?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ pub async fn send_discord_webhook(
|
|||||||
FROM mods m
|
FROM mods m
|
||||||
LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id AND mc.is_additional = FALSE
|
LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id AND mc.is_additional = FALSE
|
||||||
LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id
|
LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id
|
||||||
LEFT OUTER JOIN versions v ON v.mod_id = m.id AND v.status != ANY($2)
|
LEFT OUTER JOIN versions v ON v.mod_id = m.id AND v.status != ALL($2)
|
||||||
LEFT OUTER JOIN game_versions_versions gvv ON gvv.joining_version_id = v.id
|
LEFT OUTER JOIN game_versions_versions gvv ON gvv.joining_version_id = v.id
|
||||||
LEFT OUTER JOIN game_versions gv ON gvv.game_version_id = gv.id
|
LEFT OUTER JOIN game_versions gv ON gvv.game_version_id = gv.id
|
||||||
LEFT OUTER JOIN loaders_versions lv ON lv.version_id = v.id
|
LEFT OUTER JOIN loaders_versions lv ON lv.version_id = v.id
|
||||||
|
|||||||
Reference in New Issue
Block a user