Баннер режима разработки в шапке с личным выключателем
Пока лицензия разрешает режим разработки, в шапке висит баннер; нажатие выключает режим визуально для этого пользователя и включает обратно. В шаблонах .DevMode заменён на devOn. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
This commit is contained in:
@@ -1272,15 +1272,18 @@ func registerUsersSetup(mux *http.ServeMux, h *setupHandlers) {
|
||||
mux.HandleFunc("/admin/setup/auth", h.saveAuth)
|
||||
mux.HandleFunc("/admin/setup/auth/test", h.testAD)
|
||||
mux.HandleFunc("/admin/setup/auth/recheck", h.recheckAD)
|
||||
mux.HandleFunc("/admin/dev-toggle", devToggle) // личный выключатель режима разработки
|
||||
}
|
||||
|
||||
// ---------- функции шаблонов ----------
|
||||
|
||||
// authTemplateFuncs — заглушки, переопределяются в render на текущего пользователя.
|
||||
var authTemplateFuncs = template.FuncMap{
|
||||
"curUser": func() *User { return nil },
|
||||
"can": func(perm string) bool { return true },
|
||||
"authOpen": authOpen,
|
||||
"curUser": func() *User { return nil },
|
||||
"can": func(perm string) bool { return true },
|
||||
"authOpen": authOpen,
|
||||
"devOn": func() bool { return devMode(globalRC) }, // режим действует для текущего пользователя
|
||||
"devLicensed": func() bool { return devMode(globalRC) }, // режим разрешён лицензией (для баннера)
|
||||
}
|
||||
|
||||
// renderFor — выполняет layout с функциями, привязанными к текущему пользователю.
|
||||
@@ -1290,11 +1293,14 @@ func renderFor(w http.ResponseWriter, t *template.Template, data any) error {
|
||||
if err != nil {
|
||||
return t.ExecuteTemplate(w, "layout", data)
|
||||
}
|
||||
on := devOnFor(u)
|
||||
t2.Funcs(template.FuncMap{
|
||||
"curUser": func() *User { return u },
|
||||
"curUser": func() *User { return u },
|
||||
"devOn": func() bool { return on },
|
||||
"devLicensed": func() bool { return devMode(globalRC) },
|
||||
"can": func(perm string) bool {
|
||||
if perm == "dev" {
|
||||
return devMode(globalRC) && (authOpen() || u.Can("settings"))
|
||||
return on && (authOpen() || u.Can("settings"))
|
||||
}
|
||||
if authOpen() {
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user