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();
}

Required Methods

Implementors