use bevy::{log::LogPlugin, prelude::*}; use bevy_key_rotation::{ AuthProvider, KeyRotationPlugin, KeyRotationSettings, Keystore, StartKeyRotationExt, TokenRotationError, }; use std::sync::Arc; pub struct MyAuthProvider; #[cfg_attr(not(target_arch = "wasm32"), bevy_key_rotation::async_trait)] #[cfg_attr(target_arch = "wasm32", bevy_key_rotation::async_trait(?Send))] impl AuthProvider for MyAuthProvider { async fn authenticate( &self, username: String, password: String, ) -> Result { Ok(Keystore { username, password, access_token: random_token(), refresh_token: random_token(), access_expires: bevy_key_rotation::Instant::now() + bevy_key_rotation::Duration::from_secs(10), refresh_expires: bevy_key_rotation::Instant::now() + bevy_key_rotation::Duration::from_secs(20), }) } async fn refresh(&self, keystore: Keystore) -> Result { Ok(Keystore { username: keystore.username, password: keystore.password, access_token: random_token(), refresh_token: keystore.refresh_token, access_expires: keystore.access_expires + bevy_key_rotation::Duration::from_secs(5), refresh_expires: keystore.refresh_expires, }) } } fn status_check(time: Res