diff --git a/model/settings.go b/model/settings.go index 6d17901..c4e8aec 100644 --- a/model/settings.go +++ b/model/settings.go @@ -11,6 +11,7 @@ type Settings struct { FluorideMode bool `json:"fluoride_mode"` DarkMode bool `json:"dark_mode"` AntiDopamineMode bool `json:"anti_dopamine_mode"` + CSS string `json:"css"` } func NewSettings() *Settings { @@ -25,5 +26,6 @@ func NewSettings() *Settings { FluorideMode: false, DarkMode: false, AntiDopamineMode: false, + CSS: "", } } diff --git a/renderer/model.go b/renderer/model.go index d6cd6f3..2e6c40f 100644 --- a/renderer/model.go +++ b/renderer/model.go @@ -14,6 +14,7 @@ type Context struct { CSRFToken string UserID string AntiDopamineMode bool + UserCSS string Referrer string } diff --git a/service/service.go b/service/service.go index a29345e..5d80c28 100644 --- a/service/service.go +++ b/service/service.go @@ -64,6 +64,7 @@ func (s *service) authenticate(c *client, sid string, csrf string, ref string, t CSRFToken: c.s.CSRFToken, UserID: c.s.UserID, AntiDopamineMode: sett.AntiDopamineMode, + UserCSS: sett.CSS, Referrer: ref, } }() @@ -888,6 +889,9 @@ func (s *service) SaveSettings(c *client, settings *model.Settings) (err error) default: return errInvalidArgument } + if len(settings.CSS) > 1<<20 { + return errInvalidArgument + } sess, err := s.sessionRepo.Get(c.s.ID) if err != nil { return diff --git a/service/transport.go b/service/transport.go index 50bf9be..f448cc3 100644 --- a/service/transport.go +++ b/service/transport.go @@ -463,6 +463,7 @@ func NewHandler(s *service, logger *log.Logger, staticDir string) http.Handler { fluorideMode := c.r.FormValue("fluoride_mode") == "true" darkMode := c.r.FormValue("dark_mode") == "true" antiDopamineMode := c.r.FormValue("anti_dopamine_mode") == "true" + css := c.r.FormValue("css") settings := &model.Settings{ DefaultVisibility: visibility, @@ -475,6 +476,7 @@ func NewHandler(s *service, logger *log.Logger, staticDir string) http.Handler { FluorideMode: fluorideMode, DarkMode: darkMode, AntiDopamineMode: antiDopamineMode, + CSS: css, } err := s.SaveSettings(c, settings) diff --git a/templates/header.tmpl b/templates/header.tmpl index df2b6af..1abb6dd 100644 --- a/templates/header.tmpl +++ b/templates/header.tmpl @@ -25,6 +25,9 @@ {{if $.Ctx.FluorideMode}} {{end}} + {{if $.Ctx.UserCSS}} + + {{end}}
{{end}} diff --git a/templates/settings.tmpl b/templates/settings.tmpl index 4a72b6a..8aee4e2 100644 --- a/templates/settings.tmpl +++ b/templates/settings.tmpl @@ -63,6 +63,12 @@ +