Actix-loginmanager

a simple loginmanager on actix web

Usage example

``` use actix_web::{ web, App, Either, Error, FromRequest, HttpRequest, HttpResponse, HttpServer, Responder, };

use actix_loginmanager::{LoginManager,CookieSession,UserMinix,User};

use futures::{ future, future::{ok, Ready}, Future, };

[derive(Clone)]

struct User2{ id:i32, name:&'static str }

const users:[User2;3] = [ User2{id:1,name:"Tom"}, User2{id:2,name:"Jerry"}, User2{id:3,name:"Spike"}, ];

impl UserMinix for User2 { type Future = Ready>; fn get_user(i: &i32, _: &HttpRequest) -> Self::Future { for index in 0..users.len() { if &users[index].id == i{ return future::ready(Some(users[index].clone())); } } future::ready(None) }

fn get_id(&self) -> i32 {
    self.id
}

}

fn main() { actixrt::System::new("loginmanager") .blockon(async { HttpServer::new(|| { App::new() .wrap(LoginManager::::new( CookieSession::new(b"1231231231231231231231231231231231231231") .secure(false), )) .route( "/", web::get().to(|req: HttpRequest, user: User| { if !user.isauthenticated(){ User::new(users[0].clone()).login(&req); }else{ user.logout(&req); return HttpResponse::Ok().body(format!("isauthenticated:{:?} current user:{:?}", user.isauthenticated(), user.user().unwrap().name)); }; HttpResponse::Ok().body(format!("isauthenticated:{:?} ", user.is_authenticated())) }), ) }) .bind("0.0.0.0:7081").unwrap() .run() .await }).unwrap(); }

```