kanidmd_lib/idm/
delayed.rs

1use crate::prelude::*;
2use crate::value::AuthType;
3use time::OffsetDateTime;
4use uuid::Uuid;
5use webauthn_rs::prelude::AuthenticationResult;
6
7use std::fmt;
8
9#[derive(Debug)]
10pub enum DelayedAction {
11    PwUpgrade(PasswordUpgrade),
12    UnixPwUpgrade(UnixPasswordUpgrade),
13    WebauthnCounterIncrement(WebauthnCounterIncrement),
14    BackupCodeRemoval(BackupCodeRemoval),
15    AuthSessionRecord(AuthSessionRecord),
16}
17
18pub struct PasswordUpgrade {
19    pub target_uuid: Uuid,
20    pub existing_password: String,
21}
22
23impl fmt::Debug for PasswordUpgrade {
24    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
25        f.debug_struct("PasswordUpgrade")
26            .field("target_uuid", &self.target_uuid)
27            .finish()
28    }
29}
30
31pub struct UnixPasswordUpgrade {
32    pub target_uuid: Uuid,
33    pub existing_password: String,
34}
35
36impl fmt::Debug for UnixPasswordUpgrade {
37    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
38        f.debug_struct("UnixPasswordUpgrade")
39            .field("target_uuid", &self.target_uuid)
40            .finish()
41    }
42}
43
44#[derive(Debug)]
45pub struct WebauthnCounterIncrement {
46    pub target_uuid: Uuid,
47    pub auth_result: AuthenticationResult,
48}
49
50#[derive(Debug)]
51pub struct BackupCodeRemoval {
52    pub target_uuid: Uuid,
53    pub code_to_remove: String,
54}
55
56#[derive(Debug)]
57pub struct AuthSessionRecord {
58    pub target_uuid: Uuid,
59    pub session_id: Uuid,
60    pub cred_id: Uuid,
61    pub label: String,
62    pub expiry: Option<OffsetDateTime>,
63    pub issued_at: OffsetDateTime,
64    pub issued_by: IdentityId,
65    pub scope: SessionScope,
66    pub type_: AuthType,
67}