fix(settings): add captchaEnabled switch to client config
This commit is contained in:
parent
99b424ee2a
commit
67da1ea0eb
3 changed files with 40 additions and 17 deletions
|
@ -5,7 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/ihexxa/quickshare/src/db/sitestore"
|
// "github.com/ihexxa/quickshare/src/db/sitestore"
|
||||||
"github.com/ihexxa/quickshare/src/handlers/settings"
|
"github.com/ihexxa/quickshare/src/handlers/settings"
|
||||||
"github.com/parnurzeal/gorequest"
|
"github.com/parnurzeal/gorequest"
|
||||||
)
|
)
|
||||||
|
@ -46,12 +46,10 @@ func (cl *SettingsClient) GetClientCfg(token *http.Cookie) (*http.Response, *set
|
||||||
return resp, mResp, nil
|
return resp, mResp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cl *SettingsClient) SetClientCfg(cfg *sitestore.ClientConfig, token *http.Cookie) (*http.Response, string, []error) {
|
func (cl *SettingsClient) SetClientCfg(cfgMsg *settings.ClientCfgMsg, token *http.Cookie) (*http.Response, string, []error) {
|
||||||
return cl.r.Patch(cl.url("/v1/settings/client")).
|
return cl.r.Patch(cl.url("/v1/settings/client")).
|
||||||
AddCookie(token).
|
AddCookie(token).
|
||||||
Send(&settings.ClientCfgMsg{
|
Send(cfgMsg).
|
||||||
ClientCfg: cfg,
|
|
||||||
}).
|
|
||||||
End()
|
End()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,10 @@ func (h *SettingsSvc) Health(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClientCfgMsg struct {
|
type ClientCfgMsg struct {
|
||||||
ClientCfg *sitestore.ClientConfig `json:"clientCfg"`
|
SiteName string `json:"siteName"`
|
||||||
|
SiteDesc string `json:"siteDesc"`
|
||||||
|
Bg *sitestore.BgConfig `json:"bg"`
|
||||||
|
CaptchaEnabled bool `json:"captchaEnabled"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *SettingsSvc) GetClientCfg(c *gin.Context) {
|
func (h *SettingsSvc) GetClientCfg(c *gin.Context) {
|
||||||
|
@ -41,7 +44,12 @@ func (h *SettingsSvc) GetClientCfg(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(200, &ClientCfgMsg{ClientCfg: siteCfg.ClientCfg})
|
c.JSON(200, &ClientCfgMsg{
|
||||||
|
SiteName: siteCfg.ClientCfg.SiteName,
|
||||||
|
SiteDesc: siteCfg.ClientCfg.SiteDesc,
|
||||||
|
Bg: siteCfg.ClientCfg.Bg,
|
||||||
|
CaptchaEnabled: h.cfg.BoolOr("Users.CaptchaEnabled", true),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *SettingsSvc) SetClientCfg(c *gin.Context) {
|
func (h *SettingsSvc) SetClientCfg(c *gin.Context) {
|
||||||
|
@ -52,7 +60,13 @@ func (h *SettingsSvc) SetClientCfg(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = validateClientCfg(req.ClientCfg); err != nil {
|
clientCfg := &sitestore.ClientConfig{
|
||||||
|
SiteName: req.SiteName,
|
||||||
|
SiteDesc: req.SiteDesc,
|
||||||
|
Bg: req.Bg,
|
||||||
|
// TODO: captchaEnabled is not persisted in db
|
||||||
|
}
|
||||||
|
if err = validateClientCfg(clientCfg); err != nil {
|
||||||
c.JSON(q.ErrResp(c, 400, err))
|
c.JSON(q.ErrResp(c, 400, err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -63,7 +77,7 @@ func (h *SettingsSvc) SetClientCfg(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = h.deps.SiteStore().SetClientCfg(req.ClientCfg)
|
err = h.deps.SiteStore().SetClientCfg(clientCfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(q.ErrResp(c, 500, err))
|
c.JSON(q.ErrResp(c, 500, err))
|
||||||
return
|
return
|
||||||
|
|
|
@ -2,7 +2,6 @@ package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/ihexxa/quickshare/src/handlers/settings"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -13,6 +12,7 @@ import (
|
||||||
"github.com/ihexxa/quickshare/src/client"
|
"github.com/ihexxa/quickshare/src/client"
|
||||||
"github.com/ihexxa/quickshare/src/db/sitestore"
|
"github.com/ihexxa/quickshare/src/db/sitestore"
|
||||||
q "github.com/ihexxa/quickshare/src/handlers"
|
q "github.com/ihexxa/quickshare/src/handlers"
|
||||||
|
"github.com/ihexxa/quickshare/src/handlers/settings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSettingsHandlers(t *testing.T) {
|
func TestSettingsHandlers(t *testing.T) {
|
||||||
|
@ -85,22 +85,33 @@ func TestSettingsHandlers(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, cfg := range cfgs {
|
for _, cfg := range cfgs {
|
||||||
resp, _, errs := settingsCl.SetClientCfg(cfg, adminToken)
|
clientCfgMsg := &settings.ClientCfgMsg{
|
||||||
|
SiteName: cfg.SiteName,
|
||||||
|
SiteDesc: cfg.SiteDesc,
|
||||||
|
Bg: cfg.Bg,
|
||||||
|
}
|
||||||
|
resp, _, errs := settingsCl.SetClientCfg(clientCfgMsg, adminToken)
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
t.Fatal(errs)
|
t.Fatal(errs)
|
||||||
} else if resp.StatusCode != 200 {
|
} else if resp.StatusCode != 200 {
|
||||||
t.Fatal(resp.StatusCode)
|
t.Fatal(resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, clientCfgMsg, errs := settingsCl.GetClientCfg(adminToken)
|
resp, clientCfgMsgGot, errs := settingsCl.GetClientCfg(adminToken)
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
t.Fatal(errs)
|
t.Fatal(errs)
|
||||||
} else if resp.StatusCode != 200 {
|
} else if resp.StatusCode != 200 {
|
||||||
t.Fatal(resp.StatusCode)
|
t.Fatal(resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !reflect.DeepEqual(cfg, clientCfgMsg.ClientCfg) {
|
cfgEqual := func(cfg1, cfg2 *settings.ClientCfgMsg) bool {
|
||||||
t.Fatalf("client cfgs are not equal: got(%v) expected(%v)", clientCfgMsg.ClientCfg, cfg)
|
return cfg1.SiteName == cfg2.SiteName &&
|
||||||
|
cfg1.SiteDesc == cfg2.SiteDesc &&
|
||||||
|
reflect.DeepEqual(cfg1.Bg, cfg2.Bg)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !cfgEqual(clientCfgMsg, clientCfgMsgGot) {
|
||||||
|
t.Fatalf("client cfgs are not equal: got(%v) expected(%v)", clientCfgMsg, clientCfgMsgGot)
|
||||||
}
|
}
|
||||||
|
|
||||||
for userName := range users {
|
for userName := range users {
|
||||||
|
@ -112,15 +123,15 @@ func TestSettingsHandlers(t *testing.T) {
|
||||||
}
|
}
|
||||||
userToken := client.GetCookie(resp.Cookies(), q.TokenCookie)
|
userToken := client.GetCookie(resp.Cookies(), q.TokenCookie)
|
||||||
|
|
||||||
resp, clientCfgMsg, errs := settingsCl.GetClientCfg(userToken)
|
resp, clientCfgMsgGot, errs := settingsCl.GetClientCfg(userToken)
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
t.Fatal(errs)
|
t.Fatal(errs)
|
||||||
} else if resp.StatusCode != 200 {
|
} else if resp.StatusCode != 200 {
|
||||||
t.Fatal(resp.StatusCode)
|
t.Fatal(resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !reflect.DeepEqual(cfg, clientCfgMsg.ClientCfg) {
|
if !cfgEqual(clientCfgMsg, clientCfgMsgGot) {
|
||||||
t.Fatalf("client cfgs are not equal for user: got(%v) expected(%v)", clientCfgMsg.ClientCfg, cfg)
|
t.Fatalf("client cfgs are not equal: got(%v) expected(%v)", clientCfgMsg, clientCfgMsgGot)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue