Trait actix_web_middleware_opa::OPARequest
source · pub trait OPARequest<S>where
Self: Sized,{
fn from_http_request(req: &HttpRequest<S>) -> Result<Self, String>;
}
Expand description
Middleware
for validating access against Open Policy Agent.
extern crate actix_web;
extern crate actix_web_middleware_opa;
#[macro_use]
extern crate serde_derive;
extern crate serde;
use actix_web::{http, middleware, App, HttpResponse};
use actix_web_middleware_opa::*;
#[derive(Deserialize)]
struct PolicyDecision {
result: PolicyDecisionResult,
}
#[derive(Deserialize)]
struct PolicyDecisionResult {
allow: bool,
}
impl OPAResponse for PolicyDecision {
fn allowed(&self) -> bool {
self.result.allow
}
}
type Verifier = PolicyVerifier<HTTPTokenAuthRequest, PolicyDecision>;
fn main() {
let app = App::new()
.middleware(Verifier::build("http://localhost:8181/opa/api".to_string()))
.resource("/", |r| {
r.method(http::Method::GET).f(|_| HttpResponse::Ok());
})
.finish();
}