From cb6618e9f1d336be0231b437bfdf9b9a558eaf94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Delattre?= Date: Thu, 16 Apr 2020 17:56:22 +0200 Subject: [PATCH] Add the user's last seen date in the admin panel --- backend/models/users.go | 13 ++++++++++++- frontend/js/components/admins/user.js | 4 +++- frontend/js/components/admins/userList.js | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/backend/models/users.go b/backend/models/users.go index 51c9f3a..7d010fb 100644 --- a/backend/models/users.go +++ b/backend/models/users.go @@ -4,6 +4,7 @@ import ( "database/sql" "errors" "fmt" + "time" "github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx/types" @@ -25,7 +26,16 @@ const ( RETURNING *;` deleteUserQuery = `DELETE FROM users WHERE id=:id;` - getAllUsersQuery = `SELECT * FROM users order by created_at;` + getAllUsersQuery = ` + SELECT u.*, tok.last_seen + FROM users u + LEFT OUTER JOIN ( + SELECT username, MAX(last_used) AS last_seen + FROM tokens GROUP BY username + ) AS tok + ON u.name = tok.username + ORDER by u.created_at; + ` getPolochonUsersQuery = `SELECT * FROM users WHERE polochon_id = $1;` ) @@ -51,6 +61,7 @@ type User struct { PolochonID sql.NullString `json:"polochon_id" db:"polochon_id"` PolochonActivated bool `json:"polochon_activated" db:"polochon_activated"` Polochon *Polochon `json:"polochon"` + LastSeen *time.Time `json:"last_seen" db:"last_seen"` } // NewPapiClient creates a new papi client for the given user diff --git a/frontend/js/components/admins/user.js b/frontend/js/components/admins/user.js index 461f504..6d47286 100644 --- a/frontend/js/components/admins/user.js +++ b/frontend/js/components/admins/user.js @@ -1,4 +1,5 @@ import React from "react"; +import moment from "moment"; import PropTypes from "prop-types"; import { useSelector } from "react-redux"; @@ -7,10 +8,10 @@ import { UserEdit } from "./userEdit"; export const User = ({ id }) => { const user = useSelector((state) => state.admin.users.get(id)); const polochon = user.polochon; + const lastSeen = moment(user.last_seen, "YYYY-MM-DDTHH:mm:ss.SZ"); return ( - {user.id} {user.name} { } > + {lastSeen.isValid() ? lastSeen.fromNow() : "-"} diff --git a/frontend/js/components/admins/userList.js b/frontend/js/components/admins/userList.js index 1932311..9485a69 100644 --- a/frontend/js/components/admins/userList.js +++ b/frontend/js/components/admins/userList.js @@ -24,13 +24,13 @@ export const UserList = () => { - + -- 2.47.1
# Name Activated Admin Polochon URL Polochon token Polochon activatedLast seen Actions