2018-12-09 15:55:36 +00:00
|
|
|
use actix_web::middleware::identity::RequestIdentity;
|
2019-03-09 18:03:09 -08:00
|
|
|
use actix_web::{
|
|
|
|
AsyncResponder, FutureResponse, HttpRequest, HttpResponse, Json, ResponseError,
|
|
|
|
};
|
2018-12-09 15:55:36 +00:00
|
|
|
use futures::future::Future;
|
|
|
|
use utils::create_token;
|
|
|
|
|
|
|
|
use app::AppState;
|
|
|
|
use auth_handler::{AuthData, LoggedUser};
|
|
|
|
|
2019-03-09 18:03:09 -08:00
|
|
|
pub fn login(
|
|
|
|
(auth_data, req): (Json<AuthData>, HttpRequest<AppState>),
|
|
|
|
) -> FutureResponse<HttpResponse> {
|
2018-12-09 15:55:36 +00:00
|
|
|
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()),
|
2019-03-09 18:03:09 -08:00
|
|
|
})
|
|
|
|
.responder()
|
2018-12-09 15:55:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn logout(req: HttpRequest<AppState>) -> HttpResponse {
|
|
|
|
req.forget();
|
|
|
|
HttpResponse::Ok().into()
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn get_me(logged_user: LoggedUser) -> HttpResponse {
|
|
|
|
HttpResponse::Ok().json(logged_user)
|
|
|
|
}
|