mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-22 17:10:10 +00:00
db: deprecate customEmails/userPage
This commit is contained in:
parent
9c84fb5887
commit
bb75bfd15d
@ -25,18 +25,18 @@ func (app *appContext) GetCustomContent(gc *gin.Context) {
|
|||||||
adminLang = app.storage.lang.chosenAdminLang
|
adminLang = app.storage.lang.chosenAdminLang
|
||||||
}
|
}
|
||||||
list := emailListDTO{
|
list := emailListDTO{
|
||||||
"UserCreated": {Name: app.storage.lang.Email[lang].UserCreated["name"], Enabled: app.storage.customEmails.UserCreated.Enabled},
|
"UserCreated": {Name: app.storage.lang.Email[lang].UserCreated["name"], Enabled: app.storage.MustGetCustomContentKey("UserCreated").Enabled},
|
||||||
"InviteExpiry": {Name: app.storage.lang.Email[lang].InviteExpiry["name"], Enabled: app.storage.customEmails.InviteExpiry.Enabled},
|
"InviteExpiry": {Name: app.storage.lang.Email[lang].InviteExpiry["name"], Enabled: app.storage.MustGetCustomContentKey("InviteExpiry").Enabled},
|
||||||
"PasswordReset": {Name: app.storage.lang.Email[lang].PasswordReset["name"], Enabled: app.storage.customEmails.PasswordReset.Enabled},
|
"PasswordReset": {Name: app.storage.lang.Email[lang].PasswordReset["name"], Enabled: app.storage.MustGetCustomContentKey("PasswordReset").Enabled},
|
||||||
"UserDeleted": {Name: app.storage.lang.Email[lang].UserDeleted["name"], Enabled: app.storage.customEmails.UserDeleted.Enabled},
|
"UserDeleted": {Name: app.storage.lang.Email[lang].UserDeleted["name"], Enabled: app.storage.MustGetCustomContentKey("UserDeleted").Enabled},
|
||||||
"UserDisabled": {Name: app.storage.lang.Email[lang].UserDisabled["name"], Enabled: app.storage.customEmails.UserDisabled.Enabled},
|
"UserDisabled": {Name: app.storage.lang.Email[lang].UserDisabled["name"], Enabled: app.storage.MustGetCustomContentKey("UserDisabled").Enabled},
|
||||||
"UserEnabled": {Name: app.storage.lang.Email[lang].UserEnabled["name"], Enabled: app.storage.customEmails.UserEnabled.Enabled},
|
"UserEnabled": {Name: app.storage.lang.Email[lang].UserEnabled["name"], Enabled: app.storage.MustGetCustomContentKey("UserEnabled").Enabled},
|
||||||
"InviteEmail": {Name: app.storage.lang.Email[lang].InviteEmail["name"], Enabled: app.storage.customEmails.InviteEmail.Enabled},
|
"InviteEmail": {Name: app.storage.lang.Email[lang].InviteEmail["name"], Enabled: app.storage.MustGetCustomContentKey("InviteEmail").Enabled},
|
||||||
"WelcomeEmail": {Name: app.storage.lang.Email[lang].WelcomeEmail["name"], Enabled: app.storage.customEmails.WelcomeEmail.Enabled},
|
"WelcomeEmail": {Name: app.storage.lang.Email[lang].WelcomeEmail["name"], Enabled: app.storage.MustGetCustomContentKey("WelcomeEmail").Enabled},
|
||||||
"EmailConfirmation": {Name: app.storage.lang.Email[lang].EmailConfirmation["name"], Enabled: app.storage.customEmails.EmailConfirmation.Enabled},
|
"EmailConfirmation": {Name: app.storage.lang.Email[lang].EmailConfirmation["name"], Enabled: app.storage.MustGetCustomContentKey("EmailConfirmation").Enabled},
|
||||||
"UserExpired": {Name: app.storage.lang.Email[lang].UserExpired["name"], Enabled: app.storage.customEmails.UserExpired.Enabled},
|
"UserExpired": {Name: app.storage.lang.Email[lang].UserExpired["name"], Enabled: app.storage.MustGetCustomContentKey("UserExpired").Enabled},
|
||||||
"UserLogin": {Name: app.storage.lang.Admin[adminLang].Strings["userPageLogin"], Enabled: app.storage.userPage.Login.Enabled},
|
"UserLogin": {Name: app.storage.lang.Admin[adminLang].Strings["userPageLogin"], Enabled: app.storage.MustGetCustomContentKey("Login").Enabled},
|
||||||
"UserPage": {Name: app.storage.lang.Admin[adminLang].Strings["userPagePage"], Enabled: app.storage.userPage.Page.Enabled},
|
"UserPage": {Name: app.storage.lang.Admin[adminLang].Strings["userPagePage"], Enabled: app.storage.MustGetCustomContentKey("Page").Enabled},
|
||||||
}
|
}
|
||||||
|
|
||||||
filter := gc.Query("filter")
|
filter := gc.Query("filter")
|
||||||
@ -50,10 +50,11 @@ func (app *appContext) GetCustomContent(gc *gin.Context) {
|
|||||||
gc.JSON(200, list)
|
gc.JSON(200, list)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *appContext) getCustomMessage(id string) *customContent {
|
// No longer needed, these are stored by string keys in the database now.
|
||||||
|
/* func (app *appContext) getCustomMessage(id string) *CustomContent {
|
||||||
switch id {
|
switch id {
|
||||||
case "Announcement":
|
case "Announcement":
|
||||||
return &customContent{}
|
return &CustomContent{}
|
||||||
case "UserCreated":
|
case "UserCreated":
|
||||||
return &app.storage.customEmails.UserCreated
|
return &app.storage.customEmails.UserCreated
|
||||||
case "InviteExpiry":
|
case "InviteExpiry":
|
||||||
@ -80,45 +81,38 @@ func (app *appContext) getCustomMessage(id string) *customContent {
|
|||||||
return &app.storage.userPage.Page
|
return &app.storage.userPage.Page
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
} */
|
||||||
|
|
||||||
// @Summary Sets the corresponding custom email.
|
// @Summary Sets the corresponding custom content.
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param customEmails body customEmails true "Content = email (in markdown)."
|
// @Param CustomContent body CustomContent true "Content = email (in markdown)."
|
||||||
// @Success 200 {object} boolResponse
|
// @Success 200 {object} boolResponse
|
||||||
// @Failure 400 {object} boolResponse
|
// @Failure 400 {object} boolResponse
|
||||||
// @Failure 500 {object} boolResponse
|
// @Failure 500 {object} boolResponse
|
||||||
// @Param id path string true "ID of email"
|
// @Param id path string true "ID of content"
|
||||||
// @Router /config/emails/{id} [post]
|
// @Router /config/emails/{id} [post]
|
||||||
// @Security Bearer
|
// @Security Bearer
|
||||||
// @tags Configuration
|
// @tags Configuration
|
||||||
func (app *appContext) SetCustomMessage(gc *gin.Context) {
|
func (app *appContext) SetCustomMessage(gc *gin.Context) {
|
||||||
var req customContent
|
var req CustomContent
|
||||||
gc.BindJSON(&req)
|
gc.BindJSON(&req)
|
||||||
id := gc.Param("id")
|
id := gc.Param("id")
|
||||||
if req.Content == "" {
|
if req.Content == "" {
|
||||||
respondBool(400, false, gc)
|
respondBool(400, false, gc)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
message := app.getCustomMessage(id)
|
message, ok := app.storage.GetCustomContentKey(id)
|
||||||
if message == nil {
|
if !ok {
|
||||||
respondBool(400, false, gc)
|
respondBool(400, false, gc)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
message.Content = req.Content
|
message.Content = req.Content
|
||||||
message.Enabled = true
|
message.Enabled = true
|
||||||
if app.storage.storeCustomEmails() != nil {
|
app.storage.SetCustomContentKey(id, message)
|
||||||
respondBool(500, false, gc)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if app.storage.storeUserPageContent() != nil {
|
|
||||||
respondBool(500, false, gc)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
respondBool(200, true, gc)
|
respondBool(200, true, gc)
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Summary Enable/Disable custom email.
|
// @Summary Enable/Disable custom content.
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Success 200 {object} boolResponse
|
// @Success 200 {object} boolResponse
|
||||||
// @Failure 400 {object} boolResponse
|
// @Failure 400 {object} boolResponse
|
||||||
@ -137,24 +131,17 @@ func (app *appContext) SetCustomMessageState(gc *gin.Context) {
|
|||||||
} else if s != "disable" {
|
} else if s != "disable" {
|
||||||
respondBool(400, false, gc)
|
respondBool(400, false, gc)
|
||||||
}
|
}
|
||||||
message := app.getCustomMessage(id)
|
message, ok := app.storage.GetCustomContentKey(id)
|
||||||
if message == nil {
|
if !ok {
|
||||||
respondBool(400, false, gc)
|
respondBool(400, false, gc)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
message.Enabled = enabled
|
message.Enabled = enabled
|
||||||
if app.storage.storeCustomEmails() != nil {
|
app.storage.SetCustomContentKey(id, message)
|
||||||
respondBool(500, false, gc)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if app.storage.storeUserPageContent() != nil {
|
|
||||||
respondBool(500, false, gc)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
respondBool(200, true, gc)
|
respondBool(200, true, gc)
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Summary Returns the custom email/message (generating it if not set) and list of used variables in it.
|
// @Summary Returns the custom content/message (generating it if not set) and list of used variables in it.
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Success 200 {object} customEmailDTO
|
// @Success 200 {object} customEmailDTO
|
||||||
// @Failure 400 {object} boolResponse
|
// @Failure 400 {object} boolResponse
|
||||||
@ -174,8 +161,8 @@ func (app *appContext) GetCustomMessageTemplate(gc *gin.Context) {
|
|||||||
var values map[string]interface{}
|
var values map[string]interface{}
|
||||||
username := app.storage.lang.Email[lang].Strings.get("username")
|
username := app.storage.lang.Email[lang].Strings.get("username")
|
||||||
emailAddress := app.storage.lang.Email[lang].Strings.get("emailAddress")
|
emailAddress := app.storage.lang.Email[lang].Strings.get("emailAddress")
|
||||||
customMessage := app.getCustomMessage(id)
|
customMessage, ok := app.storage.GetCustomContentKey(id)
|
||||||
if customMessage == nil {
|
if !ok {
|
||||||
app.err.Printf("Failed to get custom message with ID \"%s\"", id)
|
app.err.Printf("Failed to get custom message with ID \"%s\"", id)
|
||||||
respondBool(400, false, gc)
|
respondBool(400, false, gc)
|
||||||
return
|
return
|
||||||
@ -280,13 +267,7 @@ func (app *appContext) GetCustomMessageTemplate(gc *gin.Context) {
|
|||||||
if variables == nil {
|
if variables == nil {
|
||||||
variables = []string{}
|
variables = []string{}
|
||||||
}
|
}
|
||||||
if app.storage.storeCustomEmails() != nil {
|
app.storage.SetCustomContentKey(id, customMessage)
|
||||||
respondBool(500, false, gc)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if app.storage.storeUserPageContent() != nil {
|
|
||||||
respondBool(500, false, gc)
|
|
||||||
}
|
|
||||||
var mail *Message
|
var mail *Message
|
||||||
if id != "UserLogin" && id != "UserPage" {
|
if id != "UserLogin" && id != "UserPage" {
|
||||||
mail, err = app.email.constructTemplate("", "<div class=\"preview-content\"></div>", app)
|
mail, err = app.email.constructTemplate("", "<div class=\"preview-content\"></div>", app)
|
||||||
|
74
email.go
74
email.go
@ -331,10 +331,11 @@ func (emailer *Emailer) constructConfirmation(code, username, key string, app *a
|
|||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
template := emailer.confirmationValues(code, username, key, app, noSub)
|
template := emailer.confirmationValues(code, username, key, app, noSub)
|
||||||
if app.storage.customEmails.EmailConfirmation.Enabled {
|
message := app.storage.MustGetCustomContentKey("EmailConfirmation")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.EmailConfirmation.Content,
|
message.Content,
|
||||||
app.storage.customEmails.EmailConfirmation.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
@ -414,10 +415,11 @@ func (emailer *Emailer) constructInvite(code string, invite Invite, app *appCont
|
|||||||
}
|
}
|
||||||
template := emailer.inviteValues(code, invite, app, noSub)
|
template := emailer.inviteValues(code, invite, app, noSub)
|
||||||
var err error
|
var err error
|
||||||
if app.storage.customEmails.InviteEmail.Enabled {
|
message := app.storage.MustGetCustomContentKey("InviteEmail")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.InviteEmail.Content,
|
message.Content,
|
||||||
app.storage.customEmails.InviteEmail.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
@ -453,10 +455,11 @@ func (emailer *Emailer) constructExpiry(code string, invite Invite, app *appCont
|
|||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
template := emailer.expiryValues(code, invite, app, noSub)
|
template := emailer.expiryValues(code, invite, app, noSub)
|
||||||
if app.storage.customEmails.InviteExpiry.Enabled {
|
message := app.storage.MustGetCustomContentKey("InviteExpiry")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.InviteExpiry.Content,
|
message.Content,
|
||||||
app.storage.customEmails.InviteExpiry.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
@ -507,10 +510,11 @@ func (emailer *Emailer) constructCreated(code, username, address string, invite
|
|||||||
}
|
}
|
||||||
template := emailer.createdValues(code, username, address, invite, app, noSub)
|
template := emailer.createdValues(code, username, address, invite, app, noSub)
|
||||||
var err error
|
var err error
|
||||||
if app.storage.customEmails.UserCreated.Enabled {
|
message := app.storage.MustGetCustomContentKey("UserCreated")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.UserCreated.Content,
|
message.Content,
|
||||||
app.storage.customEmails.UserCreated.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
@ -580,10 +584,11 @@ func (emailer *Emailer) constructReset(pwr PasswordReset, app *appContext, noSub
|
|||||||
}
|
}
|
||||||
template := emailer.resetValues(pwr, app, noSub)
|
template := emailer.resetValues(pwr, app, noSub)
|
||||||
var err error
|
var err error
|
||||||
if app.storage.customEmails.PasswordReset.Enabled {
|
message := app.storage.MustGetCustomContentKey("PasswordReset")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.PasswordReset.Content,
|
message.Content,
|
||||||
app.storage.customEmails.PasswordReset.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
@ -621,10 +626,11 @@ func (emailer *Emailer) constructDeleted(reason string, app *appContext, noSub b
|
|||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
template := emailer.deletedValues(reason, app, noSub)
|
template := emailer.deletedValues(reason, app, noSub)
|
||||||
if app.storage.customEmails.UserDeleted.Enabled {
|
message := app.storage.MustGetCustomContentKey("UserDeleted")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.UserDeleted.Content,
|
message.Content,
|
||||||
app.storage.customEmails.UserDeleted.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
@ -662,10 +668,11 @@ func (emailer *Emailer) constructDisabled(reason string, app *appContext, noSub
|
|||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
template := emailer.disabledValues(reason, app, noSub)
|
template := emailer.disabledValues(reason, app, noSub)
|
||||||
if app.storage.customEmails.UserDisabled.Enabled {
|
message := app.storage.MustGetCustomContentKey("UserDisabled")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.UserDisabled.Content,
|
message.Content,
|
||||||
app.storage.customEmails.UserDisabled.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
@ -703,10 +710,11 @@ func (emailer *Emailer) constructEnabled(reason string, app *appContext, noSub b
|
|||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
template := emailer.enabledValues(reason, app, noSub)
|
template := emailer.enabledValues(reason, app, noSub)
|
||||||
if app.storage.customEmails.UserEnabled.Enabled {
|
message := app.storage.MustGetCustomContentKey("UserEnabled")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.UserEnabled.Content,
|
message.Content,
|
||||||
app.storage.customEmails.UserEnabled.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
@ -758,7 +766,8 @@ func (emailer *Emailer) constructWelcome(username string, expiry time.Time, app
|
|||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
var template map[string]interface{}
|
var template map[string]interface{}
|
||||||
if app.storage.customEmails.WelcomeEmail.Enabled {
|
message := app.storage.MustGetCustomContentKey("WelcomeEmail")
|
||||||
|
if message.Enabled {
|
||||||
template = emailer.welcomeValues(username, expiry, app, noSub, true)
|
template = emailer.welcomeValues(username, expiry, app, noSub, true)
|
||||||
} else {
|
} else {
|
||||||
template = emailer.welcomeValues(username, expiry, app, noSub, false)
|
template = emailer.welcomeValues(username, expiry, app, noSub, false)
|
||||||
@ -768,11 +777,11 @@ func (emailer *Emailer) constructWelcome(username string, expiry time.Time, app
|
|||||||
"date": "{yourAccountWillExpire}",
|
"date": "{yourAccountWillExpire}",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if app.storage.customEmails.WelcomeEmail.Enabled {
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.WelcomeEmail.Content,
|
message.Content,
|
||||||
app.storage.customEmails.WelcomeEmail.Variables,
|
message.Variables,
|
||||||
app.storage.customEmails.WelcomeEmail.Conditionals,
|
message.Conditionals,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
email, err = emailer.constructTemplate(email.Subject, content, app)
|
email, err = emailer.constructTemplate(email.Subject, content, app)
|
||||||
@ -803,10 +812,11 @@ func (emailer *Emailer) constructUserExpired(app *appContext, noSub bool) (*Mess
|
|||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
template := emailer.userExpiredValues(app, noSub)
|
template := emailer.userExpiredValues(app, noSub)
|
||||||
if app.storage.customEmails.UserExpired.Enabled {
|
message := app.storage.MustGetCustomContentKey("UserExpired")
|
||||||
|
if message.Enabled {
|
||||||
content := templateEmail(
|
content := templateEmail(
|
||||||
app.storage.customEmails.UserExpired.Content,
|
message.Content,
|
||||||
app.storage.customEmails.UserExpired.Variables,
|
message.Variables,
|
||||||
nil,
|
nil,
|
||||||
template,
|
template,
|
||||||
)
|
)
|
||||||
|
@ -241,6 +241,45 @@ func migrateToBadger(app *appContext) {
|
|||||||
for k, v := range app.storage.deprecatedProfiles {
|
for k, v := range app.storage.deprecatedProfiles {
|
||||||
app.storage.SetProfileKey(k, v)
|
app.storage.SetProfileKey(k, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app.storage.loadCustomEmails()
|
||||||
|
app.storage.loadUserPageContent()
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("UserCreated"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("UserCreated", app.storage.deprecatedCustomEmails.UserCreated)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("InviteExpiry"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("InviteExpiry", app.storage.deprecatedCustomEmails.InviteExpiry)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("PasswordReset"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("PasswordReset", app.storage.deprecatedCustomEmails.PasswordReset)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("UserDeleted"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("UserDeleted", app.storage.deprecatedCustomEmails.UserDeleted)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("UserDisabled"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("UserDisabled", app.storage.deprecatedCustomEmails.UserDisabled)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("UserEnabled"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("UserEnabled", app.storage.deprecatedCustomEmails.UserEnabled)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("InviteEmail"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("InviteEmail", app.storage.deprecatedCustomEmails.InviteEmail)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("WelcomeEmail"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("WelcomeEmail", app.storage.deprecatedCustomEmails.WelcomeEmail)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("EmailConfirmation"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("EmailConfirmation", app.storage.deprecatedCustomEmails.EmailConfirmation)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("UserExpired"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("UserExpired", app.storage.deprecatedCustomEmails.UserExpired)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("UserLogin"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("UserLogin", app.storage.deprecatedUserPageContent.Login)
|
||||||
|
}
|
||||||
|
if _, ok := app.storage.GetCustomContentKey("UserPage"); !ok {
|
||||||
|
app.storage.SetCustomContentKey("UserPage", app.storage.deprecatedUserPageContent.Page)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Migrate between hyphenated & non-hyphenated user IDs. Doesn't seem to happen anymore, so disabled.
|
// Migrate between hyphenated & non-hyphenated user IDs. Doesn't seem to happen anymore, so disabled.
|
||||||
|
85
storage.go
85
storage.go
@ -40,12 +40,12 @@ type Storage struct {
|
|||||||
deprecatedTelegram telegramStore // Map of Jellyfin User IDs to telegram users.
|
deprecatedTelegram telegramStore // Map of Jellyfin User IDs to telegram users.
|
||||||
deprecatedDiscord discordStore // Map of Jellyfin user IDs to discord users.
|
deprecatedDiscord discordStore // Map of Jellyfin user IDs to discord users.
|
||||||
deprecatedMatrix matrixStore // Map of Jellyfin user IDs to Matrix users.
|
deprecatedMatrix matrixStore // Map of Jellyfin user IDs to Matrix users.
|
||||||
customEmails customEmails
|
|
||||||
userPage userPageContent
|
|
||||||
deprecatedPolicy mediabrowser.Policy
|
deprecatedPolicy mediabrowser.Policy
|
||||||
deprecatedConfiguration mediabrowser.Configuration
|
deprecatedConfiguration mediabrowser.Configuration
|
||||||
lang Lang
|
|
||||||
deprecatedAnnouncements map[string]announcementTemplate
|
deprecatedAnnouncements map[string]announcementTemplate
|
||||||
|
deprecatedCustomEmails customEmails
|
||||||
|
deprecatedUserPageContent userPageContent
|
||||||
|
lang Lang
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *appContext) ConnectDB() {
|
func (app *appContext) ConnectDB() {
|
||||||
@ -368,6 +368,49 @@ func (st *Storage) GetDefaultProfile() Profile {
|
|||||||
return defaultProfile
|
return defaultProfile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetCustomContent returns a copy of the store.
|
||||||
|
func (st *Storage) GetCustomContent() []CustomContent {
|
||||||
|
result := []CustomContent{}
|
||||||
|
err := st.db.Find(&result, &badgerhold.Query{})
|
||||||
|
if err != nil {
|
||||||
|
// fmt.Printf("Failed to find custom content: %v\n", err)
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCustomContentKey returns the value stored in the store's key.
|
||||||
|
func (st *Storage) GetCustomContentKey(k string) (CustomContent, bool) {
|
||||||
|
result := CustomContent{}
|
||||||
|
err := st.db.Get(k, &result)
|
||||||
|
ok := true
|
||||||
|
if err != nil {
|
||||||
|
// fmt.Printf("Failed to find custom content: %v\n", err)
|
||||||
|
ok = false
|
||||||
|
}
|
||||||
|
return result, ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// MustGetCustomContentKey returns the value stored in the store's key, or an empty value.
|
||||||
|
func (st *Storage) MustGetCustomContentKey(k string) CustomContent {
|
||||||
|
result := CustomContent{}
|
||||||
|
st.db.Get(k, &result)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCustomContentKey stores value v in key k.
|
||||||
|
func (st *Storage) SetCustomContentKey(k string, v CustomContent) {
|
||||||
|
v.Name = k
|
||||||
|
err := st.db.Upsert(k, v)
|
||||||
|
if err != nil {
|
||||||
|
// fmt.Printf("Failed to set custom content: %v\n", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCustomContentKey deletes value at key k.
|
||||||
|
func (st *Storage) DeleteCustomContentKey(k string) {
|
||||||
|
st.db.Delete(k, CustomContent{})
|
||||||
|
}
|
||||||
|
|
||||||
type TelegramUser struct {
|
type TelegramUser struct {
|
||||||
JellyfinID string `badgerhold:"key"`
|
JellyfinID string `badgerhold:"key"`
|
||||||
ChatID int64 `badgerhold:"index"`
|
ChatID int64 `badgerhold:"index"`
|
||||||
@ -395,19 +438,21 @@ type EmailAddress struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type customEmails struct {
|
type customEmails struct {
|
||||||
UserCreated customContent `json:"userCreated"`
|
UserCreated CustomContent `json:"userCreated"`
|
||||||
InviteExpiry customContent `json:"inviteExpiry"`
|
InviteExpiry CustomContent `json:"inviteExpiry"`
|
||||||
PasswordReset customContent `json:"passwordReset"`
|
PasswordReset CustomContent `json:"passwordReset"`
|
||||||
UserDeleted customContent `json:"userDeleted"`
|
UserDeleted CustomContent `json:"userDeleted"`
|
||||||
UserDisabled customContent `json:"userDisabled"`
|
UserDisabled CustomContent `json:"userDisabled"`
|
||||||
UserEnabled customContent `json:"userEnabled"`
|
UserEnabled CustomContent `json:"userEnabled"`
|
||||||
InviteEmail customContent `json:"inviteEmail"`
|
InviteEmail CustomContent `json:"inviteEmail"`
|
||||||
WelcomeEmail customContent `json:"welcomeEmail"`
|
WelcomeEmail CustomContent `json:"welcomeEmail"`
|
||||||
EmailConfirmation customContent `json:"emailConfirmation"`
|
EmailConfirmation CustomContent `json:"emailConfirmation"`
|
||||||
UserExpired customContent `json:"userExpired"`
|
UserExpired CustomContent `json:"userExpired"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type customContent struct {
|
// CustomContent stores customized versions of jfa-go content, including emails and user messages.
|
||||||
|
type CustomContent struct {
|
||||||
|
Name string `json:"name" badgerhold:"key"`
|
||||||
Enabled bool `json:"enabled,omitempty"`
|
Enabled bool `json:"enabled,omitempty"`
|
||||||
Content string `json:"content"`
|
Content string `json:"content"`
|
||||||
Variables []string `json:"variables,omitempty"`
|
Variables []string `json:"variables,omitempty"`
|
||||||
@ -415,8 +460,8 @@ type customContent struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type userPageContent struct {
|
type userPageContent struct {
|
||||||
Login customContent `json:"login"`
|
Login CustomContent `json:"login"`
|
||||||
Page customContent `json:"page"`
|
Page CustomContent `json:"page"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// timePattern: %Y-%m-%dT%H:%M:%S.%f
|
// timePattern: %Y-%m-%dT%H:%M:%S.%f
|
||||||
@ -1197,19 +1242,19 @@ func (st *Storage) storeMatrixUsers() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (st *Storage) loadCustomEmails() error {
|
func (st *Storage) loadCustomEmails() error {
|
||||||
return loadJSON(st.customEmails_path, &st.customEmails)
|
return loadJSON(st.customEmails_path, &st.deprecatedCustomEmails)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *Storage) storeCustomEmails() error {
|
func (st *Storage) storeCustomEmails() error {
|
||||||
return storeJSON(st.customEmails_path, st.customEmails)
|
return storeJSON(st.customEmails_path, st.deprecatedCustomEmails)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *Storage) loadUserPageContent() error {
|
func (st *Storage) loadUserPageContent() error {
|
||||||
return loadJSON(st.userPage_path, &st.userPage)
|
return loadJSON(st.userPage_path, &st.deprecatedUserPageContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *Storage) storeUserPageContent() error {
|
func (st *Storage) storeUserPageContent() error {
|
||||||
return storeJSON(st.userPage_path, st.userPage)
|
return storeJSON(st.userPage_path, st.deprecatedUserPageContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *Storage) loadPolicy() error {
|
func (st *Storage) loadPolicy() error {
|
||||||
|
10
views.go
10
views.go
@ -224,13 +224,13 @@ func (app *appContext) MyUserPage(gc *gin.Context) {
|
|||||||
data["discordInviteLink"] = app.discord.inviteChannelName != ""
|
data["discordInviteLink"] = app.discord.inviteChannelName != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
pageMessages := map[string]*customContent{
|
pageMessagesExist := map[string]bool{}
|
||||||
"Login": app.getCustomMessage("UserLogin"),
|
pageMessages := map[string]CustomContent{}
|
||||||
"Page": app.getCustomMessage("UserPage"),
|
pageMessages["Login"], pageMessagesExist["Login"] = app.storage.GetCustomContentKey("UserLogin")
|
||||||
}
|
pageMessages["Page"], pageMessagesExist["Page"] = app.storage.GetCustomContentKey("UserPage")
|
||||||
|
|
||||||
for name, msg := range pageMessages {
|
for name, msg := range pageMessages {
|
||||||
if msg == nil {
|
if !pageMessagesExist[name] {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
data[name+"MessageEnabled"] = msg.Enabled
|
data[name+"MessageEnabled"] = msg.Enabled
|
||||||
|
Loading…
Reference in New Issue
Block a user