More changes to the push token, and filtered multipart logs

This commit is contained in:
Daniel García 2018-12-07 18:25:18 +01:00
parent 738ad2127b
commit 19754c967f
No known key found for this signature in database
GPG Key ID: FC8A7D14C3CD543A
2 changed files with 20 additions and 32 deletions

View File

@ -28,28 +28,22 @@ pub fn routes() -> Vec<Route> {
/// ///
/// Move this somewhere else /// Move this somewhere else
/// ///
use rocket::Route; use rocket::Route;
use rocket_contrib::json::Json; use rocket_contrib::json::Json;
use serde_json::Value; use serde_json::Value;
use crate::db::DbConn; use crate::db::DbConn;
use crate::db::models::*;
use crate::api::{JsonResult, EmptyResult, JsonUpcase}; use crate::api::{EmptyResult, JsonResult, JsonUpcase};
use crate::auth::Headers; use crate::auth::Headers;
#[put("/devices/identifier/<uuid>/clear-token")] #[put("/devices/identifier/<uuid>/clear-token")]
fn clear_device_token(uuid: String, headers: Headers, conn: DbConn) -> EmptyResult { fn clear_device_token(uuid: String) -> EmptyResult {
let device = match Device::find_by_uuid(&uuid, &conn) { // This endpoint doesn't have auth header
Some(device) => device,
None => err!("Device not found")
};
if device.user_uuid != headers.user.uuid { let _ = uuid;
err!("Device not owned by user") // uuid is not related to deviceId
}
// This only clears push token // This only clears push token
// https://github.com/bitwarden/core/blob/master/src/Api/Controllers/DevicesController.cs#L109 // https://github.com/bitwarden/core/blob/master/src/Api/Controllers/DevicesController.cs#L109
@ -58,28 +52,20 @@ fn clear_device_token(uuid: String, headers: Headers, conn: DbConn) -> EmptyResu
} }
#[put("/devices/identifier/<uuid>/token", data = "<data>")] #[put("/devices/identifier/<uuid>/token", data = "<data>")]
fn put_device_token(uuid: String, data: JsonUpcase<Value>, headers: Headers, conn: DbConn) -> JsonResult { fn put_device_token(uuid: String, data: JsonUpcase<Value>, headers: Headers) -> JsonResult {
let _data: Value = data.into_inner().data; let _data: Value = data.into_inner().data;
// Data has a single string value "PushToken"
let _ = uuid;
// uuid is not related to deviceId
let device = match Device::find_by_uuid(&uuid, &conn) { // TODO: This should save the push token, but we don't have push functionality
Some(device) => device,
None => err!("Device not found")
};
if device.user_uuid != headers.user.uuid {
err!("Device not owned by user")
}
// This should save the push token, but we don't have push functionality
use crate::util::format_date;
Ok(Json(json!({ Ok(Json(json!({
"Id": device.uuid, "Id": headers.device.uuid,
"Name": device.name, "Name": headers.device.name,
"Type": device.type_, "Type": headers.device.type_,
"Identifier": device.uuid, "Identifier": headers.device.uuid,
"CreationDate": format_date(&device.created_at), "CreationDate": crate::util::format_date(&headers.device.created_at),
}))) })))
} }
@ -114,7 +100,6 @@ fn get_eq_domains(headers: Headers) -> JsonResult {
}))) })))
} }
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]
#[allow(non_snake_case)] #[allow(non_snake_case)]
struct EquivDomainData { struct EquivDomainData {
@ -137,9 +122,8 @@ fn post_eq_domains(data: JsonUpcase<EquivDomainData>, headers: Headers, conn: Db
match user.save(&conn) { match user.save(&conn) {
Ok(()) => Ok(Json(json!({}))), Ok(()) => Ok(Json(json!({}))),
Err(_) => err!("Failed to save user") Err(_) => err!("Failed to save user"),
} }
} }
#[put("/settings/domains", data = "<data>")] #[put("/settings/domains", data = "<data>")]

View File

@ -24,6 +24,9 @@ mod auth;
mod mail; mod mail;
fn init_rocket() -> Rocket { fn init_rocket() -> Rocket {
// TODO: TO HIDE MOUNTING LOG, call ignite, set logging to disabled, call all the mounts, and then enable it again
rocket::ignite() rocket::ignite()
.mount("/", api::web_routes()) .mount("/", api::web_routes())
.mount("/api", api::core_routes()) .mount("/api", api::core_routes())
@ -77,6 +80,7 @@ fn init_logging() -> Result<(), fern::InitError> {
.level(log::LevelFilter::Debug) .level(log::LevelFilter::Debug)
.level_for("hyper", log::LevelFilter::Warn) .level_for("hyper", log::LevelFilter::Warn)
.level_for("ws", log::LevelFilter::Info) .level_for("ws", log::LevelFilter::Info)
.level_for("multipart", log::LevelFilter::Info)
.chain(std::io::stdout()); .chain(std::io::stdout());
if let Some(log_file) = CONFIG.log_file.as_ref() { if let Some(log_file) = CONFIG.log_file.as_ref() {