mirror of https://github.com/go-gitea/gitea.git
Merge branch 'main' into lunny/fix_clone
This commit is contained in:
commit
d268149b2b
|
@ -201,7 +201,8 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
services:
|
services:
|
||||||
mssql:
|
mssql:
|
||||||
image: mcr.microsoft.com/mssql/server:2017-latest
|
# some images before 2024-04 can't run on new kernels
|
||||||
|
image: mcr.microsoft.com/mssql/server:2019-latest
|
||||||
env:
|
env:
|
||||||
ACCEPT_EULA: Y
|
ACCEPT_EULA: Y
|
||||||
MSSQL_PID: Standard
|
MSSQL_PID: Standard
|
||||||
|
|
|
@ -52,11 +52,6 @@ func getRequestScheme(req *http.Request) string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func getForwardedHost(req *http.Request) string {
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host
|
|
||||||
return req.Header.Get("X-Forwarded-Host")
|
|
||||||
}
|
|
||||||
|
|
||||||
// GuessCurrentAppURL tries to guess the current full app URL (with sub-path) by http headers. It always has a '/' suffix, exactly the same as setting.AppURL
|
// GuessCurrentAppURL tries to guess the current full app URL (with sub-path) by http headers. It always has a '/' suffix, exactly the same as setting.AppURL
|
||||||
func GuessCurrentAppURL(ctx context.Context) string {
|
func GuessCurrentAppURL(ctx context.Context) string {
|
||||||
return GuessCurrentHostURL(ctx) + setting.AppSubURL + "/"
|
return GuessCurrentHostURL(ctx) + setting.AppSubURL + "/"
|
||||||
|
@ -81,11 +76,9 @@ func GuessCurrentHostURL(ctx context.Context) string {
|
||||||
if reqScheme == "" {
|
if reqScheme == "" {
|
||||||
return strings.TrimSuffix(setting.AppURL, setting.AppSubURL+"/")
|
return strings.TrimSuffix(setting.AppURL, setting.AppSubURL+"/")
|
||||||
}
|
}
|
||||||
reqHost := getForwardedHost(req)
|
// X-Forwarded-Host has many problems: non-standard, not well-defined (X-Forwarded-Port or not), conflicts with Host header.
|
||||||
if reqHost == "" {
|
// So do not use X-Forwarded-Host, just use Host header directly.
|
||||||
reqHost = req.Host
|
return reqScheme + "://" + req.Host
|
||||||
}
|
|
||||||
return reqScheme + "://" + reqHost
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MakeAbsoluteURL tries to make a link to an absolute URL:
|
// MakeAbsoluteURL tries to make a link to an absolute URL:
|
||||||
|
|
|
@ -70,7 +70,7 @@ func TestMakeAbsoluteURL(t *testing.T) {
|
||||||
"X-Forwarded-Proto": {"https"},
|
"X-Forwarded-Proto": {"https"},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
assert.Equal(t, "https://forwarded-host/foo", MakeAbsoluteURL(ctx, "/foo"))
|
assert.Equal(t, "https://user-host/foo", MakeAbsoluteURL(ctx, "/foo"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsCurrentGiteaSiteURL(t *testing.T) {
|
func TestIsCurrentGiteaSiteURL(t *testing.T) {
|
||||||
|
@ -119,5 +119,6 @@ func TestIsCurrentGiteaSiteURL(t *testing.T) {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
assert.True(t, IsCurrentGiteaSiteURL(ctx, "http://localhost:3000"))
|
assert.True(t, IsCurrentGiteaSiteURL(ctx, "http://localhost:3000"))
|
||||||
assert.True(t, IsCurrentGiteaSiteURL(ctx, "https://forwarded-host"))
|
assert.True(t, IsCurrentGiteaSiteURL(ctx, "https://user-host"))
|
||||||
|
assert.False(t, IsCurrentGiteaSiteURL(ctx, "https://forwarded-host"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1731,6 +1731,7 @@ issues.dependency.add_error_dep_not_same_repo=Ambas as questões têm que estar
|
||||||
issues.review.self.approval=Não pode aprovar o seu próprio pedido de integração.
|
issues.review.self.approval=Não pode aprovar o seu próprio pedido de integração.
|
||||||
issues.review.self.rejection=Não pode solicitar modificações sobre o seu próprio pedido de integração.
|
issues.review.self.rejection=Não pode solicitar modificações sobre o seu próprio pedido de integração.
|
||||||
issues.review.approve=aprovou estas modificações %s
|
issues.review.approve=aprovou estas modificações %s
|
||||||
|
issues.review.comment=reviu %s
|
||||||
issues.review.dismissed=descartou a revisão de %s %s
|
issues.review.dismissed=descartou a revisão de %s %s
|
||||||
issues.review.dismissed_label=Descartada
|
issues.review.dismissed_label=Descartada
|
||||||
issues.review.left_comment=deixou um comentário
|
issues.review.left_comment=deixou um comentário
|
||||||
|
|
|
@ -14,20 +14,22 @@
|
||||||
{{.CsrfTokenHtml}}
|
{{.CsrfTokenHtml}}
|
||||||
<div class="required field {{if and (.Err_UserName) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeSignIn))}}error{{end}}">
|
<div class="required field {{if and (.Err_UserName) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeSignIn))}}error{{end}}">
|
||||||
<label for="user_name">{{ctx.Locale.Tr "home.uname_holder"}}</label>
|
<label for="user_name">{{ctx.Locale.Tr "home.uname_holder"}}</label>
|
||||||
<input id="user_name" type="text" name="user_name" value="{{.user_name}}" autofocus required>
|
<input id="user_name" type="text" name="user_name" value="{{.user_name}}" autofocus required tabindex="1">
|
||||||
</div>
|
</div>
|
||||||
{{if or (not .DisablePassword) .LinkAccountMode}}
|
{{if or (not .DisablePassword) .LinkAccountMode}}
|
||||||
<div class="required field {{if and (.Err_Password) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeSignIn))}}error{{end}} form-field-content-aside-label">
|
<div class="required field {{if and (.Err_Password) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeSignIn))}}error{{end}} form-field-content-aside-label">
|
||||||
<label for="password">{{ctx.Locale.Tr "password"}}</label>
|
<label for="password">{{ctx.Locale.Tr "password"}}</label>
|
||||||
<a href="{{AppSubUrl}}/user/forgot_password">{{ctx.Locale.Tr "auth.forgot_password"}}</a>
|
<div>
|
||||||
<input id="password" name="password" type="password" value="{{.password}}" autocomplete="current-password" required>
|
<a href="{{AppSubUrl}}/user/forgot_password" tabindex="4">{{ctx.Locale.Tr "auth.forgot_password"}}</a>
|
||||||
|
</div>
|
||||||
|
<input id="password" name="password" type="password" value="{{.password}}" autocomplete="current-password" required tabindex="2">
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{if not .LinkAccountMode}}
|
{{if not .LinkAccountMode}}
|
||||||
<div class="inline field">
|
<div class="inline field">
|
||||||
<div class="ui checkbox">
|
<div class="ui checkbox">
|
||||||
<label>{{ctx.Locale.Tr "auth.remember_me"}}</label>
|
<label>{{ctx.Locale.Tr "auth.remember_me"}}</label>
|
||||||
<input name="remember" type="checkbox">
|
<input name="remember" type="checkbox" tabindex="5">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
@ -35,7 +37,7 @@
|
||||||
{{template "user/auth/captcha" .}}
|
{{template "user/auth/captcha" .}}
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<button class="ui primary button tw-w-full">
|
<button class="ui primary button tw-w-full" tabindex="3">
|
||||||
{{if .LinkAccountMode}}
|
{{if .LinkAccountMode}}
|
||||||
{{ctx.Locale.Tr "auth.oauth_signin_submit"}}
|
{{ctx.Locale.Tr "auth.oauth_signin_submit"}}
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
|
@ -456,7 +456,6 @@ textarea:focus,
|
||||||
}
|
}
|
||||||
.form-field-content-aside-label > *:nth-child(2) {
|
.form-field-content-aside-label > *:nth-child(2) {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
margin-bottom: 4px;
|
|
||||||
}
|
}
|
||||||
.form-field-content-aside-label input {
|
.form-field-content-aside-label input {
|
||||||
grid-column: span 2;
|
grid-column: span 2;
|
||||||
|
|
Loading…
Reference in New Issue