✨ 前端切换模板
This commit is contained in:
parent
ebc45f9b8f
commit
99ac12c9fd
@ -44,6 +44,7 @@ type commonPage struct {
|
|||||||
func (cp *commonPage) serve() {
|
func (cp *commonPage) serve() {
|
||||||
cr := cp.r.Group("")
|
cr := cp.r.Group("")
|
||||||
cr.Use(mygin.Authorize(mygin.AuthorizeOption{}))
|
cr.Use(mygin.Authorize(mygin.AuthorizeOption{}))
|
||||||
|
cr.Use(mygin.PreferredTheme)
|
||||||
cr.GET("/terminal/:id", cp.terminal)
|
cr.GET("/terminal/:id", cp.terminal)
|
||||||
cr.POST("/view-password", cp.issueViewPassword)
|
cr.POST("/view-password", cp.issueViewPassword)
|
||||||
cr.Use(cp.checkViewPassword) // 前端查看密码鉴权
|
cr.Use(cp.checkViewPassword) // 前端查看密码鉴权
|
||||||
@ -98,7 +99,7 @@ func (p *commonPage) checkViewPassword(c *gin.Context) {
|
|||||||
// 验证查看密码
|
// 验证查看密码
|
||||||
viewPassword, _ := c.Cookie(singleton.Conf.Site.CookieName + "-vp")
|
viewPassword, _ := c.Cookie(singleton.Conf.Site.CookieName + "-vp")
|
||||||
if err := bcrypt.CompareHashAndPassword([]byte(viewPassword), []byte(singleton.Conf.Site.ViewPassword)); err != nil {
|
if err := bcrypt.CompareHashAndPassword([]byte(viewPassword), []byte(singleton.Conf.Site.ViewPassword)); err != nil {
|
||||||
c.HTML(http.StatusOK, "theme-"+singleton.Conf.Site.Theme+"/viewpassword", mygin.CommonEnvironment(c, gin.H{
|
c.HTML(http.StatusOK, mygin.GetPreferredTheme(c, "/viewpassword"), mygin.CommonEnvironment(c, gin.H{
|
||||||
"Title": singleton.Localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "VerifyPassword"}),
|
"Title": singleton.Localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "VerifyPassword"}),
|
||||||
"CustomCode": singleton.Conf.Site.CustomCode,
|
"CustomCode": singleton.Conf.Site.CustomCode,
|
||||||
}))
|
}))
|
||||||
@ -128,7 +129,7 @@ func (p *commonPage) service(c *gin.Context) {
|
|||||||
stats, statsStore,
|
stats, statsStore,
|
||||||
}, nil
|
}, nil
|
||||||
})
|
})
|
||||||
c.HTML(http.StatusOK, "theme-"+singleton.Conf.Site.Theme+"/service", mygin.CommonEnvironment(c, gin.H{
|
c.HTML(http.StatusOK, mygin.GetPreferredTheme(c, "/service"), mygin.CommonEnvironment(c, gin.H{
|
||||||
"Title": singleton.Localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "ServicesStatus"}),
|
"Title": singleton.Localizer.MustLocalize(&i18n.LocalizeConfig{MessageID: "ServicesStatus"}),
|
||||||
"Services": res.([]interface{})[0],
|
"Services": res.([]interface{})[0],
|
||||||
"CycleTransferStats": res.([]interface{})[1],
|
"CycleTransferStats": res.([]interface{})[1],
|
||||||
@ -234,7 +235,7 @@ func (cp *commonPage) network(c *gin.Context) {
|
|||||||
Servers: servers,
|
Servers: servers,
|
||||||
})
|
})
|
||||||
|
|
||||||
c.HTML(http.StatusOK, "theme-"+singleton.Conf.Site.Theme+"/network", mygin.CommonEnvironment(c, gin.H{
|
c.HTML(http.StatusOK, mygin.GetPreferredTheme(c, "/network"), mygin.CommonEnvironment(c, gin.H{
|
||||||
"Servers": string(serversBytes),
|
"Servers": string(serversBytes),
|
||||||
"MonitorInfos": string(monitorInfos),
|
"MonitorInfos": string(monitorInfos),
|
||||||
"CustomCode": singleton.Conf.Site.CustomCode,
|
"CustomCode": singleton.Conf.Site.CustomCode,
|
||||||
@ -280,7 +281,7 @@ func (cp *commonPage) home(c *gin.Context) {
|
|||||||
}, true)
|
}, true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.HTML(http.StatusOK, "theme-"+singleton.Conf.Site.Theme+"/home", mygin.CommonEnvironment(c, gin.H{
|
c.HTML(http.StatusOK, mygin.GetPreferredTheme(c, "/home"), mygin.CommonEnvironment(c, gin.H{
|
||||||
"Servers": string(stat),
|
"Servers": string(stat),
|
||||||
"CustomCode": singleton.Conf.Site.CustomCode,
|
"CustomCode": singleton.Conf.Site.CustomCode,
|
||||||
}))
|
}))
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
const CtxKeyAuthorizedUser = "ckau"
|
const CtxKeyAuthorizedUser = "ckau"
|
||||||
const CtxKeyViewPasswordVerified = "ckvpv"
|
const CtxKeyViewPasswordVerified = "ckvpv"
|
||||||
|
const CtxKeyPreferredTheme = "ckpt"
|
||||||
const CacheKeyOauth2State = "p:a:state"
|
const CacheKeyOauth2State = "p:a:state"
|
||||||
|
|
||||||
type Common struct {
|
type Common struct {
|
||||||
|
25
pkg/mygin/preferred_theme.go
Normal file
25
pkg/mygin/preferred_theme.go
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package mygin
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/naiba/nezha/model"
|
||||||
|
"github.com/naiba/nezha/service/singleton"
|
||||||
|
)
|
||||||
|
|
||||||
|
func PreferredTheme(c *gin.Context) {
|
||||||
|
// 采用前端传入的主题
|
||||||
|
if theme, err := c.Cookie("preferred_theme"); err == nil {
|
||||||
|
if _, has := model.Themes[theme]; has {
|
||||||
|
c.Set(model.CtxKeyPreferredTheme, theme)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPreferredTheme(c *gin.Context, path string) string {
|
||||||
|
if theme, has := c.Get(model.CtxKeyPreferredTheme); has {
|
||||||
|
return fmt.Sprintf("theme-%s%s", theme, path)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("theme-%s%s", singleton.Conf.Site.Theme, path)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user