tsk-51: Added function to extract id from the token
This commit is contained in:
@@ -41,12 +41,47 @@ pub fn create_service_token(provided: &String, id: &uuid::Uuid) -> Result<(Strin
|
||||
}
|
||||
|
||||
pub fn verify_token(key: &String, token: &String) -> bool {
|
||||
let ver = Hs256.verifier_from_bytes(key.as_bytes()).unwrap();
|
||||
let (payload, _header) = jwt::decode_with_verifier(token, &ver).unwrap();
|
||||
match get_payload(key, token) {
|
||||
Ok((payload, _header)) => {
|
||||
match payload.subject() {
|
||||
Some(_sub) => true,
|
||||
None => false,
|
||||
}
|
||||
}
|
||||
Err(_err) => {
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn extract_id_from_token(key: &String, token: &String) -> Result<uuid::Uuid, std::io::Error> {
|
||||
match get_payload(key, token) {
|
||||
Ok((payload, _header)) => {
|
||||
match payload.claim("id") {
|
||||
Some(id) => {
|
||||
match uuid::Uuid::parse_str(id.as_str().unwrap()) {
|
||||
Ok(extracted) => {
|
||||
Ok(extracted)
|
||||
}
|
||||
Err(err) => {
|
||||
Err(std::io::Error::other(err.to_string()))
|
||||
}
|
||||
}
|
||||
}
|
||||
None => {
|
||||
Err(std::io::Error::other("No claim found"))
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
Err(std::io::Error::other(err.to_string()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn get_payload(key: &String, token: &String) -> Result<(josekit::jwt::JwtPayload, josekit::jws::JwsHeader), josekit::JoseError> {
|
||||
let ver = Hs256.verifier_from_bytes(key.as_bytes()).unwrap();
|
||||
jwt::decode_with_verifier(token, &ver)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
Reference in New Issue
Block a user