Skip to content

Commit 5586940

Browse files
committed
Merge remote-tracking branch 'origin/feat/1.4.5/file' into test
2 parents 3acc19c + 5426933 commit 5586940

5 files changed

Lines changed: 77 additions & 18 deletions

File tree

internal/controller/siteinfo_controller.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ func (sc *SiteInfoController) GetSiteInfo(ctx *gin.Context) {
9191
if err != nil {
9292
log.Error(err)
9393
}
94+
if legal, err := sc.siteInfoService.GetSiteLegal(ctx); err == nil {
95+
resp.Legal = &schema.SiteLegalSimpleResp{ExternalContentDisplay: legal.ExternalContentDisplay}
96+
}
9497

9598
handler.HandleResponse(ctx, nil, resp)
9699
}

internal/install/install_req.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,15 @@ type InitEnvironmentResp struct {
9696

9797
// InitBaseInfoReq init base info request
9898
type InitBaseInfoReq struct {
99-
Language string `validate:"required,gt=0,lte=30" json:"lang"`
100-
SiteName string `validate:"required,sanitizer,gt=0,lte=30" json:"site_name"`
101-
SiteURL string `validate:"required,gt=0,lte=512,url" json:"site_url"`
102-
ContactEmail string `validate:"required,email,gt=0,lte=500" json:"contact_email"`
103-
AdminName string `validate:"required,gt=3,lte=30" json:"name"`
104-
AdminPassword string `validate:"required,gte=8,lte=32" json:"password"`
105-
AdminEmail string `validate:"required,email,gt=0,lte=500" json:"email"`
106-
LoginRequired bool `json:"login_required"`
99+
Language string `validate:"required,gt=0,lte=30" json:"lang"`
100+
SiteName string `validate:"required,sanitizer,gt=0,lte=30" json:"site_name"`
101+
SiteURL string `validate:"required,gt=0,lte=512,url" json:"site_url"`
102+
ContactEmail string `validate:"required,email,gt=0,lte=500" json:"contact_email"`
103+
AdminName string `validate:"required,gt=3,lte=30" json:"name"`
104+
AdminPassword string `validate:"required,gte=8,lte=32" json:"password"`
105+
AdminEmail string `validate:"required,email,gt=0,lte=500" json:"email"`
106+
LoginRequired bool `json:"login_required"`
107+
ExternalContentDisplay string `validate:"required,oneof=always_display ask_before_display" json:"external_content_display"`
107108
}
108109

109110
func (r *InitBaseInfoReq) Check() (errFields []*validator.FormErrorField, err error) {

internal/migrations/init.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,15 @@ func NewMentor(ctx context.Context, engine *xorm.Engine, data *InitNeedUserInput
5050
}
5151

5252
type InitNeedUserInputData struct {
53-
Language string
54-
SiteName string
55-
SiteURL string
56-
ContactEmail string
57-
AdminName string
58-
AdminPassword string
59-
AdminEmail string
60-
LoginRequired bool
53+
Language string
54+
SiteName string
55+
SiteURL string
56+
ContactEmail string
57+
AdminName string
58+
AdminPassword string
59+
AdminEmail string
60+
LoginRequired bool
61+
ExternalContentDisplay string
6162
}
6263

6364
func (m *Mentor) InitDB() error {
@@ -79,6 +80,7 @@ func (m *Mentor) InitDB() error {
7980
m.do("init site info user config", m.initSiteInfoUsersConfig)
8081
m.do("init site info privilege rank", m.initSiteInfoPrivilegeRank)
8182
m.do("init site info write", m.initSiteInfoWrite)
83+
m.do("init site info legal", m.initSiteInfoLegalConfig)
8284
m.do("init default content", m.initDefaultContent)
8385
m.do("init default badges", m.initDefaultBadges)
8486
return m.err
@@ -185,7 +187,7 @@ func (m *Mentor) initSiteInfoGeneralData() {
185187
}
186188

187189
func (m *Mentor) initSiteInfoLoginConfig() {
188-
loginConfig := map[string]bool{
190+
loginConfig := map[string]interface{}{
189191
"allow_new_registrations": true,
190192
"allow_email_registrations": true,
191193
"allow_password_login": true,
@@ -199,6 +201,18 @@ func (m *Mentor) initSiteInfoLoginConfig() {
199201
})
200202
}
201203

204+
func (m *Mentor) initSiteInfoLegalConfig() {
205+
legalConfig := map[string]interface{}{
206+
"external_content_display": m.userData.ExternalContentDisplay,
207+
}
208+
legalConfigDataBytes, _ := json.Marshal(legalConfig)
209+
_, m.err = m.engine.Context(m.ctx).Insert(&entity.SiteInfo{
210+
Type: "legal",
211+
Content: string(legalConfigDataBytes),
212+
Status: 1,
213+
})
214+
}
215+
202216
func (m *Mentor) initSiteInfoThemeConfig() {
203217
themeConfig := `{"theme":"default","theme_config":{"default":{"navbar_style":"colored","primary_color":"#0033ff"}}}`
204218
_, m.err = m.engine.Context(m.ctx).Insert(&entity.SiteInfo{

internal/migrations/v25.go

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,45 @@ package migrations
2121

2222
import (
2323
"context"
24+
"encoding/json"
25+
"fmt"
2426

2527
"github.com/apache/answer/internal/entity"
2628
"xorm.io/xorm"
2729
)
2830

2931
func addFileRecord(ctx context.Context, x *xorm.Engine) error {
30-
return x.Context(ctx).Sync(new(entity.FileRecord))
32+
if err := x.Context(ctx).Sync(new(entity.FileRecord)); err != nil {
33+
return err
34+
}
35+
36+
// Set default external_content_display to always_display
37+
legalInfo := &entity.SiteInfo{Type: "legal"}
38+
exist, err := x.Context(ctx).Get(legalInfo)
39+
if err != nil {
40+
return fmt.Errorf("get legal config failed: %w", err)
41+
}
42+
legalConfig := make(map[string]interface{})
43+
if exist {
44+
if err := json.Unmarshal([]byte(legalInfo.Content), &legalConfig); err != nil {
45+
return fmt.Errorf("unmarshal legal config failed: %w", err)
46+
}
47+
}
48+
legalConfig["external_content_display"] = "always_display"
49+
legalConfigBytes, _ := json.Marshal(legalConfig)
50+
if exist {
51+
legalInfo.Content = string(legalConfigBytes)
52+
_, err = x.Context(ctx).ID(legalInfo.ID).Cols("content").Update(legalInfo)
53+
if err != nil {
54+
return fmt.Errorf("update legal config failed: %w", err)
55+
}
56+
} else {
57+
legalInfo.Content = string(legalConfigBytes)
58+
legalInfo.Status = 1
59+
_, err = x.Context(ctx).Insert(legalInfo)
60+
if err != nil {
61+
return fmt.Errorf("insert legal config failed: %w", err)
62+
}
63+
}
64+
return nil
3165
}

internal/schema/siteinfo_schema.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ type SiteLegalReq struct {
118118
TermsOfServiceParsedText string `json:"terms_of_service_parsed_text"`
119119
PrivacyPolicyOriginalText string `json:"privacy_policy_original_text"`
120120
PrivacyPolicyParsedText string `json:"privacy_policy_parsed_text"`
121+
ExternalContentDisplay string `validate:"required,oneof=always_display ask_before_display" json:"external_content_display"`
121122
}
122123

123124
// GetSiteLegalInfoReq site site legal request
@@ -237,6 +238,11 @@ type SiteWriteResp SiteWriteReq
237238
// SiteLegalResp site write response
238239
type SiteLegalResp SiteLegalReq
239240

241+
// SiteLegalSimpleResp site write response
242+
type SiteLegalSimpleResp struct {
243+
ExternalContentDisplay string `validate:"required,oneof=always_display ask_before_display" json:"external_content_display"`
244+
}
245+
240246
// SiteSeoResp site write response
241247
type SiteSeoResp SiteSeoReq
242248

@@ -251,6 +257,7 @@ type SiteInfoResp struct {
251257
SiteSeo *SiteSeoResp `json:"site_seo"`
252258
SiteUsers *SiteUsersResp `json:"site_users"`
253259
Write *SiteWriteResp `json:"site_write"`
260+
Legal *SiteLegalSimpleResp `json:"site_legal"`
254261
Version string `json:"version"`
255262
Revision string `json:"revision"`
256263
}

0 commit comments

Comments
 (0)