v0.332.0: one sign-in for the file manager — a dashboard pass, a host-only files cookie, a per-box secret header (R-1100, operator D16)
gates / gates (push) Successful in 47s

This commit is contained in:
2026-10-19 04:56:56 +02:00
parent ba4a6f060b
commit 9bdd8f8fe8
21 changed files with 1078 additions and 54 deletions
+3 -3
View File
@@ -99,7 +99,7 @@ func (s *Server) buildDataPathCards(st *stacks.Stack, lang string) []DataPathCar
// bind it) is TEXT, never a link — a link to a missing source opens an empty or broken view.
src, drive := s.fbSourceForApp(st.Name)
if src != "" && s.drivePresent(drive) {
link = fileBrowserLink(domain, src, dp.Path)
link = fileBrowserOpenLink(domain, src, dp.Path)
} else {
s.logger.Printf("[WARN] [web] app page %s: folder %q has no FileBrowser source on this box now (drive %q) — shown without a link", st.Name, dp.Path, drive)
}
@@ -185,7 +185,7 @@ func (s *Server) mediaFolderCards(st *stacks.Stack, domain, lang string, have []
}
card := DataPathCard{Label: s.msgLang(lang, "datapath.media.row", label, src), Role: stacks.RoleLibrary, IsMedia: true}
if present {
card.Link = fileBrowserLink(domain, src, path.Join("media", sub))
card.Link = fileBrowserOpenLink(domain, src, path.Join("media", sub))
if seen[card.Link] {
continue
}
@@ -255,7 +255,7 @@ func (s *Server) filesButtonLink(st *stacks.Stack, cards []DataPathCard) string
}
for _, sp := range s.mediaStoragePaths() {
if s.drivePresent(sp.Path) {
return fileBrowserLink(s.cfg.Customer.Domain, fbSourceName(sp), "media")
return fileBrowserOpenLink(s.cfg.Customer.Domain, fbSourceName(sp), "media")
}
}
return ""