fix: das Aussehen erreicht die Leiste auch über die Site-Grenze
Marcs Frage: gilt die Einstellung vom Rechner auch für die Leiste am Handy? Sie hätte es nicht getan, sobald HONEYOS_USER_HEADER gesetzt ist: die Einstellungen liegen dann unter "proxy:marc", die Leiste fragt aber ohne Sitzung und landet beim Standardnutzer — dessen Satz ist leer, die Leiste wäre bernsteinfarben geblieben, während der Schreibtisch grün leuchtet. SettingsFor() hilft nach: gibt es genau einen Nutzer mit Einstellungen, gelten dessen. Bei mehreren bleibt es beim Standard, dann ist nicht zu erraten, wer da schaut. Nachgestellt mit einem Pixel-7-Profil ohne jedes Cookie: die Leiste kommt grün an. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5cf210ae97
commit
b4dcb74404
3 files changed
+88
-2
No files matched your search
@@ -208,6 +208,41 @@ func (s *Store) SetSettings(sub string, in map[string]string) error {
|
||||
return s.save()
|
||||
}
|
||||
|
||||
// SettingsFor liefert das Aussehen für sub — und hilft nach, wenn die Frage
|
||||
// über eine Site-Grenze kam.
|
||||
//
|
||||
// Die Leiste in einer fremden App weist sich nur mit dem Schlüssel aus, nicht
|
||||
// mit einer Sitzung: der Browser schickt das Cookie dorthin nicht mit. Sie
|
||||
// landet deshalb beim Standardnutzer. Sind die Einstellungen aber unter einem
|
||||
// Namen aus der Proxy-Kopfzeile gespeichert, wäre der leer — und die Leiste
|
||||
// bliebe bernsteinfarben, während der Schreibtisch grün leuchtet.
|
||||
//
|
||||
// Gibt es genau einen Nutzer mit Einstellungen, gilt dessen Aussehen. Bei
|
||||
// mehreren bleibt es beim Standard: dann ist nicht zu erraten, wer da schaut.
|
||||
func (s *Store) SettingsFor(sub string) map[string]string {
|
||||
if own := s.User(sub).Settings; len(own) > 0 {
|
||||
return own
|
||||
}
|
||||
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
var einziger map[string]string
|
||||
for _, u := range s.d.Users {
|
||||
if len(u.Settings) == 0 {
|
||||
continue
|
||||
}
|
||||
if einziger != nil {
|
||||
return map[string]string{} // mehrere — kein Rateweg
|
||||
}
|
||||
einziger = u.Settings
|
||||
}
|
||||
out := map[string]string{}
|
||||
for k, v := range einziger {
|
||||
out[k] = v
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// AppOrigins nennt die Ursprünge der eingetragenen Apps. Nur sie dürfen die
|
||||
// Leiste mit Anmeldedaten abfragen — die Liste ist damit ihre eigene Freigabe.
|
||||
func (s *Store) AppOrigins() map[string]bool {
|
||||
|
||||
Reference in new issue
Block a user