mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-03-29 16:11:01 +03:00
Allow configuring remote control permissions for different users (#13974)
Signed-off-by: 21pages <sunboeasy@gmail.com>
This commit is contained in:
@@ -2277,6 +2277,28 @@ pub fn str2color(s: &str, alpha: u8) -> u32 {
|
||||
(alpha as u32) << 24 | rgb
|
||||
}
|
||||
|
||||
/// Check control permission state from a u64 bitmap.
|
||||
/// Each permission uses 2 bits: 0 = not set, 1 = disable, 2 = enable, 3 = invalid (treated as not set)
|
||||
/// Returns: Some(true) = enabled, Some(false) = disabled, None = not set or invalid
|
||||
pub fn get_control_permission(
|
||||
permissions: u64,
|
||||
permission: hbb_common::rendezvous_proto::control_permissions::Permission,
|
||||
) -> Option<bool> {
|
||||
use hbb_common::protobuf::Enum;
|
||||
let index = permission.value();
|
||||
if index >= 0 && index < 32 {
|
||||
let shift = index * 2;
|
||||
let value = (permissions >> shift) & 0b11;
|
||||
match value {
|
||||
1 => Some(false), // disable
|
||||
2 => Some(true), // enable
|
||||
_ => None, // 0 = not set, 3 = invalid
|
||||
}
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
Reference in New Issue
Block a user