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}
{user.last_login.hostname} - {user.last_login.ip}
+ {user.last_login.ip}
{:else}
Never logged in
{/if}