33 lines
849 B
Rust
33 lines
849 B
Rust
use crypto_utils::jsonwebtoken::{Token, TokenData};
|
|
use homedisk_types::errors::{AuthError, ServerError};
|
|
|
|
/// Validate user token
|
|
pub fn validate_jwt(secret: &[u8], token: &str) -> Result<TokenData, ServerError> {
|
|
match Token::decode(secret, token.to_string()) {
|
|
// if success return claims
|
|
Ok(claims) => Ok(claims),
|
|
// invalid token
|
|
Err(_) => Err(ServerError::AuthError(AuthError::InvalidToken)),
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use homedisk_database::User;
|
|
|
|
use crate::middleware::create_token;
|
|
|
|
use super::validate_jwt;
|
|
|
|
/// Test a token validation
|
|
#[test]
|
|
fn validate_token() {
|
|
let secret = b"secret";
|
|
let user = User::new("username", "password");
|
|
|
|
let token = create_token(&user, secret, 1).unwrap();
|
|
|
|
validate_jwt(secret, &token).unwrap();
|
|
}
|
|
}
|