This commit is contained in:
2022-09-25 09:57:42 +00:00
committed by GitHub
parent dfa9ba5576
commit ad8fe5e2dc
5 changed files with 224 additions and 1 deletions

View File

@@ -88,7 +88,42 @@ impl AuthUserContext {
.try_err3(8, gettext("Failed to add user to database:"))?;
Ok(user.to_json2())
} else {
Ok(json::object! {})
let mut is_admin = params
.get_bool("is_admin")
.try_err3(
9,
&gettext("Failed to parse <opt>:")
.replace("<opt>", "is_admin"),
)?
.unwrap_or(false);
let id = params.get_u64("id").try_err3(
10,
&gettext("Failed to parse <opt>:").replace("<opt>", "id"),
)?;
match id {
Some(id) => {
if id == 0 {
is_admin = true;
}
let user = self
.ctx
.db
.set_user(
id,
name,
username,
&hashed_password,
is_admin,
)
.await
.try_err3(
12,
gettext("Failed to set user in database:"),
)?;
Ok(user.to_json2())
}
None => Ok(json::object! {}),
}
}
}
None => return Err((5, gettext("No RSA key found.")).into()),

View File

@@ -31,6 +31,49 @@ impl RequestParams {
}
}
/// Get parameter and return it as boolean.
/// * `name` - Parameter name.
pub fn get_bool<S: AsRef<str> + ?Sized>(
&self,
name: &S,
) -> Result<Option<bool>, PixivDownloaderError> {
match self.get(name) {
Some(v) => {
let v = v.trim();
if v == "true" {
Ok(Some(true))
} else if v == "false" {
Ok(Some(false))
} else {
match v.parse::<i64>() {
Ok(v) => return Ok(Some(v != 0)),
Err(_) => {}
}
Err(gettext("Invalid boolean value.").into())
}
}
None => Ok(None),
}
}
/// Get parameter and return it as [u64].
/// * `name` - Parameter name.
pub fn get_u64<S: AsRef<str> + ?Sized>(
&self,
name: &S,
) -> Result<Option<u64>, PixivDownloaderError> {
match self.get(name) {
Some(v) => {
let v = v.trim();
match v.parse::<u64>() {
Ok(v) => Ok(Some(v)),
Err(_) => Err(gettext("Invalid unsigned 64bit integer value.").into()),
}
}
None => Ok(None),
}
}
/// Get all parameters with same name.
/// * `name` - Parameter name.
pub fn get_all<S: AsRef<str> + ?Sized>(&self, name: &S) -> Option<&Vec<String>> {