cargo fmt + clippy
This commit is contained in:
@@ -71,7 +71,10 @@ pub fn validate_name_token(name: &str) -> anyhow::Result<()> {
|
||||
anyhow::bail!("Database name is too long. Maximum length is 64 characters.");
|
||||
}
|
||||
|
||||
if !name.chars().all(|c| c.is_ascii_alphanumeric() || c == '_' || c == '-') {
|
||||
if !name
|
||||
.chars()
|
||||
.all(|c| c.is_ascii_alphanumeric() || c == '_' || c == '-')
|
||||
{
|
||||
anyhow::bail!(
|
||||
indoc! {r#"
|
||||
Invalid characters in name: '{}'
|
||||
@@ -85,7 +88,10 @@ pub fn validate_name_token(name: &str) -> anyhow::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn validate_ownership_by_user_prefix<'a>(name: &'a str, user: &User) -> anyhow::Result<&'a str> {
|
||||
pub fn validate_ownership_by_user_prefix<'a>(
|
||||
name: &'a str,
|
||||
user: &User,
|
||||
) -> anyhow::Result<&'a str> {
|
||||
let user_groups = get_unix_groups(user)?;
|
||||
|
||||
let mut split_name = name.split('_');
|
||||
|
||||
@@ -8,7 +8,8 @@ use serde::{Deserialize, Serialize};
|
||||
use sqlx::{mysql::MySqlRow, prelude::*, MySqlConnection};
|
||||
|
||||
use super::common::{
|
||||
create_user_group_matching_regex, get_current_unix_user, quote_identifier, validate_name_token, validate_ownership_by_user_prefix
|
||||
create_user_group_matching_regex, get_current_unix_user, quote_identifier, validate_name_token,
|
||||
validate_ownership_by_user_prefix,
|
||||
};
|
||||
|
||||
pub async fn create_database(name: &str, conn: &mut MySqlConnection) -> anyhow::Result<()> {
|
||||
|
||||
@@ -5,7 +5,10 @@ use sqlx::{prelude::*, MySqlConnection};
|
||||
|
||||
use crate::core::common::quote_literal;
|
||||
|
||||
use super::common::{create_user_group_matching_regex, get_current_unix_user, validate_name_token, validate_ownership_by_user_prefix};
|
||||
use super::common::{
|
||||
create_user_group_matching_regex, get_current_unix_user, validate_name_token,
|
||||
validate_ownership_by_user_prefix,
|
||||
};
|
||||
|
||||
pub async fn user_exists(db_user: &str, conn: &mut MySqlConnection) -> anyhow::Result<bool> {
|
||||
let unix_user = get_current_unix_user()?;
|
||||
@@ -102,11 +105,11 @@ pub async fn password_is_set_for_database_user(
|
||||
validate_user_name(db_user, &unix_user)?;
|
||||
|
||||
let user_has_password = sqlx::query_as::<_, PasswordIsSet>(
|
||||
"SELECT authentication_string != '' FROM mysql.user WHERE User = ?"
|
||||
)
|
||||
.bind(db_user)
|
||||
.fetch_optional(conn)
|
||||
.await?;
|
||||
"SELECT authentication_string != '' FROM mysql.user WHERE User = ?",
|
||||
)
|
||||
.bind(db_user)
|
||||
.fetch_optional(conn)
|
||||
.await?;
|
||||
|
||||
Ok(user_has_password.map(|PasswordIsSet(is_set)| is_set))
|
||||
}
|
||||
@@ -167,7 +170,8 @@ pub async fn get_database_user_for_user(
|
||||
/// to validate the database name ourselves to prevent SQL injection.
|
||||
pub fn validate_user_name(name: &str, user: &User) -> anyhow::Result<()> {
|
||||
validate_name_token(name).context(format!("Invalid username: '{}'", name))?;
|
||||
validate_ownership_by_user_prefix(name, user).context(format!("Invalid username: '{}'", name))?;
|
||||
validate_ownership_by_user_prefix(name, user)
|
||||
.context(format!("Invalid username: '{}'", name))?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user