You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
6.8 KiB
238 lines
6.8 KiB
package main |
|
|
|
import ( |
|
"encoding/json" |
|
"fmt" |
|
"net/http" |
|
"os" |
|
"path/filepath" |
|
"strings" |
|
|
|
"github.com/gorilla/mux" |
|
"github.com/gorilla/sessions" |
|
) |
|
|
|
var ( |
|
store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY"))) |
|
toks = make(map[string]Tokens) |
|
) |
|
|
|
func topWrapper(r *http.Request) string { |
|
defer log.PanicSafe() |
|
headerTemplate, err := os.ReadFile("./static/header.tpl") |
|
if err != nil { |
|
log.LogError(fmt.Sprintf("Unable to open header template: ```%+v```", err)) |
|
return "" |
|
} |
|
header := string(headerTemplate) |
|
login := "Login" |
|
loggedIn, user := detectUser(r, "topWrapper") |
|
if loggedIn { |
|
login = fmt.Sprintf("Logout %s", user) |
|
} |
|
header = strings.Replace(header, "$LOGIN", login, -1) |
|
return header |
|
} |
|
|
|
func bodyWrapper(r *http.Request, template string) string { |
|
defer log.PanicSafe() |
|
bodyTemplate, err := os.ReadFile(fmt.Sprintf("./static/%+v.tpl", template)) |
|
if err != nil { |
|
log.LogError(fmt.Sprintf("Attempt to load %s.tpl failed. ```%+v```", template, err)) |
|
return bodyWrapper(r, "404") |
|
} |
|
return string(bodyTemplate) |
|
|
|
} |
|