[client] Leave userMessage empty on deadline-rejected event; use metadata key

Daemon-layer PublishEvent userMessage strings are not localized — the UI
reads metadata keys and builds its own locale-aware copy (same pattern
as the session-warning events in event.go). Drop the hardcoded English
sentence from the deadline-rejected event and instead surface the
rejection reason via a new MetaSessionDeadlineRejected metadata key so
the UI can detect and localize it.

https://claude.ai/code/session_01Y3bQoNgcVjTD4zDTvv7a8u
This commit is contained in:
Claude
2026-06-07 20:04:20 +00:00
parent 8920c07058
commit 7f1de927dd
2 changed files with 10 additions and 2 deletions

View File

@@ -33,6 +33,13 @@ const (
// for the T-10 event, FinalWarningLead for the T-2 event) so the UI
// can show "expires in ~N minutes" without hardcoding either constant.
MetaSessionLeadMinutes = "lead_minutes"
// MetaSessionDeadlineRejected is set to the rejection reason when the
// daemon discards a deadline received from the management server (e.g.
// pre-epoch, too far in the future, or past the clock-skew tolerance).
// The UI uses this key to detect the event and display a localized
// message; userMessage is intentionally left empty for the same reason
// as the warning events above.
MetaSessionDeadlineRejected = "session_deadline_rejected"
)
// expiresAtLayout is the wire format used for MetaSessionExpiresAt.

View File

@@ -10,6 +10,7 @@ import (
"google.golang.org/protobuf/types/known/timestamppb"
cProto "github.com/netbirdio/netbird/client/proto"
"github.com/netbirdio/netbird/client/internal/auth/sessionwatch"
"github.com/netbirdio/netbird/client/system"
)
@@ -56,8 +57,8 @@ func (e *Engine) ApplySessionDeadline(ts *timestamppb.Timestamp) {
cProto.SystemEvent_ERROR,
cProto.SystemEvent_AUTHENTICATION,
"session deadline rejected",
"The session expiry time from the server could not be applied. Re-login may be required.",
map[string]string{"reason": err.Error()},
"",
map[string]string{sessionwatch.MetaSessionDeadlineRejected: err.Error()},
)
}
}