fix: expire websocket admin sessions

This commit is contained in:
sagitchu
2026-05-14 01:24:03 +08:00
parent bd13477fa3
commit 583a3834f9
2 changed files with 25 additions and 0 deletions
+3
View File
@@ -642,6 +642,9 @@ func (s *Server) validateAdminSession(userID int64, claims auth.Claims) bool {
if s == nil {
return false
}
if claims.Exp <= time.Now().Unix() {
return false
}
if s.getUserAuthState == nil {
return true
}
+22
View File
@@ -86,3 +86,25 @@ func TestValidateAdminSessionRejectsAuthStateChanges(t *testing.T) {
})
}
}
func TestValidateAdminSessionRejectsExpiredToken(t *testing.T) {
secret := "unit-test-secret"
token, err := auth.GenerateToken(1, "admin_user", 0, secret)
if err != nil {
t.Fatalf("generate token: %v", err)
}
claims, err := auth.ParseClaims(token, secret)
if err != nil {
t.Fatalf("parse claims: %v", err)
}
claims.Exp = 1
server := NewServer(nil, secret)
server.SetUserAuthStateLookup(func(userID int64) (*auth.UserAuthState, error) {
return &auth.UserAuthState{ID: userID, RoleID: 0, Status: 1, PasswordChangedAt: 0}, nil
})
if ok := server.validateAdminSession(1, claims); ok {
t.Fatal("expected expired token to be rejected")
}
}