forked from ReiMerc/skantravels
Create env file for jwt secret
This commit is contained in:
parent
62659a7746
commit
707b7b5fce
2
rust-backend/.env.example
Normal file
2
rust-backend/.env.example
Normal file
@ -0,0 +1,2 @@
|
||||
JWT_SECRET=DenHerMåAldrigVæreOffentligKunIDetteDemoProjekt
|
||||
|
2
rust-backend/.gitignore
vendored
2
rust-backend/.gitignore
vendored
@ -1,4 +1,4 @@
|
||||
target
|
||||
database.sqlite3
|
||||
|
||||
.env
|
||||
|
||||
|
7
rust-backend/Cargo.lock
generated
7
rust-backend/Cargo.lock
generated
@ -426,6 +426,12 @@ dependencies = [
|
||||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dotenvy"
|
||||
version = "0.15.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.34"
|
||||
@ -1125,6 +1131,7 @@ dependencies = [
|
||||
"actix-utils",
|
||||
"actix-web",
|
||||
"base64",
|
||||
"dotenvy",
|
||||
"hmac",
|
||||
"refinery",
|
||||
"rusqlite",
|
||||
|
@ -10,6 +10,7 @@ hmac = "0.12.1"
|
||||
serde_json = "1.0.124"
|
||||
actix-web = "4"
|
||||
actix-utils = "3.0.1"
|
||||
dotenvy = "0.15.7"
|
||||
refinery = { version = "0.8.14", features = ["rusqlite"] }
|
||||
rusqlite = { version = "0.31", features = ["bundled"] }
|
||||
|
||||
|
@ -30,6 +30,8 @@ impl FromRequest for AuthorizedUser {
|
||||
}
|
||||
|
||||
fn get_authorized_user(req: &HttpRequest) -> Option<AuthorizedUser> {
|
||||
let secret = std::env::var("JWT_SECRET").expect("JWT_SECRET must be provided");
|
||||
|
||||
let token = req.headers()
|
||||
.get("Authorization")
|
||||
.and_then(|value| value.to_str().ok())
|
||||
@ -51,7 +53,7 @@ fn get_authorized_user(req: &HttpRequest) -> Option<AuthorizedUser> {
|
||||
let payload: Value = serde_json::from_slice(&URL_SAFE_NO_PAD.decode(jwt_parts.get(1).unwrap()).ok()?).ok()?;
|
||||
let signature = URL_SAFE_NO_PAD.decode(jwt_parts.get(2).unwrap()).ok()?;
|
||||
|
||||
let mut mac = Hmac::<Sha256>::new_from_slice("DenHerMåAldrigVæreOffentligKunIDetteDemoProjekt".as_bytes()).ok()?;
|
||||
let mut mac = Hmac::<Sha256>::new_from_slice(secret.as_bytes()).ok()?;
|
||||
mac.update(format!("{}.{}", jwt_parts.get(0).unwrap(), jwt_parts.get(1).unwrap()).as_bytes());
|
||||
|
||||
if mac.verify_slice(&signature).is_err() {
|
||||
|
@ -31,6 +31,8 @@ async fn authorized(auth: AuthorizedUser) -> impl Responder {
|
||||
|
||||
#[actix_web::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
let _ = dotenvy::dotenv();
|
||||
|
||||
let port = std::env::var("RUST_BACKEND_PORT")
|
||||
.ok()
|
||||
.and_then(|port| port.parse::<u16>().ok())
|
||||
|
Loading…
Reference in New Issue
Block a user