diff --git a/src/api/core/public.rs b/src/api/core/public.rs index 1c85ae1b..19eaf0d9 100644 --- a/src/api/core/public.rs +++ b/src/api/core/public.rs @@ -15,7 +15,7 @@ use crate::{ }; pub fn routes() -> Vec { - routes![ldap_import] + routes![ldap_import, save_passkey, get_passkeys] } #[derive(Deserialize)] @@ -190,6 +190,38 @@ async fn ldap_import(data: Json, token: PublicToken, mut conn: Db Ok(()) } +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +struct PasskeyData { + site: String, + passkey: String, +} + +#[post("/public/passkey/save", data = "")] +async fn save_passkey(data: Json, headers: Headers, mut conn: DbConn) -> EmptyResult { + let data = data.into_inner(); + let user_id = headers.user.uuid; + + let mut passkey = Passkey::new(user_id.clone(), data.site.clone(), data.passkey.clone()); + passkey.save(&mut conn).await?; + + Ok(()) +} + +#[get("/public/passkeys")] +async fn get_passkeys(headers: Headers, mut conn: DbConn) -> JsonResult { + let user_id = headers.user.uuid; + let passkeys = Passkey::find_by_user(&user_id, &mut conn).await; + + let passkeys_json: Vec = passkeys.iter().map(|p| p.to_json()).collect(); + + Ok(Json(json!({ + "data": passkeys_json, + "object": "list", + "continuationToken": null + }))) +} + pub struct PublicToken(OrganizationId); #[rocket::async_trait] diff --git a/src/static/templates/admin/settings.hbs b/src/static/templates/admin/settings.hbs index fb066cb4..365da916 100644 --- a/src/static/templates/admin/settings.hbs +++ b/src/static/templates/admin/settings.hbs @@ -135,6 +135,20 @@ {{/if}} +
+ +
+
+ Here you can manage the passkeys stored in the system. +
+ +
+ +
+
+
+ diff --git a/src/static/templates/admin/users.hbs b/src/static/templates/admin/users.hbs index 65470525..94ae4560 100644 --- a/src/static/templates/admin/users.hbs +++ b/src/static/templates/admin/users.hbs @@ -10,6 +10,7 @@ Last Active Entries Attachments + Passkeys Organizations Actions @@ -53,6 +54,9 @@ Size: {{attachment_size}} {{/if}} + + {{passkey_count}} +
{{#each organizations}} diff --git a/src/static/templates/user/login.hbs b/src/static/templates/user/login.hbs new file mode 100644 index 00000000..c162f46b --- /dev/null +++ b/src/static/templates/user/login.hbs @@ -0,0 +1,34 @@ +
+
+
User Login
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +