revolt_database/tasks/
authifier_relay.rs1use async_std::channel::{unbounded, Receiver, Sender};
2use authifier::AuthifierEvent;
3use once_cell::sync::Lazy;
4
5use crate::events::client::EventV1;
6
7static Q: Lazy<(Sender<AuthifierEvent>, Receiver<AuthifierEvent>)> = Lazy::new(unbounded);
8
9pub fn sender() -> Sender<AuthifierEvent> {
11 Q.0.clone()
12}
13
14pub async fn worker() {
16 loop {
17 let event = Q.1.recv().await.unwrap();
18 match &event {
19 AuthifierEvent::CreateSession { .. } | AuthifierEvent::CreateAccount { .. } => {
20 EventV1::Auth(event).global().await
21 }
22 AuthifierEvent::DeleteSession { user_id, .. }
23 | AuthifierEvent::DeleteAllSessions { user_id, .. } => {
24 let id = user_id.to_string();
25 EventV1::Auth(event).private(id).await
26 }
27 }
28 }
29}