mirror of
https://github.com/go-gitea/gitea.git
synced 2026-05-09 01:17:43 +02:00
Fix user settings sidebar showing disabled features on some pages (#36958)
Move UserDisabledFeatures context data into a shared SettingsCtxData middleware for the /user/settings route group, so it is set consistently on all pages (including Notifications, Actions, etc.) instead of only on the handlers that remembered to set it individually. Fixes #36954
This commit is contained in:
parent
cf1e4d7c42
commit
86401fd5fd
@ -7,7 +7,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/templates"
|
"code.gitea.io/gitea/modules/templates"
|
||||||
shared "code.gitea.io/gitea/routers/web/shared/secrets"
|
shared "code.gitea.io/gitea/routers/web/shared/secrets"
|
||||||
@ -74,7 +73,6 @@ func Secrets(ctx *context.Context) {
|
|||||||
ctx.Data["Title"] = ctx.Tr("actions.actions")
|
ctx.Data["Title"] = ctx.Tr("actions.actions")
|
||||||
ctx.Data["PageType"] = "secrets"
|
ctx.Data["PageType"] = "secrets"
|
||||||
ctx.Data["PageIsSharedSettingsSecrets"] = true
|
ctx.Data["PageIsSharedSettingsSecrets"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
sCtx, err := getSecretsCtx(ctx)
|
sCtx, err := getSecretsCtx(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -321,7 +321,6 @@ func loadAccountData(ctx *context.Context) {
|
|||||||
ctx.Data["Emails"] = emails
|
ctx.Data["Emails"] = emails
|
||||||
ctx.Data["ActivationsPending"] = pendingActivation
|
ctx.Data["ActivationsPending"] = pendingActivation
|
||||||
ctx.Data["CanAddEmails"] = !pendingActivation || !setting.Service.RegisterEmailConfirm
|
ctx.Data["CanAddEmails"] = !pendingActivation || !setting.Service.RegisterEmailConfirm
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
if setting.Service.UserDeleteWithCommentsMaxTime != 0 {
|
if setting.Service.UserDeleteWithCommentsMaxTime != 0 {
|
||||||
ctx.Data["UserDeleteWithCommentsMaxTime"] = setting.Service.UserDeleteWithCommentsMaxTime.String()
|
ctx.Data["UserDeleteWithCommentsMaxTime"] = setting.Service.UserDeleteWithCommentsMaxTime.String()
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import (
|
|||||||
|
|
||||||
auth_model "code.gitea.io/gitea/models/auth"
|
auth_model "code.gitea.io/gitea/models/auth"
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/templates"
|
"code.gitea.io/gitea/modules/templates"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
@ -27,7 +26,6 @@ const (
|
|||||||
func Applications(ctx *context.Context) {
|
func Applications(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("settings.applications")
|
ctx.Data["Title"] = ctx.Tr("settings.applications")
|
||||||
ctx.Data["PageIsSettingsApplications"] = true
|
ctx.Data["PageIsSettingsApplications"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
loadApplicationsData(ctx)
|
loadApplicationsData(ctx)
|
||||||
|
|
||||||
@ -39,7 +37,6 @@ func ApplicationsPost(ctx *context.Context) {
|
|||||||
form := web.GetForm(ctx).(*forms.NewAccessTokenForm)
|
form := web.GetForm(ctx).(*forms.NewAccessTokenForm)
|
||||||
ctx.Data["Title"] = ctx.Tr("settings_title")
|
ctx.Data["Title"] = ctx.Tr("settings_title")
|
||||||
ctx.Data["PageIsSettingsApplications"] = true
|
ctx.Data["PageIsSettingsApplications"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
_ = ctx.Req.ParseForm()
|
_ = ctx.Req.ParseForm()
|
||||||
var scopeNames []string
|
var scopeNames []string
|
||||||
|
|||||||
@ -6,7 +6,6 @@ package setting
|
|||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/templates"
|
"code.gitea.io/gitea/modules/templates"
|
||||||
shared_user "code.gitea.io/gitea/routers/web/shared/user"
|
shared_user "code.gitea.io/gitea/routers/web/shared/user"
|
||||||
@ -20,7 +19,6 @@ const (
|
|||||||
func BlockedUsers(ctx *context.Context) {
|
func BlockedUsers(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("user.block.list")
|
ctx.Data["Title"] = ctx.Tr("user.block.list")
|
||||||
ctx.Data["PageIsSettingsBlockedUsers"] = true
|
ctx.Data["PageIsSettingsBlockedUsers"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
shared_user.BlockedUsers(ctx, ctx.Doer)
|
shared_user.BlockedUsers(ctx, ctx.Doer)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
|
|||||||
@ -35,7 +35,6 @@ func Keys(ctx *context.Context) {
|
|||||||
ctx.Data["DisableSSH"] = setting.SSH.Disabled
|
ctx.Data["DisableSSH"] = setting.SSH.Disabled
|
||||||
ctx.Data["BuiltinSSH"] = setting.SSH.StartBuiltinServer
|
ctx.Data["BuiltinSSH"] = setting.SSH.StartBuiltinServer
|
||||||
ctx.Data["AllowPrincipals"] = setting.SSH.AuthorizedPrincipalsEnabled
|
ctx.Data["AllowPrincipals"] = setting.SSH.AuthorizedPrincipalsEnabled
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
loadKeysData(ctx)
|
loadKeysData(ctx)
|
||||||
|
|
||||||
@ -50,7 +49,6 @@ func KeysPost(ctx *context.Context) {
|
|||||||
ctx.Data["DisableSSH"] = setting.SSH.Disabled
|
ctx.Data["DisableSSH"] = setting.SSH.Disabled
|
||||||
ctx.Data["BuiltinSSH"] = setting.SSH.StartBuiltinServer
|
ctx.Data["BuiltinSSH"] = setting.SSH.StartBuiltinServer
|
||||||
ctx.Data["AllowPrincipals"] = setting.SSH.AuthorizedPrincipalsEnabled
|
ctx.Data["AllowPrincipals"] = setting.SSH.AuthorizedPrincipalsEnabled
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
if ctx.HasError() {
|
if ctx.HasError() {
|
||||||
loadKeysData(ctx)
|
loadKeysData(ctx)
|
||||||
@ -341,5 +339,4 @@ func loadKeysData(ctx *context.Context) {
|
|||||||
|
|
||||||
ctx.Data["VerifyingID"] = ctx.FormString("verify_gpg")
|
ctx.Data["VerifyingID"] = ctx.FormString("verify_gpg")
|
||||||
ctx.Data["VerifyingFingerprint"] = ctx.FormString("verify_ssh")
|
ctx.Data["VerifyingFingerprint"] = ctx.FormString("verify_ssh")
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,6 @@ const (
|
|||||||
func Packages(ctx *context.Context) {
|
func Packages(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("packages.title")
|
ctx.Data["Title"] = ctx.Tr("packages.title")
|
||||||
ctx.Data["PageIsSettingsPackages"] = true
|
ctx.Data["PageIsSettingsPackages"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
shared.SetPackagesContext(ctx, ctx.Doer)
|
shared.SetPackagesContext(ctx, ctx.Doer)
|
||||||
|
|
||||||
@ -35,7 +34,6 @@ func Packages(ctx *context.Context) {
|
|||||||
func PackagesRuleAdd(ctx *context.Context) {
|
func PackagesRuleAdd(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("packages.title")
|
ctx.Data["Title"] = ctx.Tr("packages.title")
|
||||||
ctx.Data["PageIsSettingsPackages"] = true
|
ctx.Data["PageIsSettingsPackages"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
shared.SetRuleAddContext(ctx)
|
shared.SetRuleAddContext(ctx)
|
||||||
|
|
||||||
@ -45,7 +43,6 @@ func PackagesRuleAdd(ctx *context.Context) {
|
|||||||
func PackagesRuleEdit(ctx *context.Context) {
|
func PackagesRuleEdit(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("packages.title")
|
ctx.Data["Title"] = ctx.Tr("packages.title")
|
||||||
ctx.Data["PageIsSettingsPackages"] = true
|
ctx.Data["PageIsSettingsPackages"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
shared.SetRuleEditContext(ctx, ctx.Doer)
|
shared.SetRuleEditContext(ctx, ctx.Doer)
|
||||||
|
|
||||||
@ -55,7 +52,6 @@ func PackagesRuleEdit(ctx *context.Context) {
|
|||||||
func PackagesRuleAddPost(ctx *context.Context) {
|
func PackagesRuleAddPost(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("settings_title")
|
ctx.Data["Title"] = ctx.Tr("settings_title")
|
||||||
ctx.Data["PageIsSettingsPackages"] = true
|
ctx.Data["PageIsSettingsPackages"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
shared.PerformRuleAddPost(
|
shared.PerformRuleAddPost(
|
||||||
ctx,
|
ctx,
|
||||||
@ -68,7 +64,6 @@ func PackagesRuleAddPost(ctx *context.Context) {
|
|||||||
func PackagesRuleEditPost(ctx *context.Context) {
|
func PackagesRuleEditPost(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("packages.title")
|
ctx.Data["Title"] = ctx.Tr("packages.title")
|
||||||
ctx.Data["PageIsSettingsPackages"] = true
|
ctx.Data["PageIsSettingsPackages"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
shared.PerformRuleEditPost(
|
shared.PerformRuleEditPost(
|
||||||
ctx,
|
ctx,
|
||||||
@ -81,7 +76,6 @@ func PackagesRuleEditPost(ctx *context.Context) {
|
|||||||
func PackagesRulePreview(ctx *context.Context) {
|
func PackagesRulePreview(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("packages.title")
|
ctx.Data["Title"] = ctx.Tr("packages.title")
|
||||||
ctx.Data["PageIsSettingsPackages"] = true
|
ctx.Data["PageIsSettingsPackages"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
shared.SetRulePreviewContext(ctx, ctx.Doer)
|
shared.SetRulePreviewContext(ctx, ctx.Doer)
|
||||||
|
|
||||||
|
|||||||
@ -49,8 +49,6 @@ func Profile(ctx *context.Context) {
|
|||||||
ctx.Data["AllowedUserVisibilityModes"] = setting.Service.AllowedUserVisibilityModesSlice.ToVisibleTypeSlice()
|
ctx.Data["AllowedUserVisibilityModes"] = setting.Service.AllowedUserVisibilityModesSlice.ToVisibleTypeSlice()
|
||||||
ctx.Data["DisableGravatar"] = setting.Config().Picture.DisableGravatar.Value(ctx)
|
ctx.Data["DisableGravatar"] = setting.Config().Picture.DisableGravatar.Value(ctx)
|
||||||
|
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
ctx.HTML(http.StatusOK, tplSettingsProfile)
|
ctx.HTML(http.StatusOK, tplSettingsProfile)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +58,6 @@ func ProfilePost(ctx *context.Context) {
|
|||||||
ctx.Data["PageIsSettingsProfile"] = true
|
ctx.Data["PageIsSettingsProfile"] = true
|
||||||
ctx.Data["AllowedUserVisibilityModes"] = setting.Service.AllowedUserVisibilityModesSlice.ToVisibleTypeSlice()
|
ctx.Data["AllowedUserVisibilityModes"] = setting.Service.AllowedUserVisibilityModesSlice.ToVisibleTypeSlice()
|
||||||
ctx.Data["DisableGravatar"] = setting.Config().Picture.DisableGravatar.Value(ctx)
|
ctx.Data["DisableGravatar"] = setting.Config().Picture.DisableGravatar.Value(ctx)
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
if ctx.HasError() {
|
if ctx.HasError() {
|
||||||
ctx.HTML(http.StatusOK, tplSettingsProfile)
|
ctx.HTML(http.StatusOK, tplSettingsProfile)
|
||||||
@ -200,7 +197,6 @@ func DeleteAvatar(ctx *context.Context) {
|
|||||||
func Organization(ctx *context.Context) {
|
func Organization(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("settings.organization")
|
ctx.Data["Title"] = ctx.Tr("settings.organization")
|
||||||
ctx.Data["PageIsSettingsOrganization"] = true
|
ctx.Data["PageIsSettingsOrganization"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
opts := organization.FindOrgOptions{
|
opts := organization.FindOrgOptions{
|
||||||
ListOptions: db.ListOptions{
|
ListOptions: db.ListOptions{
|
||||||
@ -232,7 +228,6 @@ func Organization(ctx *context.Context) {
|
|||||||
func Repos(ctx *context.Context) {
|
func Repos(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("settings.repos")
|
ctx.Data["Title"] = ctx.Tr("settings.repos")
|
||||||
ctx.Data["PageIsSettingsRepos"] = true
|
ctx.Data["PageIsSettingsRepos"] = true
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
ctx.Data["allowAdopt"] = ctx.IsUserSiteAdmin() || setting.Repository.AllowAdoptionOfUnadoptedRepositories
|
ctx.Data["allowAdopt"] = ctx.IsUserSiteAdmin() || setting.Repository.AllowAdoptionOfUnadoptedRepositories
|
||||||
ctx.Data["allowDelete"] = ctx.IsUserSiteAdmin() || setting.Repository.AllowDeleteOfUnadoptedRepositories
|
ctx.Data["allowDelete"] = ctx.IsUserSiteAdmin() || setting.Repository.AllowDeleteOfUnadoptedRepositories
|
||||||
|
|
||||||
@ -340,7 +335,6 @@ func Appearance(ctx *context.Context) {
|
|||||||
ctx.Data["Title"] = ctx.Tr("settings.appearance")
|
ctx.Data["Title"] = ctx.Tr("settings.appearance")
|
||||||
ctx.Data["PageIsSettingsAppearance"] = true
|
ctx.Data["PageIsSettingsAppearance"] = true
|
||||||
ctx.Data["AllThemes"] = webtheme.GetAvailableThemes()
|
ctx.Data["AllThemes"] = webtheme.GetAvailableThemes()
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
var hiddenCommentTypes *big.Int
|
var hiddenCommentTypes *big.Int
|
||||||
val, err := user_model.GetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyHiddenCommentTypes)
|
val, err := user_model.GetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyHiddenCommentTypes)
|
||||||
|
|||||||
@ -156,5 +156,4 @@ func loadSecurityData(ctx *context.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["OpenIDs"] = openid
|
ctx.Data["OpenIDs"] = openid
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,9 +9,17 @@ import (
|
|||||||
|
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/json"
|
"code.gitea.io/gitea/modules/json"
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/services/context"
|
"code.gitea.io/gitea/services/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func SettingsCtxData(ctx *context.Context) {
|
||||||
|
ctx.Data["PageIsUserSettings"] = true
|
||||||
|
ctx.Data["EnablePackages"] = setting.Packages.Enabled
|
||||||
|
ctx.Data["EnableNotifyMail"] = setting.Service.EnableNotifyMail
|
||||||
|
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
||||||
|
}
|
||||||
|
|
||||||
func UpdatePreferences(ctx *context.Context) {
|
func UpdatePreferences(ctx *context.Context) {
|
||||||
type preferencesForm struct {
|
type preferencesForm struct {
|
||||||
CodeViewShowFileTree bool `json:"codeViewShowFileTree"`
|
CodeViewShowFileTree bool `json:"codeViewShowFileTree"`
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
|
||||||
"code.gitea.io/gitea/models/webhook"
|
"code.gitea.io/gitea/models/webhook"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/templates"
|
"code.gitea.io/gitea/modules/templates"
|
||||||
@ -25,7 +24,6 @@ func Webhooks(ctx *context.Context) {
|
|||||||
ctx.Data["BaseLink"] = setting.AppSubURL + "/user/settings/hooks"
|
ctx.Data["BaseLink"] = setting.AppSubURL + "/user/settings/hooks"
|
||||||
ctx.Data["BaseLinkNew"] = setting.AppSubURL + "/user/settings/hooks"
|
ctx.Data["BaseLinkNew"] = setting.AppSubURL + "/user/settings/hooks"
|
||||||
ctx.Data["Description"] = ctx.Tr("settings.hooks.desc")
|
ctx.Data["Description"] = ctx.Tr("settings.hooks.desc")
|
||||||
ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
|
|
||||||
|
|
||||||
ws, err := db.Find[webhook.Webhook](ctx, webhook.ListWebhookOptions{OwnerID: ctx.Doer.ID})
|
ws, err := db.Find[webhook.Webhook](ctx, webhook.ListWebhookOptions{OwnerID: ctx.Doer.ID})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -721,7 +721,7 @@ func registerWebRoutes(m *web.Router, webAuth *AuthMiddleware) {
|
|||||||
m.Get("", user_setting.BlockedUsers)
|
m.Get("", user_setting.BlockedUsers)
|
||||||
m.Post("", web.Bind(forms.BlockUserForm{}), user_setting.BlockedUsersPost)
|
m.Post("", web.Bind(forms.BlockUserForm{}), user_setting.BlockedUsersPost)
|
||||||
})
|
})
|
||||||
}, reqSignIn, ctxDataSet("PageIsUserSettings", true, "EnablePackages", setting.Packages.Enabled, "EnableNotifyMail", setting.Service.EnableNotifyMail))
|
}, reqSignIn, user_setting.SettingsCtxData)
|
||||||
|
|
||||||
m.Group("/user", func() {
|
m.Group("/user", func() {
|
||||||
m.Get("/activate", auth.Activate)
|
m.Get("/activate", auth.Activate)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user