fts_server/
utils.rs

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
24/// Generate a JWT token and account string
25pub 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}