diff --git a/src/bunker.go b/src/bunker.go index 0b62310..a66078e 100644 --- a/src/bunker.go +++ b/src/bunker.go @@ -157,6 +157,19 @@ func (e mainEnv) configurationDump(w http.ResponseWriter, r *http.Request, ps ht w.Write([]byte(finalJSON)) } +func (e mainEnv) cookieSettings(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + resultJSON, _, err := e.db.getLegalBasisCookieConf() + if err != nil { + returnError(w, r, "internal error", 405, err, nil) + return + } + resultUIConfJSON, _ := json.Marshal(e.conf.UI) + finalJSON := fmt.Sprintf(`{"status":"ok","ui":%s,"rows":%s}`, resultUIConfJSON, resultJSON) + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + w.Write([]byte(finalJSON)) +} + // UI configuration dump API call. func (e mainEnv) uiConfigurationDump(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { if len(e.conf.Notification.MagicSyncURL) != 0 && @@ -190,6 +203,7 @@ func (e mainEnv) setupRouter() *httprouter.Router { router.GET("/v1/sys/backup", e.backupDB) router.GET("/v1/sys/configuration", e.configurationDump) router.GET("/v1/sys/uiconfiguration", e.uiConfigurationDump) + router.GET("/v1/sys/cookiesettings", e.cookieSettings) router.POST("/v1/user", e.userNew) router.GET("/v1/user/:mode/:address", e.userGet) diff --git a/src/lbasis_db.go b/src/lbasis_db.go index eeea34f..b8e8590 100644 --- a/src/lbasis_db.go +++ b/src/lbasis_db.go @@ -96,6 +96,35 @@ func (dbobj dbcon) revokeLegalBasis(brief string) (bool, error) { return true, nil } +func (dbobj dbcon) getLegalBasisCookieConf() ([]byte, int, error) { + records, err := dbobj.store.GetList(storage.TblName.Legalbasis, "status", "active", 0,0, "required") + if err != nil { + return nil, 0, err + } + count := len(records) + if count == 0 { + return []byte("[]"), 0, err + } + count = 0 + var results []bson.M + for _, element := range records { + if _, ok := element["module"]; ok { + if element["module"].(string) == "cookie-popup" { + results = append(results, element) + count = count + 1 + } + } + } + if count == 0 { + return []byte("[]"), 0, err + } + resultJSON, err := json.Marshal(results) + if err != nil { + return nil, 0, err + } + return resultJSON, count, nil +} + func (dbobj dbcon) getLegalBasisRecords() ([]byte, int, error) { records, err := dbobj.store.GetList0(storage.TblName.Legalbasis, 0, 0, "") if err != nil {