Skip to main content

Crate actix_web_admin

Crate actix_web_admin 

Source
Expand description

§actix-web-admin

A powerful admin panel library for Actix-web 4 with a pluggable authentication system.

§Quick Start

use actix_web::{web, App, HttpServer};
use actix_session::storage::CookieSessionStore;
use actix_session::SessionMiddleware;
use actix_web_admin::auth::{UserStore, JsonUserStore};
use actix_web_admin::{AdminRegistry, AdminSite, init_templates};
use std::sync::Arc;

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    let templates = init_templates();

    let store = Arc::new(JsonUserStore::new("users.json"));
    if store.find_by_username("admin").await.unwrap().is_none() {
        store.create_user("admin", "admin@example.com", "Admin", "admin", true).await.unwrap();
    }

    HttpServer::new(move || {
        let mut registry = AdminRegistry::new();
        // Register your resources...

        App::new()
            .app_data(web::Data::new(templates.clone()))
            .app_data(web::Data::new(store.clone() as Arc<dyn UserStore>))
            .wrap(SessionMiddleware::new(CookieSessionStore::default(), actix_web::cookie::Key::generate()))
            .configure(|cfg| {
                AdminSite::new("/admin")
                    .with_user_store(store.clone())
                    .mount(cfg, registry)
            })
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

Re-exports§

pub use resource::AdminResource;
pub use registry::AdminRegistry;
pub use site::AdminSite;

Modules§

auth
cli
handlers
registry
resource
site
types

Functions§

init_templates
Helper to create a Tera instance with embedded templates.

Type Aliases§

AdminTemplates