1
0
Fork 0
mirror of https://github.com/dani-garcia/vaultwarden.git synced 2025-08-23 11:13:20 +00:00

Add avatar color support

The new web-vault v2023.1.0 supports a custom color for the avatar.
https://github.com/bitwarden/server/pull/2330

This PR adds this feature.
This commit is contained in:
BlackDex 2023-01-11 21:45:11 +01:00 committed by Daniel García
commit acc1474394
No known key found for this signature in database
GPG key ID: FC8A7D14C3CD543A
12 changed files with 42 additions and 1 deletions

View file

@ -39,6 +39,7 @@ pub fn routes() -> Vec<rocket::Route> {
api_key,
rotate_api_key,
get_known_device,
put_avatar,
]
}
@ -228,6 +229,32 @@ async fn post_profile(data: JsonUpcase<ProfileData>, headers: Headers, mut conn:
Ok(Json(user.to_json(&mut conn).await))
}
#[derive(Deserialize)]
#[allow(non_snake_case)]
struct AvatarData {
AvatarColor: Option<String>,
}
#[put("/accounts/avatar", data = "<data>")]
async fn put_avatar(data: JsonUpcase<AvatarData>, headers: Headers, mut conn: DbConn) -> JsonResult {
let data: AvatarData = data.into_inner().data;
// It looks like it only supports the 6 hex color format.
// If you try to add the short value it will not show that color.
// Check and force 7 chars, including the #.
if let Some(color) = &data.AvatarColor {
if color.len() != 7 {
err!("The field AvatarColor must be a HTML/Hex color code with a length of 7 characters")
}
}
let mut user = headers.user;
user.avatar_color = data.AvatarColor;
user.save(&mut conn).await?;
Ok(Json(user.to_json(&mut conn).await))
}
#[get("/users/<uuid>/public-key")]
async fn get_public_keys(uuid: String, _headers: Headers, mut conn: DbConn) -> JsonResult {
let user = match User::find_by_uuid(&uuid, &mut conn).await {