various-rust-utils 0.1.3

Some helpers for rust projects
Documentation
use anyhow::{bail, Error};
use biscuit::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
struct Claims {
    pub mock_private_claim: Option<String>,
}

pub fn extract_user_id(user_token: String) -> Result<String, Error> {
    let token = JWT::<ClaimsSet<Claims>, biscuit::Empty>::new_encoded(&user_token);
    match token.unverified_payload() {
        Ok(claims) => match claims.registered.subject {
            None => bail!("User id can't be extracted from the token!"),
            Some(subject) => Ok(subject),
        },
        Err(_) => bail!("Invalid JWT token!"),
    }
}