Add user information to login response

Signed-off-by: trivernis <trivernis@protonmail.com>
pull/17/head
trivernis 4 years ago
parent d32eeee33d
commit 50f92ea8da
Signed by: Trivernis
GPG Key ID: DFFFCC2C7A02DB45

@ -21,8 +21,8 @@ use crate::database::Database;
use crate::server::documentation::RESTDocumentation;
use crate::server::messages::{
CreateUserRequest, DeleteRoleResponse, DeleteUserRequest, DeleteUserResponse, ErrorMessage,
FullRoleData, LoginMessage, LogoutConfirmation, LogoutMessage, ModifyRoleRequest,
RefreshMessage, UpdateUserRequest,
FullRoleData, LoginRequest, LoginResponse, LogoutConfirmation, LogoutMessage,
ModifyRoleRequest, RefreshMessage, UpdateUserRequest,
};
use crate::utils::error::DBError;
use crate::utils::get_user_id_from_token;
@ -181,7 +181,7 @@ impl UserHttpServer {
fn build_docs() -> Result<RESTDocumentation, serde_json::Error> {
let mut doc = RESTDocumentation::new("/info");
doc.add_path::<LoginMessage, SessionTokens>(
doc.add_path::<LoginRequest, LoginResponse>(
"/login",
"POST",
"Returns request and refresh tokens",
@ -261,15 +261,25 @@ impl UserHttpServer {
/// Handles the login part of the REST api
fn login(database: &Database, request: &Request) -> HTTPResult<Response> {
let login_request: LoginMessage =
let login_request: LoginRequest =
serde_json::from_str(parse_string_body(request)?.as_str())
.map_err(|e| HTTPError::new(e.to_string(), 400))?;
let tokens = database
.users
.create_tokens(&login_request.email, &login_request.password)?;
Ok(Response::json(&tokens).with_status_code(201))
let user = database
.users
.get_user(get_user_id_from_token(&tokens.request_token).unwrap())?;
Ok(Response::json(&LoginResponse {
request_token: tokens.request_token.clone(),
refresh_token: tokens.refresh_token.clone(),
request_ttl: tokens.request_ttl,
refresh_ttl: tokens.refresh_ttl,
user,
})
.with_status_code(201))
}
/// Handles the new token part of the rest api

@ -10,7 +10,7 @@ use serde::export::Formatter;
use serde::{Deserialize, Serialize};
use zeroize::Zeroize;
use crate::database::models::{CreatePermissionsEntry, Permission};
use crate::database::models::{CreatePermissionsEntry, Permission, UserInformation};
use crate::utils::error::DBError;
use serde_json::Value;
@ -86,11 +86,20 @@ pub struct CreatePermissionsRequest {
#[derive(Deserialize, Zeroize, JsonSchema)]
#[zeroize(drop)]
pub struct LoginMessage {
pub struct LoginRequest {
pub email: String,
pub password: String,
}
#[derive(Deserialize, Serialize, JsonSchema)]
pub struct LoginResponse {
pub request_token: String,
pub refresh_token: String,
pub request_ttl: i32,
pub refresh_ttl: i32,
pub user: UserInformation,
}
#[derive(Deserialize, Zeroize, JsonSchema)]
#[zeroize(drop)]
pub struct RefreshMessage {

Loading…
Cancel
Save