add iam system

add iam store

feat: add crypto crate

introduce decrypt_data and encrypt_data functions

Signed-off-by: bestgopher <84328409@qq.com>
This commit is contained in:
bestgopher
2024-10-14 23:11:49 +08:00
parent 8519a596ec
commit bb2f765e5d
61 changed files with 5319 additions and 64 deletions
+12
View File
@@ -0,0 +1,12 @@
use jsonwebtoken::{Algorithm, DecodingKey, TokenData, Validation};
use crate::jwt::Claims;
use crate::Error;
pub fn decode(token: &str, token_secret: &[u8]) -> Result<TokenData<Claims>, Error> {
Ok(jsonwebtoken::decode(
token,
&DecodingKey::from_secret(token_secret),
&Validation::new(Algorithm::HS512),
)?)
}
+12
View File
@@ -0,0 +1,12 @@
use jsonwebtoken::{Algorithm, EncodingKey, Header};
use crate::jwt::Claims;
use crate::Error;
pub fn encode(token_secret: &[u8], claims: &Claims) -> Result<String, Error> {
Ok(jsonwebtoken::encode(
&Header::new(Algorithm::HS512),
claims,
&EncodingKey::from_secret(token_secret),
)?)
}
+16
View File
@@ -0,0 +1,16 @@
use time::OffsetDateTime;
use super::{decode::decode, encode::encode};
#[test]
fn test() {
let claims = serde_json::json!({
"exp": OffsetDateTime::now_utc().unix_timestamp() + 1000,
"aaa": 1,
"bbb": "bbb"
});
let jwt_token = encode(b"aaaa", &claims).unwrap();
let new_claims = decode(&jwt_token, b"aaaa").unwrap();
assert_eq!(new_claims.claims, claims);
}