pub struct UserAccount {
pub user_id: UserId,
pub username: &'static str,
pub salt: [u8; 32],
pub locked: bool,
pub failed_attempts: u32,
pub mfa_enabled: bool,
pub mfa_secret: Option<[u8; 32]>,
pub expires_at: Option<u64>,
pub password_history_len: usize,
/* private fields */
}Expand description
User account information (fixed-size, no heap allocation).
Fields§
§user_id: UserId§username: &'static str§salt: [u8; 32]§locked: bool§failed_attempts: u32§mfa_enabled: bool§mfa_secret: Option<[u8; 32]>§expires_at: Option<u64>Account expiration timestamp (seconds since boot). None = never
expires.
password_history_len: usizeNumber of valid entries in password_history.
Implementations§
Source§impl UserAccount
impl UserAccount
Sourcepub fn new(user_id: UserId, username: &'static str, password: &str) -> Self
pub fn new(user_id: UserId, username: &'static str, password: &str) -> Self
Create new user account
Sourcepub fn verify_password(&self, password: &str) -> bool
pub fn verify_password(&self, password: &str) -> bool
Verify password
Sourcepub fn is_expired(&self) -> bool
pub fn is_expired(&self) -> bool
Check if the account has expired.
Sourcepub fn set_expiration(&mut self, expires_at: Option<u64>)
pub fn set_expiration(&mut self, expires_at: Option<u64>)
Set account expiration time.
Sourcepub fn change_password(
&mut self,
new_password: &str,
history_size: usize,
) -> Result<(), KernelError>
pub fn change_password( &mut self, new_password: &str, history_size: usize, ) -> Result<(), KernelError>
Change password with history tracking.
Checks that the new password is not the current password and not in
the password history. The history_size parameter controls how many
old (hash, salt) pairs to retain.
Sourcepub fn enable_mfa(&mut self) -> [u8; 32]
pub fn enable_mfa(&mut self) -> [u8; 32]
Enable MFA for this account
Sourcepub fn verify_mfa_token(&self, token: u32) -> bool
pub fn verify_mfa_token(&self, token: u32) -> bool
Verify MFA token (TOTP-like)
Trait Implementations§
Source§impl Clone for UserAccount
impl Clone for UserAccount
Source§fn clone(&self) -> UserAccount
fn clone(&self) -> UserAccount
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for UserAccount
impl RefUnwindSafe for UserAccount
impl Send for UserAccount
impl Sync for UserAccount
impl Unpin for UserAccount
impl UnwindSafe for UserAccount
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)