cargo add dotenvy

#[actix_web::main]
async fn main() {
    dotenvy::dotenv().unwrap();
    ...
}

async fn ws_handler(request: HttpRequest, body: web::Payload, room_manager: web::Data<Arc<Mutex<RoomManager>>>) -> Result<actix_web::HttpResponse, actix_web::error::Error> {
    let auth_header = request.headers().get("Authorization");

    if let Some(header_value) = auth_header {
        if let Ok(token) = header_value.to_str() {
            let secret = env::var("SECRET_KEY").expect("JWT_SECRET must be set");
            let decoding_key = DecodingKey::from_secret(secret.as_bytes());
            let validation = Validation::default();

            match decode::<Claims>(token, &decoding_key, &validation) {
                Ok(token_data) => {
                    ... rest of the logic
                }
                Err(e) => {
                    return Err(actix_web::error::ErrorUnauthorized("Incorrect jwt"));
                }
            }
        }
    }
    return Err(actix_web::error::ErrorUnauthorized("Incorrect jwt"));
}