use async_trait::async_trait;
#[derive(Debug, Clone)]
#[non_exhaustive]
pub enum AccountEvent {
Created {
account_id: String,
email: String,
},
Activated {
account_id: String,
},
Disabled {
account_id: String,
reason: String,
},
Locked {
account_id: String,
reason: String,
},
Unlocked {
account_id: String,
},
Suspended {
account_id: String,
reason: String,
},
Expired {
account_id: String,
},
Deleted {
account_id: String,
},
EmailVerified {
account_id: String,
},
PasswordChanged {
account_id: String,
},
RolesUpdated {
account_id: String,
roles: Vec<String>,
},
ProfileUpdated {
account_id: String,
},
}
#[async_trait]
pub trait AccountNotification: Send + Sync + 'static {
async fn on_event(&self, event: AccountEvent);
}