From d7e45e2e87acc47d1fa5f63bd7765d98f1b8b02c Mon Sep 17 00:00:00 2001 From: ScrawnyRonnie Date: Sun, 24 Mar 2024 22:31:04 -0400 Subject: [PATCH] less ip info --- api/db.js | 25 ++++++++++++++++++++++--- app/components/LoginList.svelte | 2 +- app/views/UserList.svelte | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/api/db.js b/api/db.js index 0a155cb..989b288 100644 --- a/api/db.js +++ b/api/db.js @@ -262,7 +262,7 @@ export async function get_accounts_login_info(pagination, sort, filter) { // this was a really hard query to get right... // https://www.gab.lc/articles/better_faster_subqueries_postgresql/ const accounts = await pool.query( - 'SELECT account.*, COALESCE(l.lastLogin, TIMESTAMP \'epoch\') as last_login, l2.ip_address, l2.canonical_hostname FROM account' + + 'SELECT account.*, COALESCE(l.lastLogin, TIMESTAMP \'epoch\') as last_login, l2.ip_address FROM account' + ' LEFT OUTER JOIN (' + ' SELECT MAX(id) as loginId, account_id, MAX(login_time) as lastLogin' + ' FROM login' + @@ -282,10 +282,11 @@ export async function get_accounts_login_info(pagination, sort, filter) { r.admin = r.gm; if (r.ip_address !== null) { + const splitOctet = r.ip_address.split('.'); // Split IP address by '.' + const lastOctets = splitOctet.slice(-2).join('.'); r.last_login = { time: r.last_login, - hostname: r.canonical_hostname, - ip: r.ip_address, + ip: lastOctets, } } else { r.last_login = {} @@ -527,7 +528,25 @@ export async function get_account_logins(account_id, pagination) { pagination.item_count = login_count; pagination.page_count = Math.ceil(pagination.item_count / pagination.items_per_page); + logins.rows.forEach((r) => { + + if (r.ip_address !== null) { + const splitOctet = r.ip_address.split('.'); // Split IP address by '.' + const lastOctets = splitOctet.slice(-2).join('.'); + r.ipAddress = { + ip: lastOctets, + } + } else { + r.last_login = {} + } + + delete r.canonical_hostname; + delete r.hostname; + delete r.ip_address; + }); + return logins.rows; + } catch (e) { if (e.code) e.code = pg_error_inv[e.code] diff --git a/app/components/LoginList.svelte b/app/components/LoginList.svelte index 7d0e36e..d0b4c75 100644 --- a/app/components/LoginList.svelte +++ b/app/components/LoginList.svelte @@ -36,7 +36,7 @@ {#each logins as login, i} - {login.hostname} - {login.ip_address} + {login.ipAddress.ip} {moment(login.login_time).format('MMMM Do YYYY, h:mm:ss a')} ({moment(login.login_time).fromNow()}) diff --git a/app/views/UserList.svelte b/app/views/UserList.svelte index 043db0a..6332e4d 100644 --- a/app/views/UserList.svelte +++ b/app/views/UserList.svelte @@ -140,7 +140,7 @@ {moment(user.created).fromNow()} {#if user.last_login.time} {moment(user.last_login.time).fromNow()}
- {user.last_login.hostname} - {user.last_login.ip} + {user.last_login.ip} {:else} Never logged in {/if}