*+ More qs_param! usage

This commit is contained in:
shockrah 2021-02-05 16:29:32 -08:00
parent 3369b4ec48
commit 33ae768ae4

View File

@ -5,7 +5,7 @@ use hyper::StatusCode;
use mysql_async::Pool; use mysql_async::Pool;
use serde_json::Value; use std::collections::HashMap;
use crate::perms::ADMIN_PERMS; use crate::perms::ADMIN_PERMS;
@ -14,21 +14,17 @@ use db::{
member::Member member::Member
}; };
macro_rules! get_target_id { use crate::qs_param;
($obj:expr) => {
match $obj.get("target-id") {
Some(val) => val.as_u64(),
None => None
}
}
}
pub async fn new_admin(p: &Pool, response: &mut Response<Body>, params: Value) {
// @requires: owner level permission as regular admins can have conflict of interests
// @user-param: "target-id": Number
if let Some(uid) = get_target_id!(params) { pub async fn new_admin(p: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
/*
* @requires: owner level permission as regular admins can have conflict of interests
* @user param: "target-id": Number
*/
let uid = qs_param!(params, "target-id", u64);
if let Some(uid) = uid {
if let Err(e) = Member::update_perms(p, uid, ADMIN_PERMS).await { if let Err(e) = Member::update_perms(p, uid, ADMIN_PERMS).await {
eprintln!("{}", e); eprintln!("{}", e);
} }
@ -41,16 +37,13 @@ pub async fn new_admin(p: &Pool, response: &mut Response<Body>, params: Value) {
} }
pub async fn set_permissions(p: &Pool, response: &mut Response<Body>, params: Value) { pub async fn set_permissions(p: &Pool, response: &mut Response<Body>, params: HashMap<&str, &str>) {
// @requiresL: admin level permissions, admins can't touch other admins // @requiresL: admin level permissions, admins can't touch other admins
let tuid = get_target_id!(params); let target_uid = qs_param!(params, "id", u64);
let new_perms_opt = match params.get("permissions") { let new_perms_opt = qs_param!(params, "permissions", u64);
Some(val) => val.as_u64(),
None => None
};
match (tuid, new_perms_opt) { match (target_uid, new_perms_opt) {
(Some(uid), Some(new_perms)) => { (Some(uid), Some(new_perms)) => {
// Returns Ok(Response::sucess) | Err(log) // Returns Ok(Response::sucess) | Err(log)
if let Err(e) = Member::update_perms(p, uid, new_perms).await { if let Err(e) = Member::update_perms(p, uid, new_perms).await {