Struct actix_web_grants::GrantsMiddleware[][src]

pub struct GrantsMiddleware<T> where
    for<'a> T: PermissionsExtractor<'a>, 
{ /* fields omitted */ }
Expand description

Built-in middleware for extracting user permission.

Examples

use actix_web::dev::ServiceRequest;
use actix_web::{get, App, Error, HttpResponse, HttpServer, Responder};

use actix_web_grants::permissions::{AuthDetails, PermissionsCheck};
use actix_web_grants::{proc_macro::has_permissions, GrantsMiddleware};

fn main() {
    HttpServer::new(|| {
        let auth = GrantsMiddleware::with_extractor(extract);
        App::new()
            .wrap(auth)
            .service(you_service)
    });
}

async fn extract(_req: &ServiceRequest) -> Result<Vec<String>, Error> {
   // Here is a place for your code to get user permissions/grants/permissions from a request
   // For example from a token or database

   // Stub example
   Ok(vec!["ROLE_ADMIN".to_string()])
}

// `has_permissions` is one of options to validate permissions.
#[get("/admin")]
#[has_permissions("ROLE_ADMIN")]
async fn you_service() -> impl Responder {
    HttpResponse::Ok().finish()
}

Implementations

Create middleware by PermissionsExtractor.

You can use a built-in implementation for async fn with a suitable signature (see example below). Or you can define your own implementation of trait.

Example of function with implementation of PermissionsExtractor

use actix_web::dev::ServiceRequest;
use actix_web::Error;

async fn extract(_req: &ServiceRequest) -> Result<Vec<String>, Error> {
    // Here is a place for your code to get user permissions/grants/permissions from a request
     // For example from a token or database
    Ok(vec!["WRITE_ACCESS".to_string()])
}

Trait Implementations

Requests handled by the service.

Responses given by the service.

Errors produced by the service.

The TransformService value created by this factory

Errors produced while building a transform service.

The future response value.

Creates and returns a new Transform component, asynchronously

Map this transforms’s factory error to a different error, returning a new transform service factory. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.