use std::collections::HashMap;
use crate::security::{Permission, SAuthBasicCtrl};
pub fn get_default_auth_config() -> SAuthBasicCtrl {
let mut config = SAuthBasicCtrl::new();
config.insert(Permission::Dofile, false);
config.insert(Permission::Load, false);
config.insert(Permission::Loadfile, false);
config.insert(Permission::Require, false);
config.insert(Permission::OsExecute, false);
config.insert(Permission::OsExit, false);
config.insert(Permission::OsGetenv, false);
config.insert(Permission::OsRemove, false);
config.insert(Permission::OsRename, false);
config.insert(Permission::OsSetenv, false);
config.insert(Permission::IoOpen, false);
config.insert(Permission::IoRead, false);
config.insert(Permission::IoWrite, false);
config.insert(Permission::IoPopen, false);
config.insert(Permission::DebugGetinfo, false);
config.insert(Permission::DebugGetlocal, false);
config.insert(Permission::DebugGetmetatable, false);
config.insert(Permission::DebugGetregistry, false);
config.insert(Permission::DebugGetupvalue, false);
config.insert(Permission::DebugGetuservalue, false);
config.insert(Permission::DebugSethook, false);
config.insert(Permission::DebugSetlocal, false);
config.insert(Permission::DebugSetupvalue, false);
config.insert(Permission::DebugSetuservalue, false);
config.insert(Permission::PackageLoadlib, false);
config.insert(Permission::PackagePath, false);
config.insert(Permission::PackageLoaded, false);
config.insert(Permission::PackagePreload, false);
config.insert(Permission::PackageSearchpath, false);
config.insert(Permission::MathRandom, true);
config.insert(Permission::MathRandomseed, true);
config.insert(Permission::StringDump, false);
config
}
pub fn get_authorized_auth_config(changes: SAuthBasicCtrl) -> SAuthBasicCtrl {
let mut default = get_default_auth_config();
for (permission, enabled) in changes {
default.insert(permission, enabled);
}
default
}