src/config/cached_user_info.rs: new check_privs helper
This commit is contained in:
		| @ -2,7 +2,7 @@ | ||||
|  | ||||
| use std::sync::Arc; | ||||
|  | ||||
| use anyhow::{Error}; | ||||
| use anyhow::{Error, bail}; | ||||
|  | ||||
| use proxmox::api::section_config::SectionConfigData; | ||||
| use proxmox::api::UserInformation; | ||||
| @ -45,6 +45,25 @@ impl CachedUserInfo { | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     pub fn check_privs( | ||||
|         &self, | ||||
|         userid: &str, | ||||
|         path: &[&str], | ||||
|         required_privs: u64, | ||||
|         partial: bool, | ||||
|     ) -> Result<(), Error> { | ||||
|         let user_privs = self.lookup_privs(userid, path); | ||||
|         let allowed = if partial { | ||||
|             (user_privs & required_privs) != 0 | ||||
|         } else { | ||||
|             (user_privs & required_privs) == required_privs | ||||
|         }; | ||||
|         if !allowed { | ||||
|             bail!("no permissions"); | ||||
|         } | ||||
|         Ok(()) | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl UserInformation for CachedUserInfo { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user