mirror of
https://github.com/Sonny93/my-links.git
synced 2025-12-08 22:53:25 +00:00
feat: add user last seen field
This commit is contained in:
@@ -16,10 +16,9 @@ class UserWithRelationCountDto {
|
||||
isAdmin: this.user.isAdmin,
|
||||
createdAt: this.user.createdAt,
|
||||
updatedAt: this.user.updatedAt,
|
||||
count: {
|
||||
link: Number(this.user.$extras.totalLinks),
|
||||
collection: Number(this.user.$extras.totalCollections),
|
||||
},
|
||||
lastSeenAt: this.user.lastSeenAt,
|
||||
linksCount: Number(this.user.$extras.totalLinks),
|
||||
collectionsCount: Number(this.user.$extras.totalCollections),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
9
app/middleware/silent_auth_middleware.ts
Normal file
9
app/middleware/silent_auth_middleware.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import type { HttpContext } from '@adonisjs/core/http';
|
||||
import type { NextFn } from '@adonisjs/core/types/http';
|
||||
|
||||
export default class SilentAuthMiddleware {
|
||||
async handle(ctx: HttpContext, next: NextFn) {
|
||||
await ctx.auth.check();
|
||||
return next();
|
||||
}
|
||||
}
|
||||
16
app/middleware/update_user_last_seen_middleware.ts
Normal file
16
app/middleware/update_user_last_seen_middleware.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import type { HttpContext } from '@adonisjs/core/http';
|
||||
import type { NextFn } from '@adonisjs/core/types/http';
|
||||
import { DateTime } from 'luxon';
|
||||
|
||||
export default class UpdateUserLastSeenMiddleware {
|
||||
async handle(ctx: HttpContext, next: NextFn) {
|
||||
const user = ctx.auth.user;
|
||||
if (user) {
|
||||
user.lastSeenAt = DateTime.local();
|
||||
await user.save();
|
||||
}
|
||||
|
||||
const output = await next();
|
||||
return output;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import type { GoogleToken } from '@adonisjs/ally/types';
|
||||
import { column, computed, hasMany } from '@adonisjs/lucid/orm';
|
||||
import type { HasMany } from '@adonisjs/lucid/types/relations';
|
||||
import AppBaseModel from './app_base_model.js';
|
||||
import { DateTime } from 'luxon';
|
||||
|
||||
export default class User extends AppBaseModel {
|
||||
@column()
|
||||
@@ -44,4 +45,10 @@ export default class User extends AppBaseModel {
|
||||
get fullname() {
|
||||
return this.nickName || this.name;
|
||||
}
|
||||
|
||||
@column.dateTime({
|
||||
autoCreate: true,
|
||||
autoUpdate: true,
|
||||
})
|
||||
declare lastSeenAt: DateTime;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user