diff --git a/services/api/database/migrations/20240312000000_sshkeyused.js b/services/api/database/migrations/20240312000000_sshkeyused.js new file mode 100644 index 0000000000..c4a36eb52d --- /dev/null +++ b/services/api/database/migrations/20240312000000_sshkeyused.js @@ -0,0 +1,21 @@ +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.up = async function(knex) { + return knex.schema + .alterTable('ssh_key', (table) => { + table.datetime('last_used'); + }) +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.down = async function(knex) { + return knex.schema + .alterTable('ssh_key', (table) => { + table.dropColumn('last_used'); + }) +}; diff --git a/services/api/src/routes/keys.ts b/services/api/src/routes/keys.ts index dd71ed713d..2d1f531e0b 100644 --- a/services/api/src/routes/keys.ts +++ b/services/api/src/routes/keys.ts @@ -60,6 +60,25 @@ const keysRoute = async ( logger.debug(`Unknown fingerprint: ${fingerprint}`); } + // update key used timestamp + const foundkey = await query( + sqlClientPool, + knex('ssh_key') + .select('id') + .where('key_fingerprint', fingerprint) + .toString(), + ); + var date = new Date(); + const convertDateFormat = R.init; + var lastUsed = convertDateFormat(date.toISOString()); + await query( + sqlClientPool, + knex('ssh_key') + .where('id', foundkey[0].id) + .update({lastUsed: lastUsed}) + .toString(), + ); + res.send(result); }; diff --git a/services/api/src/typeDefs.js b/services/api/src/typeDefs.js index ece12ebc74..3a8a95f265 100644 --- a/services/api/src/typeDefs.js +++ b/services/api/src/typeDefs.js @@ -461,6 +461,7 @@ const typeDefs = gql` keyType: String keyFingerprint: String created: String + lastUsed: String } type User {