(init) id > demote
This commit is contained in:
parent
ce27674a5f
commit
a825544590
1 changed files with 82 additions and 6 deletions
|
@ -411,7 +411,7 @@ pub async fn init(mgr:Arc<ModulesManager>)
|
||||||
botinstance::botlog::debug("Called cmd demote",
|
botinstance::botlog::debug("Called cmd demote",
|
||||||
Some("identity.rs > cmd_demote()".to_string()), Some(&msg));
|
Some("identity.rs > cmd_demote()".to_string()), Some(&msg));
|
||||||
Log::flush();
|
Log::flush();
|
||||||
}
|
|
||||||
// -- If the BotCommand.command was called (e.g., demote) & required roles were validated OUTSIDE of this call
|
// -- If the BotCommand.command was called (e.g., demote) & required roles were validated OUTSIDE of this call
|
||||||
// , this is the current function body to execute
|
// , this is the current function body to execute
|
||||||
|
|
||||||
|
@ -440,6 +440,8 @@ pub async fn init(mgr:Arc<ModulesManager>)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
let tempcomm = BotCommand {
|
let tempcomm = BotCommand {
|
||||||
module : BotModule(String::from("identity")),
|
module : BotModule(String::from("identity")),
|
||||||
command : String::from("getroles"), // command call name
|
command : String::from("getroles"), // command call name
|
||||||
|
@ -1086,7 +1088,12 @@ impl IdentityManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
// pub async fn promote(&mut self,trgchatter:String,channel:Option<ChType>,trg_role:Option<UserRole>) -> ChangeResult {
|
// pub async fn promote(&mut self,trgchatter:String,channel:Option<ChType>,trg_role:Option<UserRole>) -> ChangeResult {
|
||||||
pub async fn promote(&self,trgchatter:String,channel:Option<ChType>,trg_role:Option<UserRole>) -> ChangeResult {
|
pub async fn promote(&self,
|
||||||
|
trgchatter:String,
|
||||||
|
channel:Option<ChType>,
|
||||||
|
trg_role:Option<UserRole>) -> ChangeResult
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
botinstance::botlog::trace(&format!("IN VARS for promote() : Target Chatter : {} ; Target Channel : {:?} ; Targer Role {:?}",
|
botinstance::botlog::trace(&format!("IN VARS for promote() : Target Chatter : {} ; Target Channel : {:?} ; Targer Role {:?}",
|
||||||
trgchatter,channel,trg_role),
|
trgchatter,channel,trg_role),
|
||||||
|
@ -1291,8 +1298,14 @@ impl IdentityManager {
|
||||||
|
|
||||||
return ChangeResult::Success(String::from("Promotion Successful"));
|
return ChangeResult::Success(String::from("Promotion Successful"));
|
||||||
},
|
},
|
||||||
Some(_) => (),
|
Some(_) => {
|
||||||
None => (),
|
botinstance::botlog::warn(&format!("Runtime reached undeveloped code"),
|
||||||
|
Some("identity.rs > promote()".to_string()), None);
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
botinstance::botlog::warn(&format!("Runtime reached undeveloped code"),
|
||||||
|
Some("identity.rs > promote()".to_string()), None);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1362,9 +1375,72 @@ impl IdentityManager {
|
||||||
ChangeResult::Success(String::from("TEST > Promotion Successful"))
|
ChangeResult::Success(String::from("TEST > Promotion Successful"))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn demote(self,trgchatter:String,channel:Option<ChType>,trgRole:Option<UserRole>) -> ChangeResult {
|
|
||||||
|
|
||||||
ChangeResult::Success(String::from("TEST > Promotion Successful"))
|
pub async fn demote(&self,
|
||||||
|
authorizer:String,
|
||||||
|
trgchatter:String,
|
||||||
|
channel:Option<ChType>,
|
||||||
|
trg_role:Option<UserRole>) -> ChangeResult
|
||||||
|
{
|
||||||
|
botinstance::botlog::trace(&format!("IN VARS for demote() : Authorizer : {:?} ; Target Chatter : {} ; Target Channel : {:?} ; Targer Role {:?}",
|
||||||
|
authorizer,trgchatter,channel,trg_role),
|
||||||
|
Some("identity.rs > demote()".to_string()), None);
|
||||||
|
Log::flush();
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check authorizer roles (if any) for the target channel
|
||||||
|
Check Targer User roles (if any) for the target channel
|
||||||
|
Target Channel may be NONE in the case of Non-Channel related roles (FUTURE ENH)
|
||||||
|
|
||||||
|
Use the roles of the above to determine whether the authorizer can demote the target user or not
|
||||||
|
*/
|
||||||
|
|
||||||
|
if let Some(channel) = channel {
|
||||||
|
let authusrroles = self.getspecialuserroles(
|
||||||
|
authorizer.to_lowercase().clone(),
|
||||||
|
Some(channel.clone()))
|
||||||
|
.await;
|
||||||
|
// let authusrroles = authusrroles;
|
||||||
|
|
||||||
|
let trgusrroles = self.getspecialuserroles(
|
||||||
|
trgchatter.to_lowercase().clone(),
|
||||||
|
Some(channel.clone()))
|
||||||
|
.await;
|
||||||
|
|
||||||
|
if ( authusrroles.contains(&UserRole::BotAdmin) ||
|
||||||
|
authusrroles.contains(&UserRole::Broadcaster) ||
|
||||||
|
authusrroles.contains(&UserRole::SupMod(channel.clone())) ) &&
|
||||||
|
trgusrroles.contains(&UserRole::Mod(channel.clone()))
|
||||||
|
{
|
||||||
|
let mut srulock = self.special_roles_users.write().await;
|
||||||
|
let mut usrrolelock = srulock
|
||||||
|
.get_mut(&trgchatter)
|
||||||
|
.expect("Error getting roles")
|
||||||
|
.write().await;
|
||||||
|
if let Some(indx) = usrrolelock.iter().position(|value| *value == UserRole::Mod(channel.clone())){
|
||||||
|
usrrolelock.swap_remove(indx);
|
||||||
|
return ChangeResult::Success("Demoted successfully".to_string())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( authusrroles.contains(&UserRole::BotAdmin) ||
|
||||||
|
authusrroles.contains(&UserRole::Broadcaster) ) &&
|
||||||
|
trgusrroles.contains(&UserRole::SupMod(channel.clone()))
|
||||||
|
{
|
||||||
|
let mut srulock = self.special_roles_users.write().await;
|
||||||
|
let mut usrrolelock = srulock
|
||||||
|
.get_mut(&trgchatter)
|
||||||
|
.expect("Error getting roles")
|
||||||
|
.write().await;
|
||||||
|
usrrolelock.push(UserRole::SupMod(channel.clone()));
|
||||||
|
if let Some(indx) = usrrolelock.iter().position(|value| *value == UserRole::SupMod(channel.clone())){
|
||||||
|
usrrolelock.swap_remove(indx);
|
||||||
|
return ChangeResult::Success("Demoted successfully".to_string())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ChangeResult::Failed(String::from("Did not meet criteria to demote succesfully"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// pub async fn getspecialuserroles(&self,chattername:String,channel:Option<ChType>) -> Option<Arc<RwLock<Vec<UserRole>>>> {
|
// pub async fn getspecialuserroles(&self,chattername:String,channel:Option<ChType>) -> Option<Arc<RwLock<Vec<UserRole>>>> {
|
||||||
|
|
Loading…
Reference in a new issue