use actix_web::middleware::identity::RequestIdentity; use actix_web::{ AsyncResponder, FutureResponse, HttpRequest, HttpResponse, Json, ResponseError, }; use futures::future::Future; use utils::create_token; use app::AppState; use auth_handler::{AuthData, LoggedUser}; pub fn login( (auth_data, req): (Json, HttpRequest), ) -> FutureResponse { req.state() .db .send(auth_data.into_inner()) .from_err() .and_then(move |res| match res { Ok(user) => { let token = create_token(&user)?; req.remember(token); Ok(HttpResponse::Ok().into()) } Err(err) => Ok(err.error_response()), }) .responder() } pub fn logout(req: HttpRequest) -> HttpResponse { req.forget(); HttpResponse::Ok().into() } pub fn get_me(logged_user: LoggedUser) -> HttpResponse { HttpResponse::Ok().json(logged_user) }