1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
pub mod createuser_args; pub mod deleteuser_args; pub use createuser_args::{CreateHome, CreatePrimaryGroup, CreateUserArgs}; pub use deleteuser_args::{DeleteHome, DeletePrimaryGroup, DeleteUserArgs}; pub trait UserDBRead { fn get_all_users(&self) -> Vec<&crate::User>; fn get_user_by_name(&self, name: &str) -> Option<&crate::User>; fn get_user_by_id(&self, uid: u32) -> Option<&crate::User>; fn get_all_groups(&self) -> Vec<crate::Group>; fn get_group_by_name(&self, name: &str) -> Option<&crate::Group>; fn get_group_by_id(&self, name: u32) -> Option<&crate::Group>; } pub trait UserDBValidation { fn is_uid_valid_and_free(&self, uid: u32) -> bool; fn is_username_valid_and_free(&self, name: &str) -> bool; fn is_gid_valid_and_free(&self, gid: u32) -> bool; fn is_groupname_valid_and_free(&self, name: &str) -> bool; } pub trait UserDBWrite { fn delete_user(&mut self, params: DeleteUserArgs) -> Result<crate::User, crate::UserLibError>; fn new_user(&mut self, params: CreateUserArgs) -> Result<&crate::User, crate::UserLibError>; fn delete_group(&mut self, group: &crate::Group) -> Result<(), crate::UserLibError>; fn new_group(&mut self) -> Result<&crate::Group, crate::UserLibError>; } pub trait UserRead { fn get_username(&self) -> Option<&str>; fn get_uid(&self) -> u32; fn get_gid(&self) -> u32; fn get_password(&self) -> Option<&str>; fn get_gecos(&self) -> Option<&crate::Gecos>; fn get_home_dir(&self) -> Option<&str>; fn get_shell_path(&self) -> Option<&str>; fn get_full_name(&self) -> Option<&str>; fn get_room(&self) -> Option<&str>; fn get_phone_work(&self) -> Option<&str>; fn get_phone_home(&self) -> Option<&str>; fn get_other(&self) -> Option<&Vec<String>>; } pub trait UserWrite { fn set_username(&self, username: String); fn set_uid(&self, uid: u32); fn set_gid(&self, gid: u32); fn set_password(&self, password: String); fn set_gecos(&self, gecos: crate::Gecos); fn set_home_dir(&self, home_dir: String); fn set_shell_path(&self, shell_path: String); fn set_full_name(&self, full_name: String); fn set_room(&self, room: String); fn set_phone_work(&self, phone_work: String); fn set_phone_home(&self, phone_home: String); fn set_other(&self, other: Option<Vec<String>>); } pub trait GroupRead { fn get_groupname(&self) -> Option<&str>; fn get_encrypted_password(&self) -> Option<&str>; fn get_gid(&self) -> Option<u32>; fn get_member_names(&self) -> Option<Vec<&str>>; } pub trait GroupWrite<T> { fn set_groupname(&self) -> Option<crate::Group>; fn set_password(&self) -> Option<crate::Group>; fn set_gid(&self) -> Option<crate::Group>; fn add_member(user: T) -> Option<crate::Group>; fn remove_member(user: T) -> Option<crate::Group>; }