/
rorikstr
/
multiberry-backend
Обзор
Документация
Войти
/
rorikstr
/
multiberry-backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/auth/jwt.rs
40 строк
1 KB
Rorik Star Platinum
finish 30% lol
09 ноя 2025, 21:03
09 ноя 2025, 21:03
ea863ad
Код
Авторство
О чём код?
// src/auth/jwt.rs use jsonwebtoken::{decode, encode, DecodingKey, EncodingKey, Header, Validation}; use serde::{Deserialize, Serialize}; use chrono::{Duration, Utc}; use std::env; #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Claims { pub sub: i32, pub bank_user_id: String, pub exp: i64, } pub fn generate_token(user_id: i32, bank_user_id: &str) -> Result<String, jsonwebtoken::errors::Error> { let secret = env::var("JWT_SECRET").unwrap_or_else(|_| "super_secret_key_change_in_production".to_string()); let claims = Claims { sub: user_id, bank_user_id: bank_user_id.to_string(), exp: (Utc::now() + Duration::days(7)).timestamp(), }; encode( &Header::default(), &claims, &EncodingKey::from_secret(secret.as_bytes()), ) } pub fn validate_token(token: &str) -> Result<Claims, jsonwebtoken::errors::Error> { let secret = env::var("JWT_SECRET").unwrap_or_else(|_| "super_secret_key_change_in_production".to_string()); decode::<Claims>( token, &DecodingKey::from_secret(secret.as_bytes()), &Validation::default(), ) .map(|data| data.claims) }