Skip to content
Extraits de code Groupes Projets
Vérifiée Valider 84dca778 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

Can now init permissions on cmd pkg from config

The permissions related to a CmdPackage can now be initialized from the
configuration file.
parent 74aaaede
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -36,8 +36,14 @@ impl CmdAdminRegister {
None => return Err("Is not an admin".to_string()),
}
}
#[allow(dead_code)]
pub fn from_vec(admins_vec: Vec<UserId>) -> CmdAdminRegister {
CmdAdminRegister { admins: admins_vec }
}
}
impl CmdAcl {
#[allow(dead_code)]
pub fn action_permited(
cmd_admin_register: &CmdAdminRegister,
......@@ -58,7 +64,7 @@ pub fn action_permited(
),
CmdAcl::List(acl_list) => match acl_list
.iter()
.map(|acl| action_permited(cmd_admin_register, acl, room, user_id))
.map(|acl| CmdAcl::action_permited(cmd_admin_register, acl, room, user_id))
.filter(|acl_res| acl_res.is_err())
.map(|acl_res| acl_res.clone().unwrap_err())
.reduce(|err1, err2| err1 + ", " + &err2)
......@@ -68,3 +74,9 @@ pub fn action_permited(
},
};
}
#[allow(dead_code)]
pub fn from_string(string: String) -> CmdAcl {
CmdAcl::AdminOnly
}
}
use crate::cmd::{
acl::{action_permited, CmdAcl, CmdAdminRegister},
acl::{CmdAcl, CmdAdminRegister},
cmd::Cmd,
};
use ini::Properties as IniSection;
use log::{error, info, warn};
use matrix_sdk::{room::Room, ruma::UserId};
use std::convert::TryFrom;
pub struct CmdPackage {
name: String,
......@@ -16,7 +18,7 @@ pub struct CmdPackage {
impl CmdPackage {
#[allow(dead_code)]
pub fn handle(&self, room: &Room, user_id: &UserId, user_cmd: Vec<String>) -> String {
match action_permited(&self.admin_register, &self.acl, room, user_id) {
match CmdAcl::action_permited(&self.admin_register, &self.acl, room, user_id) {
Err(string) => "Action not permited: ".to_string() + &string,
Ok(()) => match user_cmd.split_first() {
None => "No command was passed".to_string(),
......@@ -31,4 +33,21 @@ impl CmdPackage {
},
}
}
#[allow(dead_code)]
pub fn from_config(section: IniSection, commands: Vec<Cmd>) -> CmdPackage {
CmdPackage {
name: section.get("name").unwrap().to_string(),
acl: CmdAcl::from_string(section.get("acl").unwrap().to_string()),
admin_register: CmdAdminRegister::from_vec(
section
.get("admins")
.unwrap()
.split(",")
.map(|x| UserId::try_from(x).unwrap())
.collect::<Vec<UserId>>(),
),
commands: commands,
}
}
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter