forked from gitea/gitea
Backport #19089 * Handle email address not exist. (#19089) * Fix lint about strings.Title Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
This commit is contained in:
parent
9bcbbd419f
commit
79a5e68816
|
@ -43,7 +43,7 @@ var defaultTransformers = []transformer{
|
||||||
{Name: "PASCAL", Transform: xstrings.ToCamelCase},
|
{Name: "PASCAL", Transform: xstrings.ToCamelCase},
|
||||||
{Name: "LOWER", Transform: strings.ToLower},
|
{Name: "LOWER", Transform: strings.ToLower},
|
||||||
{Name: "UPPER", Transform: strings.ToUpper},
|
{Name: "UPPER", Transform: strings.ToUpper},
|
||||||
{Name: "TITLE", Transform: strings.Title},
|
{Name: "TITLE", Transform: strings.Title}, // nolint
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateExpansion(src string, templateRepo, generateRepo *repo_model.Repository) string {
|
func generateExpansion(src string, templateRepo, generateRepo *repo_model.Repository) string {
|
||||||
|
@ -62,7 +62,7 @@ func generateExpansion(src string, templateRepo, generateRepo *repo_model.Reposi
|
||||||
{Name: "TEMPLATE_SSH_URL", Value: templateRepo.CloneLink().SSH, Transformers: nil},
|
{Name: "TEMPLATE_SSH_URL", Value: templateRepo.CloneLink().SSH, Transformers: nil},
|
||||||
}
|
}
|
||||||
|
|
||||||
var expansionMap = make(map[string]string)
|
expansionMap := make(map[string]string)
|
||||||
for _, e := range expansions {
|
for _, e := range expansions {
|
||||||
expansionMap[e.Name] = e.Value
|
expansionMap[e.Name] = e.Value
|
||||||
for _, tr := range e.Transformers {
|
for _, tr := range e.Transformers {
|
||||||
|
@ -159,7 +159,7 @@ func generateRepoCommit(repo, templateRepo, generateRepo *repo_model.Repository,
|
||||||
|
|
||||||
if err := os.WriteFile(path,
|
if err := os.WriteFile(path,
|
||||||
[]byte(generateExpansion(string(content), templateRepo, generateRepo)),
|
[]byte(generateExpansion(string(content), templateRepo, generateRepo)),
|
||||||
0644); err != nil {
|
0o644); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
|
|
@ -15,13 +15,17 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/json"
|
"code.gitea.io/gitea/modules/json"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
"golang.org/x/text/cases"
|
||||||
|
"golang.org/x/text/language"
|
||||||
|
|
||||||
ini "gopkg.in/ini.v1"
|
ini "gopkg.in/ini.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
var filenameSuffix = ""
|
var (
|
||||||
var descriptionLock = sync.RWMutex{}
|
filenameSuffix = ""
|
||||||
var logDescriptions = make(map[string]*LogDescription)
|
descriptionLock = sync.RWMutex{}
|
||||||
|
logDescriptions = make(map[string]*LogDescription)
|
||||||
|
)
|
||||||
|
|
||||||
// GetLogDescriptions returns a race safe set of descriptions
|
// GetLogDescriptions returns a race safe set of descriptions
|
||||||
func GetLogDescriptions() map[string]*LogDescription {
|
func GetLogDescriptions() map[string]*LogDescription {
|
||||||
|
@ -86,7 +90,7 @@ func RemoveSubLogDescription(key, name string) bool {
|
||||||
type defaultLogOptions struct {
|
type defaultLogOptions struct {
|
||||||
levelName string // LogLevel
|
levelName string // LogLevel
|
||||||
flags string
|
flags string
|
||||||
filename string //path.Join(LogRootPath, "gitea.log")
|
filename string // path.Join(LogRootPath, "gitea.log")
|
||||||
bufferLength int64
|
bufferLength int64
|
||||||
disableConsole bool
|
disableConsole bool
|
||||||
}
|
}
|
||||||
|
@ -243,7 +247,7 @@ func generateNamedLogger(key string, options defaultLogOptions) *LogDescription
|
||||||
Provider: provider,
|
Provider: provider,
|
||||||
Config: config,
|
Config: config,
|
||||||
})
|
})
|
||||||
log.Info("%s Log: %s(%s:%s)", strings.Title(key), strings.Title(name), provider, levelName)
|
log.Info("%s Log: %s(%s:%s)", cases.Title(language.English).String(key), cases.Title(language.English).String(name), provider, levelName)
|
||||||
}
|
}
|
||||||
|
|
||||||
AddLogDescription(key, &description)
|
AddLogDescription(key, &description)
|
||||||
|
@ -327,7 +331,7 @@ func newLogService() {
|
||||||
Provider: provider,
|
Provider: provider,
|
||||||
Config: config,
|
Config: config,
|
||||||
})
|
})
|
||||||
log.Info("Gitea Log Mode: %s(%s:%s)", strings.Title(name), strings.Title(provider), levelName)
|
log.Info("Gitea Log Mode: %s(%s:%s)", cases.Title(language.English).String(name), cases.Title(language.English).String(provider), levelName)
|
||||||
}
|
}
|
||||||
|
|
||||||
AddLogDescription(log.DEFAULT, &description)
|
AddLogDescription(log.DEFAULT, &description)
|
||||||
|
|
|
@ -30,6 +30,8 @@ import (
|
||||||
|
|
||||||
"github.com/unknwon/com"
|
"github.com/unknwon/com"
|
||||||
gossh "golang.org/x/crypto/ssh"
|
gossh "golang.org/x/crypto/ssh"
|
||||||
|
"golang.org/x/text/cases"
|
||||||
|
"golang.org/x/text/language"
|
||||||
ini "gopkg.in/ini.v1"
|
ini "gopkg.in/ini.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -637,7 +639,7 @@ func loadFromConf(allowEmpty bool, extraConfig string) {
|
||||||
}
|
}
|
||||||
UnixSocketPermissionRaw := sec.Key("UNIX_SOCKET_PERMISSION").MustString("666")
|
UnixSocketPermissionRaw := sec.Key("UNIX_SOCKET_PERMISSION").MustString("666")
|
||||||
UnixSocketPermissionParsed, err := strconv.ParseUint(UnixSocketPermissionRaw, 8, 32)
|
UnixSocketPermissionParsed, err := strconv.ParseUint(UnixSocketPermissionRaw, 8, 32)
|
||||||
if err != nil || UnixSocketPermissionParsed > 0777 {
|
if err != nil || UnixSocketPermissionParsed > 0o777 {
|
||||||
log.Fatal("Failed to parse unixSocketPermission: %s", UnixSocketPermissionRaw)
|
log.Fatal("Failed to parse unixSocketPermission: %s", UnixSocketPermissionRaw)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -793,16 +795,16 @@ func loadFromConf(allowEmpty bool, extraConfig string) {
|
||||||
SSH.AuthorizedPrincipalsAllow, SSH.AuthorizedPrincipalsEnabled = parseAuthorizedPrincipalsAllow(sec.Key("SSH_AUTHORIZED_PRINCIPALS_ALLOW").Strings(","))
|
SSH.AuthorizedPrincipalsAllow, SSH.AuthorizedPrincipalsEnabled = parseAuthorizedPrincipalsAllow(sec.Key("SSH_AUTHORIZED_PRINCIPALS_ALLOW").Strings(","))
|
||||||
|
|
||||||
if !SSH.Disabled && !SSH.StartBuiltinServer {
|
if !SSH.Disabled && !SSH.StartBuiltinServer {
|
||||||
if err := os.MkdirAll(SSH.RootPath, 0700); err != nil {
|
if err := os.MkdirAll(SSH.RootPath, 0o700); err != nil {
|
||||||
log.Fatal("Failed to create '%s': %v", SSH.RootPath, err)
|
log.Fatal("Failed to create '%s': %v", SSH.RootPath, err)
|
||||||
} else if err = os.MkdirAll(SSH.KeyTestPath, 0644); err != nil {
|
} else if err = os.MkdirAll(SSH.KeyTestPath, 0o644); err != nil {
|
||||||
log.Fatal("Failed to create '%s': %v", SSH.KeyTestPath, err)
|
log.Fatal("Failed to create '%s': %v", SSH.KeyTestPath, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(trustedUserCaKeys) > 0 && SSH.AuthorizedPrincipalsEnabled {
|
if len(trustedUserCaKeys) > 0 && SSH.AuthorizedPrincipalsEnabled {
|
||||||
fname := sec.Key("SSH_TRUSTED_USER_CA_KEYS_FILENAME").MustString(filepath.Join(SSH.RootPath, "gitea-trusted-user-ca-keys.pem"))
|
fname := sec.Key("SSH_TRUSTED_USER_CA_KEYS_FILENAME").MustString(filepath.Join(SSH.RootPath, "gitea-trusted-user-ca-keys.pem"))
|
||||||
if err := os.WriteFile(fname,
|
if err := os.WriteFile(fname,
|
||||||
[]byte(strings.Join(trustedUserCaKeys, "\n")), 0600); err != nil {
|
[]byte(strings.Join(trustedUserCaKeys, "\n")), 0o600); err != nil {
|
||||||
log.Fatal("Failed to create '%s': %v", fname, err)
|
log.Fatal("Failed to create '%s': %v", fname, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -943,8 +945,9 @@ func loadFromConf(allowEmpty bool, extraConfig string) {
|
||||||
// The following is a purposefully undocumented option. Please do not run Gitea as root. It will only cause future headaches.
|
// The following is a purposefully undocumented option. Please do not run Gitea as root. It will only cause future headaches.
|
||||||
// Please don't use root as a bandaid to "fix" something that is broken, instead the broken thing should instead be fixed properly.
|
// Please don't use root as a bandaid to "fix" something that is broken, instead the broken thing should instead be fixed properly.
|
||||||
unsafeAllowRunAsRoot := Cfg.Section("").Key("I_AM_BEING_UNSAFE_RUNNING_AS_ROOT").MustBool(false)
|
unsafeAllowRunAsRoot := Cfg.Section("").Key("I_AM_BEING_UNSAFE_RUNNING_AS_ROOT").MustBool(false)
|
||||||
RunMode = Cfg.Section("").Key("RUN_MODE").MustString("prod")
|
RunMode = Cfg.Section("").Key("RUN_MODE").MustString("Prod")
|
||||||
IsProd = strings.EqualFold(RunMode, "prod")
|
RunMode = cases.Title(language.English).String(strings.ToLower(RunMode))
|
||||||
|
IsProd = RunMode == "Prod"
|
||||||
// Does not check run user when the install lock is off.
|
// Does not check run user when the install lock is off.
|
||||||
if InstallLock {
|
if InstallLock {
|
||||||
currentUser, match := IsRunUserMatchCurrentUser(RunUser)
|
currentUser, match := IsRunUserMatchCurrentUser(RunUser)
|
||||||
|
@ -1074,7 +1077,7 @@ func loadInternalToken(sec *ini.Section) string {
|
||||||
}
|
}
|
||||||
switch tempURI.Scheme {
|
switch tempURI.Scheme {
|
||||||
case "file":
|
case "file":
|
||||||
fp, err := os.OpenFile(tempURI.RequestURI(), os.O_RDWR, 0600)
|
fp, err := os.OpenFile(tempURI.RequestURI(), os.O_RDWR, 0o600)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Failed to open InternalTokenURI (%s): %v", uri, err)
|
log.Fatal("Failed to open InternalTokenURI (%s): %v", uri, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,8 @@ import (
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
"code.gitea.io/gitea/services/gitdiff"
|
"code.gitea.io/gitea/services/gitdiff"
|
||||||
|
"golang.org/x/text/cases"
|
||||||
|
"golang.org/x/text/language"
|
||||||
|
|
||||||
"github.com/editorconfig/editorconfig-core-go/v2"
|
"github.com/editorconfig/editorconfig-core-go/v2"
|
||||||
)
|
)
|
||||||
|
@ -49,7 +51,7 @@ var mailSubjectSplit = regexp.MustCompile(`(?m)^-{3,}[\s]*$`)
|
||||||
func NewFuncMap() []template.FuncMap {
|
func NewFuncMap() []template.FuncMap {
|
||||||
return []template.FuncMap{map[string]interface{}{
|
return []template.FuncMap{map[string]interface{}{
|
||||||
"GoVer": func() string {
|
"GoVer": func() string {
|
||||||
return strings.Title(runtime.Version())
|
return cases.Title(language.English).String(runtime.Version())
|
||||||
},
|
},
|
||||||
"UseHTTPS": func() bool {
|
"UseHTTPS": func() bool {
|
||||||
return strings.HasPrefix(setting.AppURL, "https")
|
return strings.HasPrefix(setting.AppURL, "https")
|
||||||
|
@ -285,7 +287,7 @@ func NewFuncMap() []template.FuncMap {
|
||||||
return util.MergeInto(dict, values...)
|
return util.MergeInto(dict, values...)
|
||||||
},
|
},
|
||||||
"percentage": func(n int, values ...int) float32 {
|
"percentage": func(n int, values ...int) float32 {
|
||||||
var sum = 0
|
sum := 0
|
||||||
for i := 0; i < len(values); i++ {
|
for i := 0; i < len(values); i++ {
|
||||||
sum += values[i]
|
sum += values[i]
|
||||||
}
|
}
|
||||||
|
@ -386,7 +388,7 @@ func NewFuncMap() []template.FuncMap {
|
||||||
func NewTextFuncMap() []texttmpl.FuncMap {
|
func NewTextFuncMap() []texttmpl.FuncMap {
|
||||||
return []texttmpl.FuncMap{map[string]interface{}{
|
return []texttmpl.FuncMap{map[string]interface{}{
|
||||||
"GoVer": func() string {
|
"GoVer": func() string {
|
||||||
return strings.Title(runtime.Version())
|
return cases.Title(language.English).String(runtime.Version())
|
||||||
},
|
},
|
||||||
"AppName": func() string {
|
"AppName": func() string {
|
||||||
return setting.AppName
|
return setting.AppName
|
||||||
|
@ -477,7 +479,7 @@ func NewTextFuncMap() []texttmpl.FuncMap {
|
||||||
return dict, nil
|
return dict, nil
|
||||||
},
|
},
|
||||||
"percentage": func(n int, values ...int) float32 {
|
"percentage": func(n int, values ...int) float32 {
|
||||||
var sum = 0
|
sum := 0
|
||||||
for i := 0; i < len(values); i++ {
|
for i := 0; i < len(values); i++ {
|
||||||
sum += values[i]
|
sum += values[i]
|
||||||
}
|
}
|
||||||
|
@ -501,8 +503,10 @@ func NewTextFuncMap() []texttmpl.FuncMap {
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
var widthRe = regexp.MustCompile(`width="[0-9]+?"`)
|
var (
|
||||||
var heightRe = regexp.MustCompile(`height="[0-9]+?"`)
|
widthRe = regexp.MustCompile(`width="[0-9]+?"`)
|
||||||
|
heightRe = regexp.MustCompile(`height="[0-9]+?"`)
|
||||||
|
)
|
||||||
|
|
||||||
func parseOthers(defaultSize int, defaultClass string, others ...interface{}) (int, string) {
|
func parseOthers(defaultSize int, defaultClass string, others ...interface{}) (int, string) {
|
||||||
size := defaultSize
|
size := defaultSize
|
||||||
|
@ -736,7 +740,7 @@ func RenderEmoji(text string) template.HTML {
|
||||||
return template.HTML(renderedText)
|
return template.HTML(renderedText)
|
||||||
}
|
}
|
||||||
|
|
||||||
//ReactionToEmoji renders emoji for use in reactions
|
// ReactionToEmoji renders emoji for use in reactions
|
||||||
func ReactionToEmoji(reaction string) template.HTML {
|
func ReactionToEmoji(reaction string) template.HTML {
|
||||||
val := emoji.FromCode(reaction)
|
val := emoji.FromCode(reaction)
|
||||||
if val != nil {
|
if val != nil {
|
||||||
|
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
||||||
|
@ -47,6 +46,8 @@ import (
|
||||||
"code.gitea.io/gitea/services/repository/archiver"
|
"code.gitea.io/gitea/services/repository/archiver"
|
||||||
"code.gitea.io/gitea/services/task"
|
"code.gitea.io/gitea/services/task"
|
||||||
"code.gitea.io/gitea/services/webhook"
|
"code.gitea.io/gitea/services/webhook"
|
||||||
|
"golang.org/x/text/cases"
|
||||||
|
"golang.org/x/text/language"
|
||||||
|
|
||||||
"gitea.com/go-chi/session"
|
"gitea.com/go-chi/session"
|
||||||
)
|
)
|
||||||
|
@ -111,7 +112,7 @@ func GlobalInitInstalled(ctx context.Context) {
|
||||||
log.Info("Custom path: %s", setting.CustomPath)
|
log.Info("Custom path: %s", setting.CustomPath)
|
||||||
log.Info("Log path: %s", setting.LogRootPath)
|
log.Info("Log path: %s", setting.LogRootPath)
|
||||||
log.Info("Configuration file: %s", setting.CustomConf)
|
log.Info("Configuration file: %s", setting.CustomConf)
|
||||||
log.Info("Run Mode: %s", strings.Title(setting.RunMode))
|
log.Info("Run Mode: %s", cases.Title(language.English).String(setting.RunMode))
|
||||||
|
|
||||||
// Setup i18n
|
// Setup i18n
|
||||||
translation.InitLocales()
|
translation.InitLocales()
|
||||||
|
|
|
@ -209,7 +209,7 @@ func shadowPassword(provider, cfgItem string) string {
|
||||||
case "redis":
|
case "redis":
|
||||||
return shadowPasswordKV(cfgItem, ",")
|
return shadowPasswordKV(cfgItem, ",")
|
||||||
case "mysql":
|
case "mysql":
|
||||||
//root:@tcp(localhost:3306)/macaron?charset=utf8
|
// root:@tcp(localhost:3306)/macaron?charset=utf8
|
||||||
atIdx := strings.Index(cfgItem, "@")
|
atIdx := strings.Index(cfgItem, "@")
|
||||||
if atIdx > 0 {
|
if atIdx > 0 {
|
||||||
colonIdx := strings.Index(cfgItem[:atIdx], ":")
|
colonIdx := strings.Index(cfgItem[:atIdx], ":")
|
||||||
|
@ -244,7 +244,7 @@ func Config(ctx *context.Context) {
|
||||||
ctx.Data["OfflineMode"] = setting.OfflineMode
|
ctx.Data["OfflineMode"] = setting.OfflineMode
|
||||||
ctx.Data["DisableRouterLog"] = setting.DisableRouterLog
|
ctx.Data["DisableRouterLog"] = setting.DisableRouterLog
|
||||||
ctx.Data["RunUser"] = setting.RunUser
|
ctx.Data["RunUser"] = setting.RunUser
|
||||||
ctx.Data["RunMode"] = strings.Title(setting.RunMode)
|
ctx.Data["RunMode"] = setting.RunMode
|
||||||
if version, err := git.LocalVersion(); err == nil {
|
if version, err := git.LocalVersion(); err == nil {
|
||||||
ctx.Data["GitVersion"] = version.Original()
|
ctx.Data["GitVersion"] = version.Original()
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,7 +195,7 @@ func SignInPost(ctx *context.Context) {
|
||||||
form := web.GetForm(ctx).(*forms.SignInForm)
|
form := web.GetForm(ctx).(*forms.SignInForm)
|
||||||
u, source, err := auth_service.UserSignIn(form.UserName, form.Password)
|
u, source, err := auth_service.UserSignIn(form.UserName, form.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if user_model.IsErrUserNotExist(err) {
|
if user_model.IsErrUserNotExist(err) || user_model.IsErrEmailAddressNotExist(err) {
|
||||||
ctx.RenderWithErr(ctx.Tr("form.username_password_incorrect"), tplSignIn, &form)
|
ctx.RenderWithErr(ctx.Tr("form.username_password_incorrect"), tplSignIn, &form)
|
||||||
log.Info("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
|
log.Info("Failed authentication attempt for %s from %s: %v", form.UserName, ctx.RemoteAddr(), err)
|
||||||
} else if user_model.IsErrEmailAlreadyUsed(err) {
|
} else if user_model.IsErrEmailAlreadyUsed(err) {
|
||||||
|
|
Loading…
Reference in New Issue