fix: SSO 免登录和本地 JWT 路径现在也会更新 last_login_at
此前仅密码登录路径更新 last_login_at,导致通过 SSO 共享 JWT 或本地 JWT 访问系统的用户始终显示"从未登录"。
This commit is contained in:
parent
726c8bee27
commit
b40802efbf
|
|
@ -1,5 +1,9 @@
|
||||||
# 变更日志
|
# 变更日志
|
||||||
|
|
||||||
|
## 2026-05-18
|
||||||
|
|
||||||
|
- [修复] 用户管理"最后登录"时间不动态更新:SSO 免登录、本地 JWT 会话验证路径现在也会更新 `last_login_at`(此前仅密码登录路径更新,导致 SSO 用户始终显示"从未登录")
|
||||||
|
|
||||||
## 2026-05-15
|
## 2026-05-15
|
||||||
|
|
||||||
- [修复] middleware 移除 `better-sqlite3` 依赖,修复 Edge Runtime 不支持 Node.js 原生模块的编译报错(`The edge runtime does not support Node.js 'fs' module`)
|
- [修复] middleware 移除 `better-sqlite3` 依赖,修复 Edge Runtime 不支持 Node.js 原生模块的编译报错(`The edge runtime does not support Node.js 'fs' module`)
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ export async function getCurrentUser(): Promise<UserPayload | null> {
|
||||||
'SELECT id, username, display_name, role FROM users WHERE username = ? AND is_active = 1'
|
'SELECT id, username, display_name, role FROM users WHERE username = ? AND is_active = 1'
|
||||||
).get(sharedPayload.username) as UserPayload | undefined
|
).get(sharedPayload.username) as UserPayload | undefined
|
||||||
if (row) {
|
if (row) {
|
||||||
db.prepare("UPDATE users SET last_active_at = datetime('now', '+8 hours') WHERE id = ?").run(row.id)
|
db.prepare("UPDATE users SET last_login_at = datetime('now', '+8 hours'), last_active_at = datetime('now', '+8 hours') WHERE id = ?").run(row.id)
|
||||||
row.permissions = getUserPermissions(row.role)
|
row.permissions = getUserPermissions(row.role)
|
||||||
return row
|
return row
|
||||||
}
|
}
|
||||||
|
|
@ -53,7 +53,7 @@ export async function getCurrentUser(): Promise<UserPayload | null> {
|
||||||
const payload = await verifyToken(token)
|
const payload = await verifyToken(token)
|
||||||
if (payload) {
|
if (payload) {
|
||||||
const db2 = getDb()
|
const db2 = getDb()
|
||||||
db2.prepare("UPDATE users SET last_active_at = datetime('now', '+8 hours') WHERE id = ?").run(payload.id)
|
db2.prepare("UPDATE users SET last_login_at = datetime('now', '+8 hours'), last_active_at = datetime('now', '+8 hours') WHERE id = ?").run(payload.id)
|
||||||
payload.permissions = getUserPermissions(payload.role)
|
payload.permissions = getUserPermissions(payload.role)
|
||||||
}
|
}
|
||||||
return payload
|
return payload
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue