*+ More qs_param! usage
This commit is contained in:
		
							parent
							
								
									3369b4ec48
								
							
						
					
					
						commit
						33ae768ae4
					
				@ -5,7 +5,7 @@ use hyper::StatusCode;
 | 
			
		||||
 | 
			
		||||
use mysql_async::Pool;
 | 
			
		||||
 | 
			
		||||
use serde_json::Value;
 | 
			
		||||
use std::collections::HashMap;
 | 
			
		||||
 | 
			
		||||
use crate::perms::ADMIN_PERMS;
 | 
			
		||||
 | 
			
		||||
@ -14,21 +14,17 @@ use db::{
 | 
			
		||||
    member::Member
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
macro_rules! get_target_id {
 | 
			
		||||
    ($obj:expr) => {
 | 
			
		||||
        match $obj.get("target-id") {
 | 
			
		||||
            Some(val) => val.as_u64(),
 | 
			
		||||
            None => None
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
use crate::qs_param;
 | 
			
		||||
 | 
			
		||||
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 {
 | 
			
		||||
            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
 | 
			
		||||
    let tuid = get_target_id!(params);
 | 
			
		||||
    let target_uid = qs_param!(params, "id", u64);
 | 
			
		||||
 | 
			
		||||
    let new_perms_opt = match params.get("permissions") {
 | 
			
		||||
        Some(val) => val.as_u64(),
 | 
			
		||||
        None => None
 | 
			
		||||
    };
 | 
			
		||||
    let new_perms_opt = qs_param!(params, "permissions", u64);
 | 
			
		||||
 | 
			
		||||
    match (tuid, new_perms_opt) {
 | 
			
		||||
    match (target_uid, new_perms_opt) {
 | 
			
		||||
        (Some(uid), Some(new_perms)) => {
 | 
			
		||||
            // Returns Ok(Response::sucess) | Err(log)
 | 
			
		||||
            if let Err(e) = Member::update_perms(p, uid, new_perms).await {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user