From 14bb0930edb6a48da86283c61fb622ba0473ab67 Mon Sep 17 00:00:00 2001 From: janost Date: Mon, 30 Nov 2020 22:00:51 +0100 Subject: [PATCH] Show latest active device as last login on admin page --- src/api/admin.rs | 5 +++++ src/db/models/device.rs | 11 +++++++++++ src/static/templates/admin/users.hbs | 2 ++ 3 files changed, 18 insertions(+) diff --git a/src/api/admin.rs b/src/api/admin.rs index 415311e7eb..c2944b76ba 100644 --- a/src/api/admin.rs +++ b/src/api/admin.rs @@ -297,6 +297,11 @@ fn users_overview(_token: AdminToken, conn: DbConn) -> ApiResult> { usr["cipher_count"] = json!(Cipher::count_owned_by_user(&u.uuid, &conn)); usr["attachment_count"] = json!(Attachment::count_by_user(&u.uuid, &conn)); usr["attachment_size"] = json!(get_display_size(Attachment::size_by_user(&u.uuid, &conn) as i32)); + usr["created_at"] = json!(&u.created_at.format("%Y-%m-%d %H:%M:%S").to_string()); + usr["last_login"] = match Device::find_latest_active_by_user(&u.uuid, &conn) { + Some(device) => json!(device.updated_at.format("%Y-%m-%d %H:%M:%S").to_string()), + None => json!("Never") + }; usr }).collect(); diff --git a/src/db/models/device.rs b/src/db/models/device.rs index 6d6743ffd0..0172ffb59e 100644 --- a/src/db/models/device.rs +++ b/src/db/models/device.rs @@ -178,4 +178,15 @@ impl Device { .from_db() }} } + + pub fn find_latest_active_by_user(user_uuid: &str, conn: &DbConn) -> Option { + db_run! { conn: { + devices::table + .filter(devices::user_uuid.eq(user_uuid)) + .order(devices::updated_at.desc()) + .first::(conn) + .ok() + .from_db() + }} + } } diff --git a/src/static/templates/admin/users.hbs b/src/static/templates/admin/users.hbs index c99d92837d..3896ff829d 100644 --- a/src/static/templates/admin/users.hbs +++ b/src/static/templates/admin/users.hbs @@ -21,6 +21,8 @@
{{Name}} {{Email}} + Created at: {{created_at}} + Last login: {{last_login}} {{#if TwoFactorEnabled}} 2FA