1mod admin;
2pub use admin::Admin;
3
4mod bidder;
5pub use bidder::Bidder;
6
7mod jwt;
8pub use jwt::{CustomJWTClaims, JWTVerifier};
9
10mod now;
11pub use now::Now;
12
13mod pubsub;
14pub use pubsub::*;
15
16use jwt_simple::{
17 claims::Claims,
18 prelude::{Duration, HS256Key, MACLike},
19};
20use uuid::Uuid;
21
22use fts_core::models::BidderId;
23
24pub fn generate_jwt(
26 raw_key: &str,
27 duration_days: u64,
28 is_admin: bool,
29) -> Result<(String, String), jwt_simple::Error> {
30 let key = HS256Key::from_bytes(raw_key.as_bytes());
31 let account: BidderId = Uuid::new_v4().into();
32 let account_str = account.to_string();
33 let claims = Claims::with_custom_claims(
34 CustomJWTClaims { admin: is_admin },
35 Duration::from_days(duration_days),
36 )
37 .with_subject(&account_str);
38
39 let token = key.authenticate(claims)?;
40 Ok((token, account_str))
41}