use std::string::String;
use std::vec::Vec;
#[derive(Debug, Clone)]
pub struct User {
pub name: String,
pub roles: Vec<String>,
}
impl User {
pub fn new(name: String) -> Self {
Self {
name,
roles: Vec::new(),
}
}
pub fn add_role(&mut self, role_name: String) {
if !self.roles.contains(&role_name) {
self.roles.push(role_name);
}
}
pub fn remove_role(&mut self, role_name: &str) {
self.roles.retain(|r| r != role_name);
}
pub fn has_role(&self, role_name: &str) -> bool {
self.roles.contains(&role_name.to_string())
}
}