forked from alterminal/alterminal
26 lines
668 B
Go
26 lines
668 B
Go
package auth
|
||
|
||
import (
|
||
"embed"
|
||
"io/fs"
|
||
"net/http"
|
||
)
|
||
|
||
//go:embed assets
|
||
var assetsFS embed.FS
|
||
|
||
// StaticHandler 以 /static/ 前綴提供 assets 內的靜態檔案
|
||
// (Tailwind 建置輸出的 CSS 等),並允許瀏覽器快取。
|
||
func StaticHandler() http.Handler {
|
||
sub, err := fs.Sub(assetsFS, "assets")
|
||
if err != nil {
|
||
panic(err) // embed 路徑固定,僅防呆
|
||
}
|
||
fileServer := http.StripPrefix("/static/", http.FileServerFS(sub))
|
||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
// 內容隨執行檔重建,過期重抓即可。
|
||
w.Header().Set("Cache-Control", "public, max-age=3600")
|
||
fileServer.ServeHTTP(w, r)
|
||
})
|
||
}
|