|
|
@ -3,6 +3,7 @@
|
|
|
|
//
|
|
|
|
//
|
|
|
|
use crate::util::read_file;
|
|
|
|
use crate::util::read_file;
|
|
|
|
use chrono::{Duration, Utc};
|
|
|
|
use chrono::{Duration, Utc};
|
|
|
|
|
|
|
|
use once_cell::sync::Lazy;
|
|
|
|
|
|
|
|
|
|
|
|
use jsonwebtoken::{self, Algorithm, Header};
|
|
|
|
use jsonwebtoken::{self, Algorithm, Header};
|
|
|
|
use serde::de::DeserializeOwned;
|
|
|
|
use serde::de::DeserializeOwned;
|
|
|
@ -13,23 +14,21 @@ use crate::CONFIG;
|
|
|
|
|
|
|
|
|
|
|
|
const JWT_ALGORITHM: Algorithm = Algorithm::RS256;
|
|
|
|
const JWT_ALGORITHM: Algorithm = Algorithm::RS256;
|
|
|
|
|
|
|
|
|
|
|
|
lazy_static! {
|
|
|
|
pub static DEFAULT_VALIDITY: Lazy<Duration> = Lazy::new(|| Duration::hours(2));
|
|
|
|
pub static ref DEFAULT_VALIDITY: Duration = Duration::hours(2);
|
|
|
|
static JWT_HEADER: Lazy<Header> = Lazy::new(|| Header::new(JWT_ALGORITHM));
|
|
|
|
static ref JWT_HEADER: Header = Header::new(JWT_ALGORITHM);
|
|
|
|
pub static JWT_LOGIN_ISSUER: Lazy<String> = Lazy::new(|| format!("{}|login", CONFIG.domain_origin()));
|
|
|
|
pub static ref JWT_LOGIN_ISSUER: String = format!("{}|login", CONFIG.domain_origin());
|
|
|
|
static JWT_INVITE_ISSUER: Lazy<String> = Lazy::new(|| format!("{}|invite", CONFIG.domain_origin()));
|
|
|
|
pub static ref JWT_INVITE_ISSUER: String = format!("{}|invite", CONFIG.domain_origin());
|
|
|
|
static JWT_DELETE_ISSUER: Lazy<String> = Lazy::new(|| format!("{}|delete", CONFIG.domain_origin()));
|
|
|
|
pub static ref JWT_DELETE_ISSUER: String = format!("{}|delete", CONFIG.domain_origin());
|
|
|
|
static JWT_VERIFYEMAIL_ISSUER: Lazy<String> = Lazy::new(|| format!("{}|verifyemail", CONFIG.domain_origin()));
|
|
|
|
pub static ref JWT_VERIFYEMAIL_ISSUER: String = format!("{}|verifyemail", CONFIG.domain_origin());
|
|
|
|
static JWT_ADMIN_ISSUER: Lazy<String> = Lazy::new(|| format!("{}|admin", CONFIG.domain_origin()));
|
|
|
|
pub static ref JWT_ADMIN_ISSUER: String = format!("{}|admin", CONFIG.domain_origin());
|
|
|
|
static PRIVATE_RSA_KEY: Lazy<Vec<u8>> = Lazy::new(|| match read_file(&CONFIG.private_rsa_key()) {
|
|
|
|
static ref PRIVATE_RSA_KEY: Vec<u8> = match read_file(&CONFIG.private_rsa_key()) {
|
|
|
|
|
|
|
|
Ok(key) => key,
|
|
|
|
Ok(key) => key,
|
|
|
|
Err(e) => panic!("Error loading private RSA Key.\n Error: {}", e),
|
|
|
|
Err(e) => panic!("Error loading private RSA Key.\n Error: {}", e),
|
|
|
|
};
|
|
|
|
});
|
|
|
|
static ref PUBLIC_RSA_KEY: Vec<u8> = match read_file(&CONFIG.public_rsa_key()) {
|
|
|
|
static PUBLIC_RSA_KEY: Lazy<Vec<u8>> = Lazy::new(|| match read_file(&CONFIG.public_rsa_key()) {
|
|
|
|
Ok(key) => key,
|
|
|
|
Ok(key) => key,
|
|
|
|
Err(e) => panic!("Error loading public RSA Key.\n Error: {}", e),
|
|
|
|
Err(e) => panic!("Error loading public RSA Key.\n Error: {}", e),
|
|
|
|
};
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pub fn encode_jwt<T: Serialize>(claims: &T) -> String {
|
|
|
|
pub fn encode_jwt<T: Serialize>(claims: &T) -> String {
|
|
|
|
match jsonwebtoken::encode(&JWT_HEADER, claims, &PRIVATE_RSA_KEY) {
|
|
|
|
match jsonwebtoken::encode(&JWT_HEADER, claims, &PRIVATE_RSA_KEY) {
|
|
|
|